2013-10-11 8 views
5

Ich sende ein Bild über Bluetooth in Android und möchte die MAC-Adresse des Geräts holen, an die das Bild gesendet wird.wie bekomme ich die MAC-Adresse des Bluetooth-verbundenen Geräts in Android

Hier finden Sie meinen Code.

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())); 
      } 
      } 
     } 

} 

Ich bekomme die MAC-Adresse aller gekoppelten Geräte. Ich möchte die MAC-Adresse eines Gerätes nur zu welchen Daten übertragen werden.

+1

Sie wollen die Adresse finden, wenn das andere Gerät des Benutzers Gerät angeschlossen ist, oder sogar, bevor die Verbindung (Discovery-Phase) hergestellt wird .. ??? – Shiva

+0

Ich möchte die Adresse eines anderen Geräts, wenn es verbunden ist, und ich kann die MAC-Adresse, zu dem Gerät die Daten gesendet werden. –

+0

Check folgenden Links http://stackoverflow.com/questions/10795424/how-to-get-the-bluetooth-devices-as-a-list http://stackoverflow.com/questions/16471204/discovering-bluetooth-devices-listview-wird-nicht-erhalten-aktualisiert –

Antwort

-3

Versuchen Sie es.

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

Nein, das ist WiFi. Obwohl die Verwendung des Begriffs MAC-Adresse normalerweise mit WLAN verbunden ist, kann sie auch für ein Bluetooth BD_ADDR verwendet werden. – Tom

+0

Mac-Adresse ist nur mit Wi-Fi-Modul verfügbar! – alezhka

0

Also, es klingt wie Sie die bd_addr/mac von einem Gerät erhalten möchten, dass Sie eine Verbindung haben? Beachten Sie, dass die BluetoothSocket-Klasse über ein Mitglied "getRemoteDevice" verfügt, das eine BluetoothDevice-Instanz zurückgibt, die das Gerät darstellt, mit dem Sie verbunden sind und auf dem Sie getAddress() aufrufen können, um den MAC abzurufen.

Oder Sie können für ACTION_ACL_CONNECTED registrieren, die 'EXTRA_DEVICE' enthält, die Sie zu einem BluetoothDevice führt.

1

Wenn die Absicht zur Verbindung mit dem entfernten Gerät ausgelöst wird und das Gerät erfolgreich eingerichtet wurde, wird die Geräteadresse als zusätzliche Daten mit dem Flag EXTRA_DEVICE_ADDRESS zurückgegeben.

Sie können für die Verbindung überprüfen und stellen Sie es

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

Sie die Aktivität in der Funktion auf onActivityResult überprüfen Sie die Adresse wie diese

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; 
} 
} 

Dieser Trick im Bluetooth verwendet wird, finden Die Chat-Beispielanwendung finden Sie im Ordner Beispiele des SDK

3

Verwenden Sie diese:

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

Diese Arbeit für mich:

String macAddress = android.provider.Settings.Secure.getString(mContext.getContentResolver(), "bluetooth_address"); 
Verwandte Themen