編輯:關於Android編程
BLE:全稱為Bluetooth Low Energy。藍牙規范4.0最重要的一個特性就是低功耗。BLE使得藍牙設備可通過一粒紐扣電池供電以維持續工作數年之久。很明顯,BLE使得藍牙設備在鐘表、遠程控制、醫療保健及運動感應器等市場具有極光明的應用場景。
Google從Android 4.3開始添加了對藍牙4.0的支持。本文一個demo為入口分析 BLE 搜索的流程。
package com.dy.ble;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private static final String TAG = "BLE";
private Button scanBtn;
private BluetoothAdapter bluetoothAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(!bluetoothAdapter.isEnabled()){
bluetoothAdapter.enable();
}
scanBtn = (Button) this.findViewById(R.id.btn_scan);
scanBtn.setOnClickListener(new OnClickListener(){
@SuppressLint("NewApi")
@Override
public void onClick(View arg0) {
if(bluetoothAdapter.isEnabled()){
bluetoothAdapter.startLeScan(callback);
}
}
});
}
@SuppressLint("NewApi")
private BluetoothAdapter.LeScanCallback callback = new BluetoothAdapter.LeScanCallback(){
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
Log.d(TAG, "onLeScan device = " + device + ",rssi = " + rssi + "scanRecord = " + scanRecord);
}
};
}
點擊按鈕就會開始掃描,掃描到設備時,就會觸發onLeScan這個回調方法,並且可以從參數中獲取掃描到的藍牙設備信息。下面分析BluetoothAdapter中的startLeScan方法。
public boolean startLeScan(LeScanCallback callback) {
return startLeScan(null, callback);
}
public boolean startLeScan(UUID[] serviceUuids, LeScanCallback callback) {
if (DBG) Log.d(TAG, "startLeScan(): " + serviceUuids);
if (callback == null) {
if (DBG) Log.e(TAG, "startLeScan: null callback");
return false;
}
synchronized(mLeScanClients) {
if (mLeScanClients.containsKey(callback)) {
if (DBG) Log.e(TAG, "LE Scan has already started");
return false;
}
try {
IBluetoothGatt iGatt = mManagerService.getBluetoothGatt();
if (iGatt == null) {
if (DBG) Log.e("BluetoothAdapterReceiver", "iGatt == null");
// BLE is not supported
return false;
}
UUID uuid = UUID.randomUUID();
GattCallbackWrapper wrapper = new GattCallbackWrapper(this, callback, serviceUuids);
iGatt.registerClient(new ParcelUuid(uuid), wrapper);
if (wrapper.scanStarted()) {
if (DBG) Log.e("BluetoothAdapterReceiver", "wrapper.scanStarted()==true");
mLeScanClients.put(callback, wrapper);
return true;
}
} catch (RemoteException e) {
Log.e(TAG,"",e);
}
}
return false;
}
Android TextView設置不同的顏色字體
這裡記錄一個比較方便的方式來解決Textview設置不同顏色的字體的方法。可能第一反應是布局的嵌套,這個方法肯定可以啊,但是肯定不推薦啊,布局要盡量減少布局的嵌套,其次,
Day23-AutoCompleteTextView和Scroll
最簡單的使用xml布局文件 Activity.javaList list = new ArrayList<>();list.add("
Android 點擊屏幕空白處收起輸入法軟鍵盤(手動打開)
很多時候,我們在使用應用時,會出現輸入法軟鍵盤彈出的問題,通常情況下,我們默認會使用戶點擊返回鍵或者下一步對軟鍵盤進行隱藏。為了更好的體驗,我們可以實現當用戶使用完畢軟鍵
扣丁音樂(七)——音樂進度條拖動 循環模式 專輯圖片倒影功能實現
一丶效果演示 二丶實現功能介紹及思路設計前幾篇的博客被指出:純貼代碼沒什麼用,解釋下,本博客是由視頻轉博客的筆記及自己加深的一些功能,覺得提供代碼是最有效的,雖然如此還是