Bluetooth-Service verliert Verbindung wenn Screen aus

  • Antworten:3
Tim B
  • Forum-Beiträge: 13

03.01.2016, 20:13:36 via Website

Hallo!

Ich habe momentan ein kleines Problem bei einer App:

Diese App startet einen Service, der immer im Hintergrund läuft. Der Service stellt eine Bluetooth-Verbindung mit einem Arduino her und schickt beim bekommen einer Pushbenachrichtigung Daten an den Arduino.

Mein Problem ist jetzt folgendes:

Wenn der Bildschirm ausgeht verliert das Handy die Verbindung mit dem Arduino (daran erkenntlich, dass das BT-Modul am Arduino blinkt). Wenn jetzt bei ausgeschaltetem Screen Daten gesendet werden sollen, kommen diese natürlich nicht an.
Deshalb wollte ich über "BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)" abfragen, wenn die Verbindung verloren geht und sie ggf. wiederherstellen. Aber dies wird offensichtlich erst gecallt, NACHDEM ich den Bildschirm wieder angemacht habe.

Jetzt meine Frage:
ist es normal, dass das Disconnecten erst nach dem Einschalten des Screens passiert?
Kann ich irgendwie anders ermitteln, ob die Verbindung noch besteht?

Ich hatte mich auch überlegt, vom Arduino etwas an die App antworten zu lassen, allerdings ist das Empfangen der BT-Nachrichten am Handy ein bisschen aufwendiger und ich habe es beim ersten kurzen Versuch leider nicht direkt hinbekommen.

Vielen Dank für alle Antworten! :)

Antworten
Henrik Martens
  • Forum-Beiträge: 607

05.01.2016, 14:36:29 via Website

Das Problem liegt, denke ich, nicht daran, dass die Bluetooth-Verbindung disconnected wird, wenn du den Bildschirm aus machst.
Wahrscheinlich läuft deine komplette App im Hintergrund nicht weiter, daher auch wird BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)auch erst aufgerufen, wenn der Bildschirm wieder an ist.

Eine konkrete Lösung habe ich zwar auch nicht, aber vielleicht hilft dir das ja.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.01.2016, 14:43:28 via App

Läuft der Service als BackgroundService?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tim B
  • Forum-Beiträge: 13

06.01.2016, 15:07:42 via Website

Der Service läuft als Intent-Service (das ist doch im ein BackgroundService, oder?).
Es kann sein, dass mein Service im Hintergrund nicht mehr lief, weiß allerdings nicht, warum das so ist..

Interessanterweise habe ich das gleiche heute noch einmal getestet und selbst 2 Minuten nach dem Ausschalten des Bildschirms bestand die Bluetooth-Verbindung noch (der Service lief also noch). Ich verstehe nicht ganz, wonach Android entscheidet, ob der Service aktiv bleibt oder nicht.. Am Code habe ich nämlich gar nichts verändert.

Antworten