Android 4.3 以降から使えるようになった Bluetooth LE をテストしてみました。
サンプルコード
まず設定ファイルで Bluetooth を許可しておきます。
<!-- Bluetooth -->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
<!-- BLE対応端末に限定する場合は以下も追記 -->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
ソースはこんな感じです。
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
public class TestActivity extends Activity {
// BLE用
private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothAdapter.LeScanCallback mLeScanCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
// BLE
mBluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = mBluetoothManager.getAdapter();
// BLEスキャンした際のコールバック
mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
String msg = "ADDRESS=" + device.getAddress() + "\nRSSI=" + rssi;
Log.d("BLE", msg);
}
};
}
// BLEスキャン開始ボタン
public void onBtnStartBleScanClicked(View view) {
mBluetoothAdapter.startLeScan(mLeScanCallback);
}
// BLEスキャン停止ボタン
public void onBtnStopBleScanClicked(View view) {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
解説
ひとまず、あちこちのサイトを参考に、シンプルなソースにまとめてみました。startLeScan( ) では、同一BLEは1回しか検知しないようです(?) また色々わかり次第、追記していきます。
参考URL
AndroidでBLE端末を見つけるための実装方法
http://qiita.com/miyatay/items/3f43bc8348b0e1914214
ArduinoとAndroid端末をBLE(Bluetooth4.0)でつないでみる|浅草ギ研
http://www.robotsfx.com/robot/img/radio/BLESerial/BLESerial_how5.html
【連載】Bluetooth LE (5) Android 4.3 で Bluetooth LE 機器を使う
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-android.html
あと、GitHubからのプロジェクトソースは以下のが大変参考になりました。Serviceを使ってるため、バックグラウンドでも動作します。
BLEMonitor
https://github.com/SergeiSafrigin/BLEMonitor
(・o・ゞ いじょー。