2016-08-17 1 views
0

Ich bin gerade dabei, eine funktionierende Anwendung zu ändern, die den Micro-USB-Anschluss auf einem Android-Gerät verwendet, um serielle Befehle zu senden und zu empfangen. Ich versuche, diese Anwendung über Bluetooth (niedrige Energie) in ähnlicher Weise zu arbeiten. Ich habe es geschafft, einen seriellen Port zu emulieren, indem ich die TX- und RX-Eigenschaften mit GATT gemacht habe und die Kommunikation beim Testen perfekt funktioniert.High-Level-Bluetooth/UART-Struktur in Android App

Meine Frage ist hauptsächlich darüber, wie ich eine Instanz dieses Bluetooth-Dienstes an die Hauptaktivität (Eltern) übergeben sollte.

Main Activity 
    | Bluetooth Activity 
    | | Bluetooth UART Service 

Auf der Grundlage der obigen rohen Struktur, was ist der beste Weg, um über das Bestehen der Dienstverweis in der Bluetooth-Aktivität auf die Hauptaktivität instanziiert zu gehen? Ich habe darüber nachgedacht, die Bluetooth-Aktivität zum Launcher zu machen und dann die Referenz über parcelable zu übergeben, aber ich möchte die UART-über-USB-Option beibehalten.

Antwort

1

Nein, Aktivität ist nur UI-Klasse in Android. Sie sollten den Dienst für lange laufende Vorgänge verwenden, da er nicht von der Bildschirmdarstellung des Geräts abhängt und auch dann ausgeführt werden kann, wenn die App geschlossen wird. Erstellen Sie einen BluetoothManager und stellen Sie ihn in den Service. Starten Sie diesen Dienst in der Anwendung. Ihre BluetoothActivity wird für die Paarung an diesen Dienst gebunden. Nach Abschluss wird Activity vom Dienst getrennt und beendet, aber der Dienst ist noch aktiv (BIND AND START SERVICE). Ihre MainActivity bindet sich an sie, ruft die BluetoothManager-Instanz ab und verwendet sie für die Datenübertragung.

+0

Vielen Dank, ich lese jetzt auf verbindliche Dienste. Es fällt mir jedoch schwer zu verstehen, wie ich dies neben den USB-uart-Klassen implementieren kann. Es sind 4 Klassen beteiligt: ​​UARTActivity, UART, Bluetooth Service und UARTApplication. Ich glaube, dass der Bluetooth-Service einfach die UART-Klasse ersetzen muss, aber die Implementierung ist für mich etwas vage –