Я пытаюсь создать службу для подключения к устройству Bluetooth при нажатии на элемент списка.В виде списка отображаются сопряженные устройства.Изначально я пытался без службы, но когда я изменил активность, соединение Bluetooth оборвалось.
Массив сопряженных устройств и код представления списка приведены ниже:
pairedBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Set<BluetoothDevice> bt = mBluetoothAdapter.getBondedDevices();
String[] strings = new String[bt.size()];
btArray = new BluetoothDevice[bt.size()];
int index = 0;
if (bt.size() > 0) {
for (BluetoothDevice device : bt) {
btArray[index] = device;
strings[index] = device.getName();
index++;
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, strings);
mylistView.setAdapter(arrayAdapter);
}
}
});
В настоящее время у меня есть другой поток, который подключаетсяк Bluetooth после щелчка по представлению списка:
mylistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int i, long l) {
ClientClass clientClass;
clientClass = new ClientClass(btArray[i]);
clientClass.start();
}
});
private class ClientClass extends Thread {
private BluetoothDevice device;
public ClientClass(BluetoothDevice device1) {
device = device1;
try {
socket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
try {
socket.connect();
} catch (IOException e) {
text.setText("Status: Not Connected");
try {
socket = (BluetoothSocket) device.getClass().getMethod("createRfcommSocket", new Class[]{int.class}).invoke(device, 1);
socket.connect();
if (socket.isConnected()) {
text.setText("Status: Connected to Device");
}
} catch (IllegalAccessException e1) {
e1.printStackTrace();
text.setText("Status: Not Connected");
} catch (InvocationTargetException e1) {
e1.printStackTrace();
text.setText("Status: Not Connected");
} catch (IOException e1) {
e1.printStackTrace();
text.setText("Status: Not Connected");
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
text.setText("Status: Not Connected");
} catch (Exception el) {
el.printStackTrace();
text.setText("Status: Failed");
}
}
}
}
Я исследовал службы, но не смог найти способ передачи данных из массива в службу или подключитьсяна Bluetooth от службы.
Любая помощь будет принята с благодарностью.