UfoTwCtrl Ver3.01 U.F.O. TWを左右別々ランダム/任意パターンでコントロールするAndroidアプリ

このアプリはBluetooth通信によりU.F.O. TWの制御を左右別々にも左右同調にも左右反転にもランダム動作できるAndroid端末用野良アプリです。任意パターンによる動作にも対応します。
BLEに対応しているBluetoothが使用できるAndroid4.4以上を対象にしております。

今回、珍しく割と早い時期に一応Android14の実機を確保することが出来まして、動作確認したところ不具合がありましたのでその改修となります。
機能に変更はありませんので、以前のバージョンで問題無く動作している場合は更新する必要はありません。単なるバグフィックスリリースですのて、Ver3.00の配布を消去してVer3.01のみ残すように致します。

以下、修正内容については同時期にリリースしました『UfoTwCtrl Ver3.00 U.F.O. TWを左右別々ランダム/任意パターンでコントロールするAndroidアプリ』と全く同じですので、そちらの記事を既にお読みの方はこちらの修正内容等は読み飛ばしていただいて大丈夫です。

対象となるデバイスは以下になります。

Android14で動作しない不具合の修正

Android14で変更になった部分について修正が足りていなかったため、なんとなく接続が出来たり動作させることが出来たりするが画面表示が更新されなかったり操作が効いたり効かなかったりと全体的に変な感じになっていましたのでこれを修正しました。

細かいお話

以下、技術的な話や既知の不具合で未対処の部分などの備忘録的な記述になりますので、必要無い方は次の大見出しまで飛ばしてください。

今回修正した部分はAndroid14で仕様変更されたintentを修正したものになります。
筆者がAndroidに精通しているわけではないので技術的に幼稚な手法を取っているのかもしれませんが、ServiceからActivityに向けて何らかの働き掛けを行う際にintentを使用しているのですが、そのintentがいわゆる暗黙的インテントというものになっていまして、またこれは筆者の思い違いだったのですが「同じアプリ内からのintentしか受付ないんだからRECEIVER_NOT_EXPORTEDで良いじゃろ?」ってしていたらAndroid14で思いっきりブロックされていた。
というのがところどころ変な動作になる原因でした。

intentの通知先を明示するように改修しました。
また、UfoSaCtrlTripからのintentを受けることがあるServiceの方はRECEIVER_EXPORTEDにしないと受け取れなかったのでそうしています。

それとは別に気になる事象を発見し……は、したのですが、ちょっと思うところがあってペンディングにします。

・UfoTwCtrlを起動していて既にU.F.O. TWを起動し接続している状態でUfoSaCtrlTripを起動し「Connect」ボタンをタップするとこのU.F.O. TWと接続してしまう。(多重接続になる)

これは過去にお助け機能として実装した、「OSでは接続している扱いになっているがアプリ側にはその情報が無い機器」を拾い上げるプログラムにより発生するものでして、現在UfoTwCtrlとUfoSaCtrlTripは同時起動時にボリュームボタン操作や近接センサなどによる操作が双方に反映されるようにはしていますが、お互いのBLE機器接続状況までは把握しているわけではないので、UfoSaCtrlTripから見るとUfoTwCtrlに接続されているU.F.O. TWが上記の「OSでは接続している扱いになっているがアプリ側にはその情報が無い機器」に該当してしまうためこうなります。
元々、タイミングによってOSで接続処理が出来てもアプリにその情報が届かないなんて事象が発生するせいで何とかこういう取り零しを少しでも拾い上げたいと思って組んだロジックだったのですが、UfoTwCtrlとUfoSaCtrlTripを両方起動している状態ではそれがお節介に過ぎる状況になってしまいます。

これは単に機能削除をすると、またタイミングによってはU.F.O. SAやU.F.O. TWの方が青ランプ(接続状態)になっているのにアプリ側では繋がっていないという宙ぶらりんの状態を救うことができなくなってしまいます。(Bluetoothオフオンし直し等の作業が必要になります。)

お互いの接続情報まで共有するのが最も丁寧な対処かとは思いますが、そもそも本来ならそんなところに注力するくらいだったらアプリの統合一本化をしたいので、そこまで作り込む気はありません。

UfoTwCtrlはU.F.O. TWしか感知しませんので、先にU.F.O. TW以外の機器をUfoSaCtrlTripと接続してから、あとからUfoTwCtrlとU.F.O. TWの接続を行っていただければと思います。

もしくは、単純にUfoSaCtrlTripで繋がってしまったU.F.O. TWを接続解除してください。

なお、両方から接続した状態で両方から動作させようとすると、多分、両方からの指示をどちらも反映した動きになると思います。
(ペアリングしているわけではないので、U.F.O. TW側が何と接続したかという情報はコントロールしていないと思われます。)

従来からの機能の説明はこちら

毎度ゴメンナサイ。m(__)m
いい加減たまには使用方法とかまとめないとなあ、とはちょくちょく思うのですが、こうして変更点書くだけで毎回結構な量になってしまってとてもまとめなんかした日にゃあ薄い本が分厚くなるのでその他既存の機能についてはこちら
UfoTwCtrl Ver3.00 U.F.O. TWを左右別々ランダム/任意パターンでコントロールするAndroidアプリ
UfoTwCtrl Ver2.10 U.F.O. TWを左右別々ランダムコントロールアプリ
UfoTwCtrl Ver2.00 U.F.O. TWを左右別々ランダムコントロールアプリ
UfoTwCtrl Ver1.20 U.F.O. TWをBluetoothで左右独立ランダム制御するアプリ
UfoTwCtrl Ver1.10 U.F.O. TWをBluetoothで左右独立ランダム制御するアプリ
UfoTwCtrl V1.0 U.F.O. TWをBluetoothで左右独立ランダム制御するアプリ
の過去記事をご覧ください。

筆者はなるべくアプリのサイズを小さくしたいと思って極力余計なモジュールを読み込まないようにしてきたのですが、今回の機能追加でついに200KiBを超えてしまいました。仕方ないね。
筆者のへんてこなコダワリにより、200KiB強の小さいアプリながらも機能がアホみたいにてんこ盛りなので、もっと使い込んでみたいと思われた奇特なお方(ほめことばよん♥)は過去記事の説明もご参照ください。
きっと文量に圧倒されて見る気を失うことでしょう。わはは。

ダウンロードファイル

勝手な再配布はしないでください。
また、このファイルのみへの直接リンクを貼ることもご遠慮ください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。

諸事情によりアプリの無料配布を終了致しました。
今後は活動を支援してくださる方とのみ細細と共有していければと思います。

今後のUfoCtrlアプリ配布ページはこちらです。
UfoCtrl Ver1.00 (UfoCtrl開発活動支援プラン)

アップデートインストール後に動作がおかしくなった場合は再起動してみてください。アプリの再起動でもダメな場合は本体の再起動もお試しください。
それでもおかしい場合はキャッシュのクリアや一旦アンインストールしてからインストールし直してみてください。
その際、設定を書き換えている方はその設定が消えてしまいますので、操作をする前に設定の退避(テキストファイルなどに移して保存)をしてください。

なお、Ver2.00以降で画面オフボタンの機能を使用していた方は管理権限を外さないとアンインストールできなくなっていますのでご注意ください。

2024-01-19

この記事のタグ

U.F.O.

TW

アプリ

制御

電動

自作

チクニー