7

Android で Bluetooth 経由で画像を送信していますが、画像の送信先のデバイスの MAC アドレスを取得したいと考えています。

私のコードの下に見つけてください。

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

}

ペアリングされたすべてのデバイスの MAC アドレスを取得しています。データが送信されているデバイスのみの MAC アドレスが必要です。

4

6 に答える 6

3
 private String connectedDeviceAdd = "";
 private BluetoothDevice connectedDevice;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    registerReceiver(this.mReceiver, new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED));




 private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent
                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            connectedDeviceAdd = device.getAddress();
            connectedDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(connectedDeviceAdd);

        } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
            Log.e(TAG, "Device Disconnected");

        }
    }
};



 @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(this.mReceiver);
    }
于 2019-08-05T05:52:52.887 に答える
1

リモート デバイスに接続するためにインテントが発行され、デバイスが正常に確立されると、 Device Address が Flag を含む追加データとして返されますEXTRA_DEVICE_ADDRESS

接続を確認して確立できます

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

on 関数でアクティビティを確認して、onActivityResultこのようなアドレスを見つけることができます

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

このトリックは、SDK の Examples フォルダーにある Bluetooth Chat Sample アプリケーションで使用されています。

于 2013-10-13T15:37:47.377 に答える
0

では、接続しているデバイスの bd_addr/mac を取得したいようですね。次に、BluetoothSocket クラスにメンバー「getRemoteDevice」があることに注意してください。これは、接続しているデバイスを表す BluetoothDevice インスタンスを返します。このインスタンスで getAddress() を呼び出して MAC を取得できます。

または、BluetoothDevice につながる「EXTRA_DEVICE」を含む ACTION_ACL_CONNECTED に登録することもできます。

于 2013-10-11T16:48:25.603 に答える
-3

それを試してみてください。

WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String address = info.getMacAddress();
于 2013-10-11T10:35:03.917 に答える