Ngoài ra, bạn có thể theo dõi những thay đổi trong khả năng khám phá bằng cách nhận các hành động phát sóng action_scan_mode_changed. Các Ý định phát sóng bao gồm các chế độ quét hiện tại và trước đây là tính năng bổ sung:
registerReceiver (BroadcastReceiver mới () {
© Override
public void onReceive (bối cảnh bối cảnh, ý định Ý định) {
string prevScanMode = BluetoothAdapter.EXTRA_PREVI0US_SCAN_M0DE;
Chuỗi scanMode = BluetoothAdapter.EXTRA_SCAN_M0DE;
int currentScanMode = intent.getIntExtra (scanMode, -1); int prevMode = intent.getIntExtra (prevScanMode, -1);
Log.d (TAG, "Chế độ quét:" + currentScanMode +
"trước:." + prevMode);
}
},
mới IntentFilter (BluetoothAdapter.ACTI0N_SCAN_M0DE_CHANGED));
Khám phá thiết bị từ xa
. Trong phần này bạn sẽ học cách để bắt đầu khám phá từ adapter Bluetooth cục bộ của bạn để tìm các thiết bị có thể phát hiện gần
quá trình khám phá có thể mất một thời gian để hoàn thành (tối đa 12 giây). Trong thời gian này, hoạt động của truyền thông Bluetooth Adapter của bạn sẽ bị suy thoái nghiêm trọng. Sử dụng các kỹ thuật trong phần này để kiểm tra và theo dõi tình trạng phát hiện Adapter Bluetooth, và tránh làm các hoạt động băng thông cao (bao gồm cả kết nối với một thiết bị Bluetooth từ xa mới) trong khi khám phá được tiến hành.
Bạn có thể kiểm tra nếu Adapter Bluetooth cục bộ là đã thực hiện một khám phá quét bằng cách sử dụng các phương pháp isDiscovering.
Để bắt đầu quá trình phát hiện, gọi startDiscovery trên adapter Bluetooth:
if (bluetooth.isEnabled ()) bluetooth.startDiscovery ();
. Để hủy một khám phá trong tiến trình, gọi cancelDiscovery
Khám phá quá trình là không đồng bộ. Android sử dụng Intents phát sóng để thông báo cho bạn khi bắt đầu và kết thúc của sự khám phá cũng như các thiết bị từ xa phát hiện trong quá trình quét.
Bạn có thể theo dõi những thay đổi trong quá trình khám phá bằng cách tạo ra Broadcast Receivers để lắng nghe cho Intents Broadcast action_discovery_started và action_discovery_finished:
BroadcastReceiver discoveryMonitor = new BroadcastReceiver () {
string dStarted = BluetoothAdapter.ACTI0N_DISC0VERY_STARTED;
Chuỗi dFinished = BluetoothAdapter.ACTI0N_DISC0VERY_FINISHED;
© Override
public void onReceive (bối cảnh bối cảnh, ý định ý định) {if (dStarted.equals (intent.getAction ())) {
// Discovery đã bắt đầu .
Log.d (TAG, "Discovery Bắt đầu ...");
}
else if (dFinished.equals (intent.getAction ())) {
// Discovery đã hoàn thành.
Log.d (TAG, "Discovery hoàn thành.") ;
}
}
};
registerReceiver (discoveryMonitor,
IntentFilter mới (dStarted)); registerReceiver (discoveryMonitor,
IntentFilter mới (dFinished));
. phát hiện các thiết bị Bluetooth được trả về thông qua Broadcast Intents bằng phương tiện của các hành động action_found phát sóng
Như trong Liệt kê 16-5, mỗi ý định phát sóng bao gồm tên của thiết bị từ xa trong một thêm lập chỉ mục như BluetoothDevice.EXTRA_NAME, và một đại diện bất biến của các thiết bị Bluetooth từ xa như một đối tượng parcelable BluetoothDevice được lưu trữ dưới BluetoothDevice .extra_device thêm.
đang được dịch, vui lòng đợi..
