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

Я пытаюсь подключиться к определенному устройству с помощью моего Android APP, до сих пор, что я мог сделать, это получить парные элементы, которые делают это:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set < BluetoothDevice > pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device: pairedDevices) {
        mDeviceName.add(device.getName());
        mDeviceMAC.add(device.getAddress());

    }
}
bluetoothClass.setDeviceName(mDeviceName);
bluetoothClass.setDeviceMac(mDeviceMAC);

Где я получаю MAC и Device name всех моих сопряженных устройств. То, что я хотел бы сделать, это выбрать, когда он подключается к устройству Bluetooth.

Пример

В a Samsung S4, когда я включаю Bluetooth, он всплывает Dialog whitch содержит все мои сопряженные устройства и когда я нажимаю на кого-либо, с которым он подключается (я могу...) поэтому в основном я хочу это сделать, так как теперь я получаю сопряженные устройства (я не знаю, если это лучший способ получить это, но это так), а затем, когда пользователь нажимает на кого-либо, с которым он подключается к устройству.

Это что-то вроде question, но, к сожалению, без ответа.

Ответ 1

Невозможно привести пример в этом формате, поэтому я предоставил вам с хорошим образцом и полезными ссылками, чтобы помочь вам понять образец.

Я рекомендую вам следовать инструкциям, которые я предоставил, а затем, когда у вас есть конкретные проблемы, вы можете принести его здесь, с фрагментом кода, который у вас есть трудности с.

Я рекомендую вам использовать этот примерный код:
http://developer.android.com/samples/BluetoothChat/index.html

Если вы еще этого не сделали, полезно изучить это:
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html

Это хороший учебник, и у них много учебников:
http://www.tutorialspoint.com/android/android_bluetooth.htm

В вашем манифесте вам понадобятся следующие разрешения:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

Это одно из намерений, которое рекомендуется использовать, чтобы проверить, включен ли BT:

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

и сделать ваше устройство доступным для других устройств:

if (mBluetoothAdapter.getScanMode() !=
        android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
    android.content.Intent discoverableIntent =
        new android.content.Intent(
            android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(
        android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
                300); // You are able to set how long it is discoverable.
    startActivity(discoverableIntent);
}

Как я упоминал в мой ответ здесь:

Вы можете избежать использования намерения для поиска сопряженных устройств. когда подключение к устройству, которое не сопряжено, появится уведомление попросив пары устройств. После спаривания это сообщение не должно показывать снова для этих устройств, соединение должно быть автоматическим (согласно как вы написали свою программу).

Я использую намерение включить bluetooth и сделать свое устройство Затем я установил свой код для подключения и нажмите кнопку подключения. В вашем случае вам необходимо убедиться, что ваши аксессуары также можно обнаружить. В моем случае я использую уникальный UUID, и оба устройства должен признать это для соединения. Это можно использовать, только если вы программирование обоих устройств, будь то андроид или один андроид и другой тип устройства.

Вам нужно будет понять, как использовать сокеты, так общаются устройства.
 Я рекомендую изучить эти две ссылки:

http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html
http://developer.android.com/reference/android/bluetooth/BluetoothServerSocket.html

Сокеты используются для настройки соединений между устройствами. Будут серверные сокеты и сокеты (определяемые многими факторами, программистом, фактическими устройствами). Серверный сокет прослушивает входящие соединения, когда соединение принимается подключенными устройствами, каждый с простым сокетом.

Я не уверен, как много вы знаете о потоковании. Соединение должно управляться потоками:

http://developer.android.com/guide/components/processes-and-threads.html
http://android-developers.blogspot.com.au/2009/05/painless-threading.html

Соединение между устройствами управляется потоками, отдельными от пользователя  Интерфейсный поток. Это предотвращает блокировку телефона, пока он  настройка, поиск и создание соединения BT.

Например:

AcceptThread - поток, который прослушивает подключение и принимает соединение (через серверный сервер). Этот поток может работать в течение длительного времени, ожидая подключения устройства.

ConnectThread - поток, который устройство, подключающееся к серверу, использует для подключения к серверу.

ConnectedThread - это поток, который управляет соединением между двумя сокетами.

Сообщите мне, если это поможет вам.