2010-07-03 30 views
9

Tôi cần có danh sách các thiết bị bluetooth có sẵn trong khu vực bằng cách sử dụng google android 2.1.Làm thế nào để quét các thiết bị bluetooth có sẵn trong phạm vi trong Android?

Thing là, tôi không chỉ cần danh sách các thiết bị đó, tôi cần một số id duy nhất cho mỗi thiết bị được tìm thấy và tôi cần chỉ báo, tín hiệu nhận được "như thế nào" (như "cấp độ" trong android .wifi.ScanResult) ... Làm thế nào để tôi làm điều đó?

Trả lời

7

Here có một ví dụ hoàn chỉnh để khám phá thiết bị.

Bạn có thể sử dụng địa chỉ MAC làm ID duy nhất.

Giới thiệu về cường độ tín hiệu tôi nghĩ bạn nên sử dụng RSSI (Chỉ báo cường độ tín hiệu đã nhận).

+0

ai đó có kinh nghiệm về điều RSSI này? Tôi là một chút không an toàn ở đây, vì điều này là definded như là một hằng số? – xenonite

+1

Liên kết đầu tiên của bạn - http://developer.android.com/guide/topics/wireless/bluetooth.html#FindingDevices đã chết – Dayan

+0

Liên kết hiện đã bị hỏng – Charlie

35

Kiểm tra mã bên dưới:

Bắt đầu tìm kiếm

mBluetoothAdapter.startDiscovery(); 
mReceiver = new BroadcastReceiver() { 
public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 

    //Finding devices     
    if (BluetoothDevice.ACTION_FOUND.equals(action)) 
    { 
     // Get the BluetoothDevice object from the Intent 
     BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
     // Add the name and address to an array adapter to show in a ListView 
     mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
    } 
    } 
}; 

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
registerReceiver(mReceiver, filter); 
+3

+1 để có mã đẹp và dễ dàng :) – Lucifer

+0

Mã sạch đẹp, điều này nên là câu trả lời đúng. – Dayan

+0

không hoạt động đối với tôi. –

1

phương pháp Gọi bluetoothScanning, bối cảnh là cần thiết

void bluetoothScanning(){ 

    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
    context.registerReceiver(mReceiver, filter); 
    final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    mBluetoothAdapter.startDiscovery(); 

} 


// Create a BroadcastReceiver for ACTION_FOUND. 
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
      // Discovery has found a device. Get the BluetoothDevice 
      // object and its info from the Intent. 
      BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
      String deviceName = device.getName(); 
      String deviceHardwareAddress = device.getAddress(); // MAC address 

      Log.i("Device Name: " , "device " + deviceName); 
      Log.i("deviceHardwareAddress " , "hard" + deviceHardwareAddress); 
     } 
    } 
}; 

quả

Name: LE-Bose Revolve + SoundLink deviceHardwareAddress : MAC 04: 52: C7: D1: B2: 76

.....

Các vấn đề liên quan