周辺機器と通信するためにBLE中央アプリを作成しようとしています。android BLE writeCharacteristicは、デバイスで実行されたときにfalseを返しますが、デバッグモードでは機能します。
私はAndroidアプリhttps://play.google.com/store/apps/details?id=com.macdom.ble.blescannerを使用しています周辺を作成するにはhttps://developer.android.com/guide/topics/connectivity/bluetooth-le.html
ここで与えられたBluetoothLeServiceアプリを使用しています。
特性の変更を読んで通知することができました。BluetoothGattのwriteCharacteristicを使用して特性を更新するようにBluetoothLeServiceを変更しました。使用
デバイス:
周辺:Redmi注4(すべての許可()は、読み取り、書き込み、通知有効になっている)のセントラルとして使用
デバイス:
LGEネクサス5X( Android 7.1.2、API 25)
LGE Nexus 4(Android 5.1.1、API 22)
アンドロイドメーカー: バージョン2.3.3のGradleファイル: アンドロイド{ compileSdkVersion 25 buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 18
targetSdkVersion 25
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
dirs.each { dir ->
java.srcDirs "src/${dir}/java"
res.srcDirs "src/${dir}/res"
}
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
}
}
コード:
@Override
public void onCharacteristicWrite(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
Log.w("Tharun", "onServicesDiscovered received: " + status);
setStatus(status);
broadcastUpdate(WRITE_DATA);
}
};
public void writeCharacteristic(BluetoothGattCharacteristic characteristic, String
writeString) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
characteristic.setValue(writeString);
boolean result = mBluetoothGatt.writeCharacteristic(characteristic);
Log.w(TAG, "writeCharacteristic result : " + result);
}
問題:
上記のデバイスでコードを実行すると、writeCharacteristicがfalseを返します。 onCharacteristicWriteも呼び出されません。
私はアンドロイドスタジオをアプリケーションにアタッチし、ブレークポイントを追加すると(ブレークポイントがない場合、ブレークポイントがないと動作しません)、書き込みが正常に行われ、onCharacteristicWriteが実行されています走る
問題の原因を特定できません。
私は関数のコードを調べて、なぜfalseを返すのかを調べようとしましたが、何も見つかりませんでした。
ご迷惑をおかけして申し訳ありません。
書込みを開始した時点でまだ完了していないGATT操作が既に実行されていますか? – Emil
まだ完成していないGATT操作がないことを確認しました。私の初期の疑惑は、アンドロイド・スタジオで実行されたソースコードが私のデバイス上のコードと異なることでした。それは本当だった。私はそこにすべてのコードをコピーした新しいプロジェクト(api 22とandroid 5.1.1)を作成しました。今はうまく動作します。助けてくれてありがとう。 – tharun