CẬP NHẬTAndroid 6.0 - Bluetooth - Không có mã tồn tại cho Action_Found phát sóng ý định
tôi đã cố gắng rất nhiều mã, cũng từ các ví dụ hiển thị trên internet. mỗi người trong số họ theo cách tiếp cận của tôi. Sau nhiều giờ thử nghiệm, tôi đã đi đến kết luận rằng trên Android 6.0 không có cơ hội để đạt được phát hiện bluetooth của các thiết bị không xác định, chúng tôi chỉ có thể truy xuất các ngoại quan. Tôi chắc chắn có gì đó với phiên bản Android này.
nếu ai đó biết cách sửa lỗi này, tôi thực sự sẽ đánh giá cao bất kỳ trợ giúp nào.
Original Post
Mã của tôi đang làm việc tốt, nhưng không có các thiết bị được tìm thấy. tôi chỉ nhận được DISCOVERY_STARTED và DISCOVERY_FINISHED, vì vậy không tìm thấy thiết bị nào, nhưng sử dụng ứng dụng hệ thống các thiết bị này được tìm thấy.
Đây là mã của đơn đăng ký của tôi, hy vọng nó có thể hữu ích.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
//other stuff...
IntentFilter filter=new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(myreceiver,filter);
}
final BroadcastReceiver myreceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("test","RECEIVED: "+ action);
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
}
if(BluetoothDevice.ACTION_FOUND.equals(action))
{
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.i("test", device.getName() + "\n" + device.getAddress());
}
}};
public void scanDevices(View v){
if (bluetoothAdapter.isEnabled()){
bluetoothAdapter.startDiscovery();
}
}
Tôi đã đã thiết lập cấp phép:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Có thể trùng lặp câu hỏi này [tại đây] (http://stackoverflow.com/questions/32656510/register-broadcast-receiver-dynamically-does-not-work-bluetoothdevice-action-f) –
@EdwardAlexander i don ' Tôi nghĩ vậy, tôi đọc câu hỏi đó và phương pháp onReceive của tôi được gọi chính xác. vấn đề là tôi không nhận được ý định ACTION_FOUND, chỉ DISCOVERY_STARTED và DISCOVERY_FINISHED. Không tìm thấy thiết bị nào, nhưng sử dụng ứng dụng hệ thống tôi có thể truy xuất danh sách các thiết bị khả dụng. Tại sao? –
Bạn nên chỉ định rõ ràng rằng bạn đang sử dụng Marshmallow, đó là một câu chuyện hoàn toàn khác, tại đây hãy kiểm tra điều này: [Bluetooth Discovery Marshmallow] (http://stackoverflow.com/questions/33052811/since-marshmallow-update-bluetooth-discovery -using-bluetoothadapter-getdefaultad) –