0
我試圖與接收器一起檢查與不同設備的藍牙連接,然後將其記錄在logcat中。它適用於正常情況,但在重新啓動時會失敗。重新啓動後接收藍牙連接更改
這是一個正常的工作流程:
- 手機上
- 切換藍牙開/關
- 重啓手機
- 重新連接設備,重新啓動
我可以看到2後再次我的日誌如此正常的情況下正常工作。但是我錯過了4,並且在重新啓動後沒有獲得單個事件,所以我不知道我們是否再次連接。
我的表現有這樣的:
<receiver android:name=".settings.BluetoothReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" />
</intent-filter>
</receiver>
而這些權限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
我的藍牙reciver是這樣的:
public class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
Log.e("BluetoothReceiver", "ActionFound");
}
JSONObject status = new JSONObject();
try {
status.put("status", action);
status.put("name", device.getName());
status.put("address", device.getAddress());
Calendar c = Calendar.getInstance();
status.put("time", c.getTime());
} catch (JSONException e) {
e.printStackTrace();
}
Log.e("BluetoothReceiver", status.toString());
}
}
有什麼項目EATCHIP如何做到這一點?如果我在重新啓動後沒有收到第一個藍牙連接事件,那麼一切都是毫無價值的。或者在重啓後以某種方式啓動接收器?
感謝的答案,但我會如何手動檢查呢?我的意思是在我的onReceive我有這條線走出設備: BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 但我想我必須將其更改爲啓動完成的其他內容?我是否必須獲得藍牙適配器並檢查與所有設備的連接?我使用接收器的原因是因爲我認爲你無法檢查連接,而是必須等待更改。 – user1776562 2014-11-24 13:37:25
您可以使用'BluetoothAdapter'類。在這裏查看示例http://www.programcreek.com/java-api-examples/index.php?api=android.bluetooth.BluetoothProfile – 2014-11-24 13:48:54