4

そのため、組み込みの Bluetooth デバイスに接続するアプリに取り組んでいます。このデバイスはさまざまなバージョンで展開されており、私のテスト デバイスではすべて正常に動作します。安全な rfcomm ソケット経由で通信しています。ただし、別のデバイスのセットにはゾッとさせられます。彼らは一種の境界状態を失います。ペアリング済みとしてマークされている間、接続を確立するたびに PIN コードの再入力を求められます。そして、これは本当に望ましくありません。また、この動作はすべてのデバイスでは発生しませんが、ほとんどのデバイスで発生します。実は、PIN を忘れないデバイスは Galaxy Nexus S だけです。API レベル 10 を使用して、安全でない RFCOMM 接続を既に試しましたが、成功しませんでした。私はここで迷っています。誰かアイデアはありますか?

よろしくお願いします!

4

1 に答える 1

1

デバイスの getBTMajorDeviceClass は何ですか? BluetoothClass.Device.Major.UNCATEGORIZED の場合は、独自の UUID を生成してみてください。

private UUID generateUuid() {
String android_id = Secure.getString(getApplicationContext()
    .getContentResolver(), Secure.ANDROID_ID);
Log.i("System out", "android_id : " + android_id);

final TelephonyManager tm = (TelephonyManager) getBaseContext()
    .getSystemService(Context.TELEPHONY_SERVICE);

final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
Log.i("System out", "tmDevice : " + tmDevice);
tmSerial = "" + tm.getSimSerialNumber();
Log.i("System out", "tmSerial : " + tmSerial);
androidId = ""
    + android.provider.Settings.Secure.getString(
        getContentResolver(),
        android.provider.Settings.Secure.ANDROID_ID);

UUID deviceUuid = new UUID(androidId.hashCode(),
    ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());

return deviceUuid;
}

ソケットの作成に使用しますcreateRfcommSocketToServiceRecord(generateUuid());

*READ_PHONE_STATE が必要です

于 2014-07-08T01:26:47.623 に答える