UfoSaCtrlTrip Ver4.01 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ

お手数お掛けして誠に申し訳ありません。
一部機種で動作しない不具合、文字が見辛くなった不具合が発覚しましたので改修しました。
また、GPSが無くて接続できないケースで筆者の思い違いがあって現状アプリでの対処ができない部分があったのでその説明をさせていただきます。

Ver4.00で正常に動作している場合は更新する必要はありません。
また、配布するアプリデータはVer4.00を消去してVer4.01のみ残すようにしますので、今後ダウンロードされる場合はVer4.01になります。

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

Android13以上で動作しない不具合の修正

せっかくTargetAPIを最新化して34(Android14 Upside Down Cake)にしたというのに肝心のAndroid13(Tiramisu)以上の新しい機種では動作していませんでした。

具体的にはAndroid14ではアプリが起動できない。Android13では起動して接続できるがどう操作しても対象機器が動かない。という不具合が発生していたかと思います。

これは筆者のテスト不足と勘違いにより発生しました。申し訳ありません。
修正してAndroid13の実機では動作を確認できたのですが、Android14ではエミュレータで表示が正常に出来るところまでの確認しか出来ていませんので、もしかしたら特にAndroid14での不具合がまだ残っている可能性があります。
が、筆者の環境ではテストできませんし、いつまでも既知の不具合を放置しているわけにもいかないので一旦この状態でリリースさせていただきます。

もし、まだ大きな問題等あるようでしたら筆者がAndroid14の実機を入手できるまでTargetAPIを33(Android13 Tiramisu)に下げるという手段を取る方が良いかもしれません。
が、今回のVer4.01ではVer4.00と同様にTargetAPIを34にしています。

詳細な不具合内容を以下に記録として残しておきます。(興味の無い方は読み飛ばしてください。)筆者が後で見返す用でもあるので。

Android14で必須となった変更点について対処が全くできていませんでした。
実機確認できないからと全く無頓着でいたのですが、今回の変更点はエミュレータでも検証できる部分でした。
・フォアグラウンド サービス タイプの指定の必須化
 このアプリは音楽プレーヤーに近い特性を持つものですので、"mediaPlayback"という指定にしました。
・インテント制限の指定の必須化
 基本的にこのアプリは他のアプリとの連携はしないのですが、唯一、筆者作のUfoTwCtrlと両方同時に起動しているときはボリュームボタンやメディアボタンなどによる操作をUfoSaCtrlTripとUfoTwCtrl両方に反映させるために情報を共有させるのにインテントを使用していますので、その形に合わせて制限の指定を行いました。

Android13からBLEでデータを送信するときの形が少々変わったので、Android13以上と未満とで処理が分岐するのですが、Android13以上の場合に送信するデータの更新ができていなかった(筆者のバグかつテスト漏れ)ため、停止状態のまま動かないという状態だった。
見苦しい言い訳なんですが、筆者の手元にある10機種でテストするのはかなりの負担になっていまして、Android13での接続テストまではしつこくやっていたのですが、よりにもよって動作テストが抜け落ちていてかつバグっていたという……すみません。

一部機種で文字色が黒になってしまって見づらい不具合の改修

こちら、「なんかおかしいな」とは筆者も思っていたのですが、まれに暗い灰色の背景色であるにも関わらず文字色が黒になっていて見づらくなっていることがありまして、「まぁうちのスマホもボロばっかりだしなあ」とか思ってたりも(何せ起動する度に不具合が出たり出なかったり、なんていう日和見な機種とかあったりするので、文字の見づらい現象もその一つなのかと思ってました。)したのですが、いろいろとテストした結果、どうやらAndroidOS側の不具合っぽいことが分かりましたので対処しました。

具体的に文字が見にくくなる箇所ですが、

こちらはドロップダウンリストの文字色が黒になってしまっていて見難いケース。
筆者が再現できる環境ではAndroid7〜8.1でこの症状が出ました。

それから、

メニューのドロップダウンリストの文字色が黒になって見難いケース。
こちらは筆者の環境ではAndroid9で確認できました。

いずれも、筆者はAndroidOSのHoloというデフォルトテーマに従ったままで特に指定はしていなかった箇所なのですが、なんとこれ、全く同じプログラムでTargetAPIを変更しただけで本来「白」が規定の文字色であるはずのものが「黒」に変わってしまう、というAndroidOS側の不具合というかバグというか、もうHoloというテーマは最新ではない古いモノなので「知ったこっちゃない」という扱いにされているのか、筆者には分かりかねますが、とにかくプログラムを弄って無くても、TargetAPIを新しくするとAndroidOSのHoloテーマの一貫性はもはや担保されていない、というのが事実でした。

仕方がないので、文字色が黒に変わってしまうケースが発覚したドロップダウンリストとメニューリストはプログラム側で改めて文字色を「白」とするように定義をしました。
また、色を「白」と定義しただけなのに、それだとメニューリストの文字が小さくなってしまったので、メニューリストの文字のサイズも改めてプログラム側で指定するようにしました。

なんつうか、筆者もAndroidのバージョン違いによる差異(ホント無駄に変更するの止めて欲しいんですけど)には物凄く苦しめられていて、もうプログラム中はバージョン違いによる分岐だらけなんですけど、OSサイドもちゃんとやれてないやん、っていう、ね。
最近、個人開発者の締め出しに躍起みたいだし、もしかしたらスマホももうオワコンですかね。

とつらつら愚痴ってすみませんが、一応対処しましたということで。

接続できないケース(各自で操作していただく必要があります)

前回の『UfoSaCtrlTrip Ver4.00 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』でAndroidバージョンやGPSの有無等で場合分けされる権限や機能オンオフ関連をまとめて、なるべくアプリ上からの操作で接続と動作まで漕ぎ着けられるように整理したつもりだったのですが、Android6〜11でGPSを持っていないケースについて筆者の間違いがありましたので訂正させていただきます。

「位置情報」をオンにする必要は無いので設定画面を呼び出さない、と説明していたのですが、実際には「位置情報」のオンは必要でした。
ただ、GPSを持っている機種の「位置情報」とは少々意味合いの異なる設定画面となってしまっていて、かつ機種固有の画面である可能性もあり、アプリ側からの制御も現状できないため、ここの設定画面を呼び出さない動きに変更はありませんが、実際には必要に応じて手作業でオンにしていただく必要があります。

アプリ側から制御できないのは筆者の能力不足かもしれません、が、そもそもこのケースに該当する機種で筆者が保持しているのは、厳密にはAndroidOSからちょっと外れているAmazonのFire7(2019)と10(2019)でして、他がどうなっているか全く分からないためFireに合わせてプログラムを組んでしまうのも危険だし、組もうとしてもちょっと不明な部分があって現状出来ない状況です。

ですので、Android6〜11でGPSを持っていない機種の場合、位置情報のオンオフを切り替える画面の呼び出しやチェックを行わないようにしているのですが、実際にはこれに類似する画面でオンにしてもらう必要があるかもしれない、です。
これは各自で判断して各自で操作していただく必要があります。

もし、Android6〜11でGPSを持っていない機種で接続しようとしても延々待たされるだけで接続できない、という場合は位置情報関連でオンになっていないところがあって、それをオンにすれば接続できるようになるかもしれないです。

Fireの例になってしまいますが、例を提示します。
筆者手持ちのFireではGPSを持っていないため、画面上からスワイプして簡単に切り替え操作等ができる画面を見ても、

ご覧のように「位置情報」とか「GPS」とかの状態表示/切り替えボタンが出てきません。

しかしながら、GPSは持っていなくてもWiFiやBluetoothで大まかな位置情報の取得ができないわけではないため、位置情報の権限の概念は持っています。
位置情報の権限については既にVer4.00の段階でアプリの方で権限を求めるダイアログを出すようにしていまして、これはGPSの有無による差異はありません。

ところで、Fireにも位置情報に関する設定の画面があります。

「設定」の「セキュリティとプライバシー」のところに「位置情報サービス」とありますのでこれをタップします。と。

