Moin,
Ich programmiere gerade eine Android app (mit Java) welche sich mit einem ESP32 über "normales" Bluetooth verbinden und auf knopfdruck bestimmte daten senden soll. Dazu nutze ich folgende libary: https://github.com/harry1453/android-bluetooth-serial . In der Beispiel app der libary funktioniert alles wie es soll. Da die app sich immer mit dem selben esp32 verbinden soll verzichte ich in meiner app aufe eine geräte-auswahl. Nun zum problem: immer wenn sich die app mit dem esp32 verbinden soll stürtzt sie ab.
[CODE lang="java" highlight="3-6"]public void connect() {
if (!connectionAttemptedOrMade) {
compositeDisposable.add(bluetoothManager.openSerialDevice("XX:XX:XX:XX:XX:XX")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(device -> onConnected(device.toSimpleDeviceInterface()), t -> {
createToast("Verbindung konnte nicht hergestellt werden!");
connectionAttemptedOrMade = false;
connectionStatusData.postValue(ConnectionStatus.DISCONNECTED);
}));
connectionAttemptedOrMade = true;
connectionStatusData.postValue(ConnectionStatus.CONNECTING);
}
}
private void onConnected(SimpleBluetoothDeviceInterface deviceInterface) {
this.deviceInterface = deviceInterface;
if (this.deviceInterface != null) {
connectionStatusData.postValue(ConnectionStatus.CONNECTED);
this.deviceInterface.setListeners(this:
nMessageReceived, this:
nMessageSent, t -> createToast("Fehler beim senden!"));
createToast("verbunden!");
messages = new StringBuilder();
messagesData.postValue(messages.toString());
} else {
createToast("verbinden fehlgeschlagen!");
connectionStatusData.postValue(ConnectionStatus.DISCONNECTED);
}
}
private void onMessageReceived(String message) {
messages.append("Car ").append(": ").append(message).append('\n');
messagesData.postValue(messages.toString());
}
private void onMessageSent(String message) {
messages.append(getApplication().getString(R.string.you_sent)).append(": ").append(message).append('\n');
messagesData.postValue(messages.toString());
messageData.postValue("");
}[/CODE]
(Die mac-adresse habe ich hier durch X'se ersetzt)
Meinen Fehler konnte ich auf die Markierte stelle eingrenzen. Ich bin mir sogar sicher, dass das Program nichts mit "device" anfangen kann, da ich glaube, dass es definert wird wenn man ein Gerät auswählt.
MfG
Ich programmiere gerade eine Android app (mit Java) welche sich mit einem ESP32 über "normales" Bluetooth verbinden und auf knopfdruck bestimmte daten senden soll. Dazu nutze ich folgende libary: https://github.com/harry1453/android-bluetooth-serial . In der Beispiel app der libary funktioniert alles wie es soll. Da die app sich immer mit dem selben esp32 verbinden soll verzichte ich in meiner app aufe eine geräte-auswahl. Nun zum problem: immer wenn sich die app mit dem esp32 verbinden soll stürtzt sie ab.
[CODE lang="java" highlight="3-6"]public void connect() {
if (!connectionAttemptedOrMade) {
compositeDisposable.add(bluetoothManager.openSerialDevice("XX:XX:XX:XX:XX:XX")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(device -> onConnected(device.toSimpleDeviceInterface()), t -> {
createToast("Verbindung konnte nicht hergestellt werden!");
connectionAttemptedOrMade = false;
connectionStatusData.postValue(ConnectionStatus.DISCONNECTED);
}));
connectionAttemptedOrMade = true;
connectionStatusData.postValue(ConnectionStatus.CONNECTING);
}
}
private void onConnected(SimpleBluetoothDeviceInterface deviceInterface) {
this.deviceInterface = deviceInterface;
if (this.deviceInterface != null) {
connectionStatusData.postValue(ConnectionStatus.CONNECTED);
this.deviceInterface.setListeners(this:
createToast("verbunden!");
messages = new StringBuilder();
messagesData.postValue(messages.toString());
} else {
createToast("verbinden fehlgeschlagen!");
connectionStatusData.postValue(ConnectionStatus.DISCONNECTED);
}
}
private void onMessageReceived(String message) {
messages.append("Car ").append(": ").append(message).append('\n');
messagesData.postValue(messages.toString());
}
private void onMessageSent(String message) {
messages.append(getApplication().getString(R.string.you_sent)).append(": ").append(message).append('\n');
messagesData.postValue(messages.toString());
messageData.postValue("");
}[/CODE]
(Die mac-adresse habe ich hier durch X'se ersetzt)
Meinen Fehler konnte ich auf die Markierte stelle eingrenzen. Ich bin mir sogar sicher, dass das Program nichts mit "device" anfangen kann, da ich glaube, dass es definert wird wenn man ein Gerät auswählt.
MfG