カスタムBluetoothコンポーネントに接続するアプリケーションを開発しています。私たち皆が知っているように、AndroidのBluetoothは悪夢です。LG G5でのみBluetoothボンディングが失敗する
接続、ペアリングおよびボンディングは、全てのSamsungデバイス(S5、S6、S7、S8)に適していますが、問題は、特定のデバイスであるアンドロイド6
を実行LGのG5に失敗します。 それは、状態BOND_BONDING結合を結合するために行くと、私は、このログエントリを参照してください。
****** ACTION_BOND_STATE_CHANGED - BOND STATE 11
をしかし、それはBOND_BONDEDに行くことはありません。代わりに私はしばらくしてからBOND_NONEを取得します。
****** ACTION_BOND_STATE_CHANGED - BOND STATE 10
特定のバージョンの問題であるため、コード全体を共有する価値はないと思うので、コードは正しいです。私はこれを回避するための提案やアイデアを探しています。参考のために BOND_NONEは10 BOND_BONDINGは11 BOND_BONDEDある
// Handles various events fired by the BluetoothService.
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
switch (action) {
case BluetoothService.ACTION_DATA_AVAILABLE://Received data from the device
// Doing stuff
break;
case BluetoothService.ACTION_GATT_SERVICES_DISCOVERED:
// Doing more stuff
break;
case BluetoothDevice.ACTION_ACL_CONNECTED:
// Doing amazing stuff
break;
case BluetoothDevice.ACTION_BOND_STATE_CHANGED:
Integer bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, 0);
Log.d("MainActivity", "****** ACTION_BOND_STATE_CHANGED - BOND STATE " + bondState.toString());
break;
}
}
};
をあるおかげで12
https://stuff.mit.edu/afs/sipb/project/android/docs/reference/android/bluetooth/BluetoothDevice.html
です! 1として、それが唯一のユーザーがプログラム我々はsetpasskey
という名前のプライベートメソッドを使用してパスキーを設定することができpasskey
.Butを入力することができ表しBluetoothDevice.EXTRA_PAIRING_VARIANT
場合
まず思いが、これは祖父母が行うことができなくなり、ユーザインタラクションのBluetoothペアリングされています。それから私は見下ろして、ユーザーだけがパスキーを入力することができますええ答えです。あなたはその対話的なペアリングをコード化する必要があります。また、 "LG G5でのみ"このように考えることはありません。 Phone.tostring()!= "LG G5"は、他のメーカーの電話機では失敗するでしょう。 – danny117