1
現在、2つのデバイスがBluetooth経由で通信できるようにアプリケーションを設定しようとしています。Bluetoothの検出可能性を変更するときにブロードキャストが送信されない
私にはButton
という単一の画面があります。このボタンをクリックすると、デバイスが検出可能になり、ボタンが無効になります。デバイスが検出不能になった場合、ボタンは再度有効になります。
のように私は見つけがを終了したときにを通知するBroadcastReceiver
を登録Dev Guideに提案しました。
問題:
デバイスはもはや検出可能であるとき時々、私はどんな放送を受けません。一方、私は通常、発見可能性を入力するときに2つのブロードキャストを送信します。発見能力はうまく動作し、LogCatとデバイスが私の電話機(HTC Desire HD)を120秒間見ていることが証明されます。
この
はLogCatからレコードが2つのブロードキャストが始まる見つけた直後に受信されて表示される:03-25 23:01:47.557: INFO/System.out(16905): --------broadcast received-------------
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): current scan mode: 21
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): previous scan mode: 23
03-25 23:01:47.557: INFO/System.out(16905): --------broadcast received-------------
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): current scan mode: 23
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): previous scan mode: 21
見つけやすさを開始する私のコードは次のようである:
private void becomeVisible() {
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(discoverableIntent,
CODE_REQUEST_MAKE_DISCOVERABLE);
}
マイBroadcastReceiver
は次のようになります。
private final BroadcastReceiver discoverableModeChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("--------broadcast received-------------");
int scanMode = intent.getIntExtra(BluetoothAdapter.EXTRA_SCAN_MODE,
0);
int scanModePrevious = intent.getIntExtra(
BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE, 0);
Log.d(TAG, "current scan mode: " + scanMode);
Log.d(TAG, "previous scan mode: " + scanModePrevious);
if (scanMode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
// show button
findViewById(R.id.btn_become_visible).setEnabled(false);
} else {
// hide button
findViewById(R.id.btn_become_visible).setEnabled(true);
}
}
};
受信者が登録されています。それが私の電話(欲望hd)だけで問題かもしれないかどうか知っていますか? –