2016-08-17 4 views
0

現在、AndroidデバイスのマイクロUSBポートを使用してシリアルコマンドを送受信する作業アプリケーションを変更しています。私はこのアプリケーションが同様の方法でBluetooth(低エネルギー)で動作するようにしようとしています。私はGATTを使ってTXとRXの特性を作り、シリアルポートをエミュレートすることができ、通信はテストで完全に機能します。Androidアプリの高度なブルートゥース/ UART構造

私の質問は主に、このBluetoothサービスのインスタンスをメイン(親)アクティビティに渡す方法についてです。

Main Activity 
    | Bluetooth Activity 
    | | Bluetooth UART Service 

上記の粗い構造に基づいて、Bluetoothアクティビティでインスタンス化されたサービス参照をメインアクティビティに渡す最善の方法は何ですか?私は、ブルートゥースアクティビティをランチャーにして、パーセル可能な参照を渡すことを考えましたが、私はUART over USBオプションを維持したいと思います。

答えて

1

いいえ、アクティビティはAndroidのUIクラスです。長時間実行される操作にはServiceを使用する必要があります。これは、デバイスの画面操作に依存せず、アプリケーションが閉じられても実行できるためです。いくつかの 'BluetoothManager'を作り、それをServiceに入れてください。アプリケーションでは、そのサービスを開始します。 BluetoothActivityはそのサービスにバインドしてペアを作成します。処理が完了すると、アクティビティはサービスからバインドを解除して終了しますが、サービスはまだ有効です(バインドと開始サービス)。 MainActivityはそれにバインドし、 'BluetoothManager'インスタンスを取得し、それをデータの転送に使用します。

+0

ありがとう、私は今バインディングサービスを読んでいます。私はUSBのuartクラスと一緒にこれを実装する方法を理解するのが難しい時があります。 UARTActivity、UART、Bluetooth Service、UARTApplicationの4つのクラスがあります。 Bluetoothサービスは単にUARTクラスを置き換える必要があると信じていますが、それを実装することは私にはあまりにも曖昧です –