Я пытаюсь подключиться к определенному устройству с помощью моего 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 - это поток, который управляет соединением между двумя сокетами.
Сообщите мне, если это поможет вам.