真ん中やや下に「位置情報サービス」があり「サードパーティのアプリまたはウェブサイトにWi-Fiで位置情報を公開する」とあります。
ので、ここをタップしてみます。すると。

「位置情報」をオンオフできる画面とそっくりな画面が出てきました。
ここで筆者は似たようなものと早合点してしまって勘違いしてしまっていたのですが、実はここでオンオフできるのは「位置情報」ではありません。
「位置情報サービス」です。なんじゃそら?

これがAndroidOSの情報をあさってみてもよく分からない(筆者が間抜けなだけかも)ものでして、でもその動きから察するに、「位置情報」を使用する許可の大元締めらしいです。

つまり、アプリに「位置情報」の権限を付与していても、ここがオフになっているとどのアプリにも位置情報の使用を許さないという状態になっていて、つまりはGPSがオフになっているのと同じような状態になっています。
なので、ここをオンにしていただかないと、AndroidOS側の仕様でBluetoothのScanが拒まれますので接続できません。

ん?なら、この画面をアプリで呼び出せば良いのでは? となるのですが、ここがオンになっているかどうかの判断が現状出来ません。なので、どのタイミングでこの画面を呼び出すかという判断が出来ません。
一律出すという案もあるかもしれませんが、既にオンになっている人には余計なお世話で、一方、画面呼び出したところでオフのままで閉じられたら結局接続できません。
なので、現状ここをアプリから呼び出す条件を把握できないので制御できない、というのが実態です。
また、Fireはこうでしたが、他のGPS無し端末が同じようになっているという確証が得られませんし、なんせFireはFireOSであってAndroidOSとは異なる独自仕様である部分が多々あってもなんら不思議ではないので、これだけに合わせた作りむしろ危険です。

なので、申し訳ありませんが、各自判断と各自操作をお願いいたします。
というか、それもこれもBluetoothのScanに位置情報権限と使用なんてものを強制したAndroidOSが諸悪の根源なんですけど。

余談ですが、この画面に「アプリレベルでの許可」というのがありまして、これがアプリ側から要求できる権限です。つまりもっと大元の部分がオフになっちゃってたらそもそも無理って話なんですな。
一応、「アプリレベルでの許可」をタップして中見てみましょう。

アプリごとに権限をオンオフできるようになっています。
ここはアプリの方からオンにしてくださいってお願いできるんですけどね。

さらに、余談でさっきの画面でもういっこ下に「スキャン中」って項目がありましたが、これをタップすると。

「Wi-Fiのスキャン」と「Bluetoothのスキャン」という項目が現れます。
FireではGPSが無いため、位置情報取得の手段はWi-FiかBluetoothに頼ることになるわけですが、当然このアプリでは位置情報なんていらないのでどちらもオフのままでかまいません。

つまり、Fireの場合は現状アプリからは制御できない位置情報権限の大元をオンオフする設定が存在するため、そこは手作業でオンにしてあげてください。
ということになります。

大変かとは思いますが、宜しくお願いいたします。
(というか、Bluetoothのアプリでこんなにも位置情報の説明をしなきゃならないコッチも凄く大変です。全部AndroidOSのせい)

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

毎度ゴメンナサイ。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開発活動支援プラン)

(2024-01-18 Android14の実機確認ができるようになり不具合を改修したためVer4.01は廃版としました。修正内容等については『UfoSaCtrlTrip Ver4.02 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』の記事をご確認ください。)

※申し訳ありません。
いつそうしたのか全く記憶にないのですが、当アプリのPackage名を部分的に大文字混じりにしてしまっていて今回プログラム中で大文字混じりの部分と小文字のみししている部分とが入り混じって統一できていないことを発見しましてVer4.00にて統一修正しました。
そのためVer3.10までのバージョンとはPackage名が変わっているためアップデートインストールにならず必ず新規インストールになってしまうと思います。
お手数お掛けして済みませんが設定等前バージョンからの引き継ぎが出来なくなっていますので改めて設定作業をしていただくようお願いいたいます。

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

2023-11-17

この記事のタグ

U.F.O.

TW

SA

アプリ

制御

電動

自作

チクニー