btSocket.connect() выполняется, но не может указывать на hc-05

81
8

Я пытаюсь автоматически подключиться, когда hc-05 активен в методе onPause. с этим кодом телефон разблокирован и btSocket.connect() в onResume выполняется, но состояние светодиода на hc-05 отключено. но если я удалю код в handler.postDelayed (это означает, что я должен разблокировать вручную). Светодиодные индикаторы hc-05 подключены и работают нормально.

public void onResume() {
super.onResume();
if (isConnected) {
Log.e("onResume", "isConnected");
try {
btSocket.close();
isConnected = false;
} catch (IOException e2) {
//insert code to deal with this
}
}
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
registerReceiver(mReceiver, filter);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
//Get MAC address from DeviceListActivity via intent
Intent intent = getIntent();

//Get the MAC address from the DeviceListActivty via EXTRA
address = intent.getStringExtra(DeviceListActivity.EXTRA_DEVICE_ADDRESS);

BluetoothDevice device = btAdapter.getRemoteDevice(address);

try {
btSocket = createBluetoothSocket(device);
} catch (IOException e) {
Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show();
}

try {
Log.e("onResume", "connect socket");
btSocket.connect();
isConnected = true;

} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
//insert code to deal with this
}
}
mConnectedThread = new ConnectedThread(btSocket);
mConnectedThread.start();

}

public void onPause() {
super.onPause();
try {
//Don't leave Bluetooth sockets open when leaving activity
btSocket.close();
Log.e("onPause", "close socket");

} catch (IOException e) {

}

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
BluetoothDevice device = btAdapter.getRemoteDevice(address);

try {
btSocket = createBluetoothSocket(device);
} catch (IOException e) {
Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show();
}

while (true) {
try {
btSocket.connect();
turnOnSrcreen();
try {
//Don't leave Bluetooth sockets open when leaving activity
btSocket.close();
Log.e("onPause", "close socket");
break;
} catch (IOException e) {

}

} catch (IOException e) {
e.printStackTrace();
}
}
}
}, 3000);

спросил(а) 2018-02-10T18:18:00+03:00 2 года, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема