Подтвердить что ты не робот

Подключиться к устройству с адресом Bluetooth на String

Я делаю приложение для Android и где у меня есть MAC другого устройства в виде строки (длиной 17 символов), и вам нужно использовать его для подключения к этому устройству (поток, который инициирует соединение Bluetooth). Я играл с ним весь день и не могу понять, как это сделать. Проблема в том, что он не позволяет установить BluetoothDevice равным строке. Есть ли способ, которым это может/должно быть выполнено?

(решил не помещать какие-либо мои попытки здесь в качестве кода, видя, как они были полны ошибок)

Он должен общаться с другим планшетом, на котором выполняется то же приложение. Я просмотрел эту страницу ранее, и большинство моих приложений основано на этом. Моя основная проблема заключается в использовании примера ConnectThread,

У меня есть строка с MAC-адресом, как мне подключиться к этому MAC?

Любая помощь будет высоко оценена,

4b9b3361

Ответ 1

Если я правильно понял, у вас есть MAC-адрес в виде строки, и вы хотите подключиться к устройству, верно? Это должно работать:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
BluetoothSocket tmp = null;
BluetoothSocket mmSocket = null;

// Get a BluetoothSocket for a connection with the
// given BluetoothDevice
try {
    tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
    tmp = (BluetoothSocket) m.invoke(device, 1);
} catch (IOException e) {
    Log.e(TAG, "create() failed", e);
}
mmSocket = tmp;

Это выдержка из исходного кода этого простого Android-приложения с открытым исходным кодом: https://github.com/janosgyerik/bluetoothviewer

Приложение представляет собой простой инструмент для отладки соединений Bluetooth и необработанных данных протокола. (Пока только в ascii, я планирую добавлять функции для отладки шестнадцатеричных, а также.)

Ответ 2

Сначала вам нужно будет выяснить, какой профиль поддерживает Bluetooth-устройство. Например, это может быть медицинское устройство, которое может использовать профиль HDP, или может использовать простой RS232 через Bluetooth. Важно понять, как соединение Bluetooth устанавливается для разных профилей, прежде чем вы начнете писать код.

Вот хорошая ссылка для начала. Android SDK также поставляется с некоторыми базовыми примерами, с которых вы можете начать.

http://developer.android.com/guide/topics/connectivity/bluetooth.html

EDIT:

Если ваше устройство успешно спаривается, вы увидите MAC-адрес в списке сопряженных устройств. Например, вы можете сделать это, чтобы найти устройство, соответствующее MAC-адресу вашего устройства:

  Set<BluetoothDevice> pairedDevices = mBluetoothAdapter
                    .getBondedDevices();
            if (pairedDevices.isEmpty()) {
                Log.e(TAG,
                        "No devices paired...");
                return ;
            }

    for (BluetoothDevice device : pairedDevices) {
                Log.d(TAG, "Device : address : " + device.getAddress() + " name :"
                        + device.getName());
            if (MY_MAC_ADDR.equals(device.getAddress())) {
                mDevice = device;
                break;
            }
    }

Надеюсь, что это поможет.