В настоящее время я пытаюсь написать приложение для Android, которое подключается к устройству через Bluetooth и открывает последовательное соединение.Чтобы подключиться к устройству, мне нужно передать устройство некоторому коду, который устанавливает и поддерживает соединение.Моя проблема в том, что я, похоже, не дошел до этой точки, потому что мой код всегда возвращает NullPointer как устройство.
Я уже пытался отладить код и теперь обнаружил, что функция для получения связанных устройств возвращаетноль устройств.Чтобы смягчить это, я удостоверился, что адаптер Bluetooth существует и включен.Я также убедился в меню Android, что подключены устройства и что устройство Android, с которым я хочу установить соединение, было сопряжено.
Ниже приведен код, который должен идентифицировать и вернуть устройство:
public class BluetoothDeviceRecognition {
BluetoothDevice blDevice(BluetoothAdapter myBluetoothAdapter) {
Set<BluetoothDevice> pairedDevices = myBluetoothAdapter.getBondedDevices();
BluetoothDevice myDevice = null;
if(pairedDevices.size() > 0){
for (BluetoothDevice device : pairedDevices){
if (device.getName().equals("ESP32_LED_Control")) {
myDevice = device;
}
}
}
return myDevice;
}
Это код, который должен убедиться, что есть адаптер Bluetooth, и который должен включить его, если это не так:
public void startBluetooth(){
if(mBluetoothAdapter == null)
{
Log.d(TAG, "connectBluetooth: Does not have Bluetooth Capabilities");
return;
}
if(!mBluetoothAdapter.isEnabled())
{
Log.d(TAG, "connectBluetooth: Enabling Bluetooth");
Intent enableBTIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBTIntent);
}
}
И это код, которыйзапускает приведенный выше код:
connect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try{
startBluetooth();
BluetoothDevice myDevice = mBluetoothDevice.blDevice(mBluetoothAdapter);
connectBluetooth(myDevice, MY_UUID_INSECURE);
}
catch(NullPointerException e){
Log.d(TAG, "connectBluetooth: Bluetooth Device cannot be Null");
sent.setText("Error, Bluetooth Device cannot be Null");
}
}
});
При установке точки останова в начале цикла if в первом фрагменте кода я ожидаю, что размер pairedDevices будет больше 0, но фактический размерpairedDevices равен нулю.
РЕДАКТИРОВАТЬ:
Мой файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
My Target SDKдолжно быть 21.
РЕДАКТИРОВАТЬ: Таким образом, я на самом деле не решил, но вместо этого использовал другой подход.Вместо того, чтобы искать устройства, которые были в паре с моим устройством, я вместо этого ищу устройства, которые в настоящее время обнаруживаются рядом со мной.Использовал этот код: https://github.com/mitchtabian/Sending-and-Receiving-Data-with-Bluetooth