Я создаю приложение, которое связывается с определенным модулем Bluetooth Arduino HC06.
Я тестировал это приложение на своем Samsung S5 Neo с Marshmallow, и теперь, когда я в основном закончил, я хотел попробовать на своем основном телефоне Xiaomi Redmi 5 под управлением Android Oreo.Но это не работает.У меня было одно успешное подключение от моего телефона Oreo к модулю HC06, кроме того, что он не будет подключаться.
Что я уже сделал:
Я убедился, что мой телефон Oreo и модуль HC06 сопряжены.Я добавил некоторые дополнительные разрешения через среду выполнения.Пока у меня есть эти разрешения:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Я не могу понять, почему это работает на моем старом телефоне, но не на новом.Я надеюсь, что кто-то может направить меня в правильном направлении, спасибо.
Это метод, который я использую, чтобы найти Bluetooth и подключиться к Bluetooth
void findBT() {
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter == null) {
Toast errore = makeText(MachineReady.this, "Error, enable bluetooth", Toast.LENGTH_LONG);
errore.show();
}
if(!mBluetoothAdapter.isEnabled()) {
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 0);
}
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if(pairedDevices.size() > 0) {
for(BluetoothDevice device : pairedDevices) {
mmDevice = device;
break;
}
}
Log.e("Bluetooth", "Bluetooth device found01");
//Toast found = makeText(MachineReady.this, "Bluetooth device found", Toast.LENGTH_LONG);
//found.show();
}
void openBT() throws IOException {
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard SerialPortService ID
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
if(mmSocket.isConnected()){
beginListenForData();
bluConnection = true;
//Toast opened = makeText(MachineReady.this, "Bluetooth is opened with" + mmDevice + mmSocket, Toast.LENGTH_LONG);
//opened.show();
Log.e("Bluetooth", "Bluetooth connection has been established4");
try {
msg = "1";
mmOutputStream.write(msg.getBytes());
//Toast b = Toast.makeText(this, msg, Toast.LENGTH_LONG);
//b.show();
} catch (IOException e) {
Log.e("Send bluetooth", "Couldn't send text");
}
}else if(!mmSocket.isConnected()){
Toast notOpened = makeText(MachineReady.this, "Bluetooth couldn't connect to the device", Toast.LENGTH_LONG);
notOpened.show();
}
В журнале я получаю сообщение об исключенииэто: «Не удалось найти или подключиться к Bluetooth», который идет от этого
try {
findBT();
openBT();
} catch (IOException e) {
Log.e("Bluetooth", "Couldn't find or connect to bluetooth");
}