2013-10-11 27 views
5

Tôi đang gửi hình ảnh qua bluetooth trong android và muốn tìm nạp địa chỉ MAC của Thiết bị mà hình ảnh đang được gửi.cách lấy địa chỉ MAC của thiết bị kết nối bluetooth trong android

Vui lòng tìm bên dưới mã của tôi.

private void bluetoothadd(){ 
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    if (mBluetoothAdapter == null) { 
     // Device does not support Bluetooth 

     Log.e("Bluetooth ","not found"); 
    } 

    if (!mBluetoothAdapter.isEnabled()) { 
     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     startActivity(enableBtIntent); 

     Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
     // If there are paired devices 
     if (pairedDevices.size() > 0) { 
      // Loop through paired devices 
      for (BluetoothDevice device : pairedDevices) { 


       Log.e("Mac Addressess","are: "+mBluetoothAdapter.getRemoteDevice(device.getAddress())); 
      } 
      } 
     } 

} 

Tôi nhận được tất cả địa chỉ MAC của thiết bị được ghép nối. Tôi chỉ muốn địa chỉ MAC của một thiết bị mà dữ liệu được truyền đi.

+1

Bạn muốn tìm địa chỉ, khi thiết bị khác được kết nối với thiết bị của người dùng, hoặc thậm chí trước khi kết nối được thiết lập (Discovery Phase) .. ??? – Shiva

+0

Tôi muốn địa chỉ của một thiết bị khác khi nó được kết nối và tôi có thể nhận được địa chỉ MAC mà thiết bị đó đang gửi dữ liệu. –

+0

kiểm tra theo các liên kết http://stackoverflow.com/questions/10795424/how-to-get-the-bluetooth-devices-as-a-list http://stackoverflow.com/questions/16471204/discovering-bluetooth-devices-listview-sẽ-không-được-cập nhật –

Trả lời

-3

Hãy dùng thử.

WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiInfo info = manager.getConnectionInfo(); 
String address = info.getMacAddress(); 
+0

Không, đó là wifi. Mặc dù việc sử dụng thuật ngữ địa chỉ MAC thường được kết hợp với wifi, nó cũng có thể được sử dụng cho Bluetooth BD_ADDR. – Tom

+0

Địa chỉ Mac chỉ khả dụng với mô-đun wi-fi! – alezhka

0

Vì vậy, có vẻ như bạn muốn nhận được bd_addr/mac của thiết bị mà bạn có kết nối? Sau đó lưu ý rằng lớp BluetoothSocket có một thành viên 'getRemoteDevice', trả về một cá thể BluetoothDevice đại diện cho thiết bị mà bạn đang kết nối đến, trên đó bạn có thể gọi hàm getAddress() để nhận được MAC.

Hoặc bạn có thể đăng ký ACTION_ACL_CONNECTED có chứa 'EXTRA_DEVICE' sẽ đưa bạn đến BluetoothDevice.

1

Khi ý định được kích hoạt để kết nối với thiết bị từ xa và thiết bị được thiết lập thành công, Địa chỉ thiết bị được trả lại dưới dạng dữ liệu bổ sung với cờ EXTRA_DEVICE_ADDRESS.

Bạn có thể kiểm tra sự kết nối và thiết lập nó

if (!mBluetoothAdapter.isEnabled()) { 
      Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableIntent, REQUEST_ENABLE_BT); 

Bạn có thể kiểm tra các hoạt động trong trên onActivityResult chức năng để tìm địa chỉ như thế này

public void onActivityResult(int requestCode, int resultCode, Intent data) { 

     switch (requestCode) { 
     case REQUEST_CONNECT_DEVICE: 
      // When DeviceListActivity returns with a device to connect 
      if (resultCode == Activity.RESULT_OK) { 
       // Get the device MAC address 
       String add = data.getExtras() 
            .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS); 
       address= add.toString(); 

       // Get the BluetoothDevice object 
       BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 

      } 
      break; 
} 
} 

Thủ thuật này được sử dụng trong Bluetooth Ứng dụng Mẫu trò chuyện bạn có thể tìm thấy trong thư mục Ví dụ của SDK

3

Sử dụng ứng dụng này:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 
-1

Công việc này cho tôi:

String macAddress = android.provider.Settings.Secure.getString(mContext.getContentResolver(), "bluetooth_address"); 
Các vấn đề liên quan