彼はちょうど私のコードです。この例をどこかで見た。しかし、それは動作しませんでした。コンクリートへGATTサービス:青色ビーコンのバッテリレベルを取得
private static final UUID Battery_Service_UUID = UUID.fromString("0000180F-0000-1000-8000-00805f9b34fb");
private static final UUID Battery_Level_UUID = UUID.fromString("00002a19-0000-1000-8000-00805f9b34fb");
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
private BluetoothGattService mBluetoothGatt;
...
public void readCustomCharacteristic() {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w("Beacons", "BluetoothAdapter not initialized");
return;
}
/*check if the service is available on the device*/
BluetoothGattService mBatteryService = mBluetoothGatt;
if(mBatteryService == null){
Log.w("Beacons", "Battery BLE Service not found");
return;
}
/*get the read characteristic from the service*/
BluetoothGattCharacteristic mReadCharacteristic = mBatteryService.getCharacteristic(Battery_Level_UUID);
if(mReadCharacteristic.getStringValue(0) == null){
Log.w("Beacons", "Failed to read characteristic");
} else {
Log.i("Beacons", "Battery Level: " + mReadCharacteristic.getValue());
}
}
、私はNullPointerExceptionが取得:
のjava.lang.NullPointerException:アンドロイドをjava.lang.Stringで仮想メソッド「を起動しようとします。 nullオブジェクトリファレンスのbluetooth.BluetoothGattCharacteristic.getStringValue(int) '
おそらく、完全なサーバー、サービス、およびブロードキャスト受信者を実装する必要がありますか? ありがとうございます!
mBluetoothGattがBattery_Level_UUIDの特性を持っていないので、あなたは例外を取得します。 mBluetoothGattの初期化方法のコードを表示できますか? – davidgyoung
ああ、忘れてしまった。それはこのようなonCreate(Bundle ...)関数にあります:mBluetoothGatt =新しいBluetoothGattService(Battery_Service_UUID、0); –
GETT DB構造を見るには、nRF connectのようないくつかのBLEエクスプローラアプリでアプリを開く必要があります。そうすることで、それが持つ特性とサービスを知ることができます。 – Emil