1
當前我正嘗試設置一個應用程序讓兩個設備通過藍牙進行通信。更改藍牙可發現性時不發送廣播
我有一個屏幕顯示單個Button
。點擊這個按鈕可以讓設備發現並禁用按鈕。當設備不再可被發現時,該按鈕應該被再次啓用。
就像在Dev Guide中建議的那樣,我註冊BroadcastReceiver
爲,當可發現性結束時通知。
問題:
有時候,我不要當設備不再發現接收任何廣播。另一方面,我通常在進入可發現性時發送2個廣播。 Discoverability正常工作,由LogCat和設備在120秒內看到我的手機(HTC Desire HD)證明。
這是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);
}
}
};
接收方已註冊。你知道這是否只是我的手機上的問題(慾望高清)? – 2012-07-15 20:38:07