Я разрабатываю приложение для Android, которое в качестве клиента подключается к устройству с поддержкой Bluetooth SPP. Мой телефон HTC Inpire 4G, и я использую платформу 2.3.3. Сначала я вообще не мог подключиться, даже используя новое сокетное соединение InsecureRfcomm.
/* Does not work, Service Discovery Exception when trying to connect */
MY_UUID is the app's UUID string, also used by the server code
UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
tmp = mmDevice.createInsecureRfcommSocketToServiceRecord( myUUID );
tmp.connect();
Мне удалось подключиться, только если было выполнено сопряжение вручную с использованием настроек Bluetooth со следующим кодом. Если приложение будет убито или телефон выключен, я должен вручную разорвать связь и выполнить сопряжение еще раз, прежде чем будет установлено соединение. Я не возражаю против того, что я должен соединиться перед соединением, но я возражаю, что я должен разорвать пару и снова соединиться, чтобы установить соединение.
/* This is a workaround method to establish connection */
BluetoothDevice hxm = mBluetoothAdapter.getRemoteDevice(mmDevice.getAddress());
Method m;
m = hxm.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
tmp = (BluetoothSocket)m.invoke(hxm, Integer.valueOf(1));
Пожалуйста, дайте мне знать, если есть другой обходной путь для этого.
Благодарю.