Android14で変更になった部分について修正が足りていなかったため、なんとなく接続が出来たり動作させることが出来たりするが画面表示が更新されなかったり操作が効いたり効かなかったりと全体的に変な感じになっていましたのでこれを修正しました。
以下、技術的な話や既知の不具合で未対処の部分などの備忘録的な記述になりますので、必要無い方は次の大見出しまで飛ばしてください。
今回修正した部分はAndroid14で仕様変更されたintentを修正したものになります。
筆者がAndroidに精通しているわけではないので技術的に幼稚な手法を取っているのかもしれませんが、ServiceからActivityに向けて何らかの働き掛けを行う際にintentを使用しているのですが、そのintentがいわゆる暗黙的インテントというものになっていまして、またこれは筆者の思い違いだったのですが「同じアプリ内からのintentしか受付ないんだからRECEIVER_NOT_EXPORTEDで良いじゃろ?」ってしていたらAndroid14で思いっきりブロックされていた。
というのがところどころ変な動作になる原因でした。
intentの通知先を明示するように改修しました。
また、UfoTwCtrlからのintentを受けることがあるServiceの方はRECEIVER_EXPORTEDにしないと受け取れなかったのでそうしています。
それとは別にいくつか気になる事象を発見し……は、したのですが、ちょっと思うところがあってペンディングにします。
1.初回の接続が何故か必ず5秒程度で切れる。
Bluetoothをオンにしてから最初の接続が出来たところで必ず一旦接続が切れます。
このアプリでは自動再接続の機構を取り入れているのでそのまま様子を見ているともう一度接続はされるのですが、タイミングによっては機器の名称が取得出来ずに空になったりします。
この現象はなんとなくですがAndroid14の仕様というよりも筆者の機体Xiaomi Redmi12C固有のバグのような気がしますので当面放置します。(というか、現時点でアプリ側で対処出来ません。)
そのまま動作出来るようであれば問題無いですし、名称表示が無くて気持ちが悪いという場合でもそのまま一旦「DisCon」をタップして接続解除し、もう一回接続作業からやり直せば今度は5秒で切れるという現象は発生しません。(Bluetoothをオフにしてオンし直すと再発)
2.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
いい加減たまには使用方法とかまとめないとなあ、とはちょくちょく思うのですが、こうして変更点書くだけで毎回結構な量になってしまってとてもまとめなんかした日にゃあ薄い本が分厚くなるのでその他既存の機能についてはこちら
『UfoSaCtrlTrip Ver4.00 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』
『UfoSaCtrlTrip Ver3.10 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』
『UfoSaCtrlTrip Ver3.00 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』
『UfoSaCtrlTrip Ver2.20 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』
『UfoSaCtrlTrip Ver2.10 U.F.O. SA A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』
『UfoSaCtrlTrip Ver2.00』
『UfoSaCtrlTrip Ver1.0』
の過去記事をご覧ください。
筆者はなるべくアプリのサイズを小さくしたいと思って極力余計なモジュールを読み込まないようにしてきたのですが、今回の機能追加でついに200KiBを超えてしまいました。仕方ないね。
筆者のへんてこなコダワリにより、200KiB強の小さいアプリながらも機能がアホみたいにてんこ盛りなので、もっと使い込んでみたいと思われた奇特なお方(ほめことばよん♥)は過去記事の説明もご参照ください。
きっと文量に圧倒されて見る気を失うことでしょう。わはは。
勝手な再配布はしないでください。
また、このファイルのみへの直接リンクを貼ることもご遠慮ください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。
諸事情によりアプリの無料配布を終了致しました。
今後は活動を支援してくださる方とのみ細細と共有していければと思います。
今後のUfoCtrlアプリ配布ページはこちらです。
UfoCtrl Ver1.00 (UfoCtrl開発活動支援プラン)
※申し訳ありません。
いつそうしたのか全く記憶にないのですが、当アプリのPackage名を部分的に大文字混じりにしてしまっていて今回プログラム中で大文字混じりの部分と小文字のみししている部分とが入り混じって統一できていないことを発見しましてVer4.00にて統一修正しました。
そのためVer3.10までのバージョンとはPackage名が変わっているためアップデートインストールにならず必ず新規インストールになってしまうと思います。
お手数お掛けして済みませんが設定等前バージョンからの引き継ぎが出来なくなっていますので改めて設定作業をしていただくようお願いいたいます。
なお、Ver3.00以降で画面オフボタンの機能を使用していた方は管理権限を外さないとアンインストールできなくなっていますのでご注意ください。
↑2024-01-18