SDK デモの Bluetooth チャットの例を変更して、arduino を搭載した Bluetooth LED マトリックスを制御できるようにしました。チャット プログラムを使用して、Bluetooth 経由でディスプレイにメッセージを送信できます。でも問題があります。縦向きと横向きの 2 つの画面レイアウトを作成しました。このようにして、向きに関係なく、インターフェイスが電話のほとんどのスペースを占めるようにすることができます。
問題は、電話が回転している場合、OnDestroy() が呼び出されて、新しいレイアウト (横向きまたは縦向き) をリロードすることです。OnDestroy() ルーチンでは、Bluetooth リンクが確立されている場合は破棄します。
public void onDestroy() {
super.onDestroy();
// Stop the Bluetooth chat services
if (mChatService != null)
mChatService.stop();
if (D)
Log.e(TAG, "--- ON DESTROY ---");
}
ここの他の投稿を読んで、「android:configChanges="orientation"」をマニフェストに追加することで、サービスが停止するのを防ぐことができることがわかりました。これを行うと、画面を回転させたときに、ディスプレイへの Bluetooth リンクが終了しなくなりましたが、画面が横向きモードで再描画されなくなりました。
これを修正するために、接続を終了する「if mchatservice...」セクションを削除することを考えていますが、アプリケーションが最終的に終了したときにコードを実行する必要があります。
接続を終了せずに、回転時に画面を再描画する方法はありますか? そうでない場合は、いつでもサービス コードを OnPause() イベントに移動できると思いますが、アプリがフォアグラウンド フォーカスを失うと、接続が終了します。
他の方法はありますか?
ありがとう。