U.F.O. SAを独自パターンでコントロールするアプリVer.4

あー、結局、しばらく使ってみて、もっと使い易くシンプルにしたいと思ってしまい、結果、サービス部分から全面的に作成しなおし。
見た目は大差ありませんが、事実上オールニューな新作に生まれ変わってしまいました。

このアプリの対象となる製品はこちらです。

これでGoogleのサンプルも跡形も無く。完全オリジナルと言える状況になりました。
ちなみに、前回の『U.F.O. SAをAndroidから独自のランダムパターンでコントロールするアプリ』はVer.2です。一応、記録として残しておきます。
Ver.1とか3とかは未公開のままお蔵入りです。

Bluetooth関連のサービスをU.F.O. SAとA10サイクロンSAの接続&コントロール用に特化。
画面も一画面に集約して、お互いに通信ができる状態であれば起動してすぐにコントロールを開始できるようにしました。
また、コントロール方式も一新して、実用性を向上させています。

説明動画はここをクリックorタップすると見られます。Youtubeに遷移します。

インストールに必要な権限とその理由は前回と同じなので、『U.F.O. SAをAndroidから独自のランダムパターンでコントロールするアプリ』を参照してください。
アプリ起動時にBluetoothがOffだったときはONにする許可を得てONにする部分も同じです。

それでは起動したところから。

アプリ画面起動!

起動初期画面

うん、またなんだ、済まない。

前回は1ボタンタップだけで状態遷移という簡便性に拘っていたのだけれども、素直にモードを選択するラジオボタンと強さを選択するナンバーピッカーに分けて、シンプルなUIを心掛けたつもり。
モードと強さを両方変えたいときは2アクション必要になるけど、それでも、こっちの方が扱い易いかな?
そして、この画面が表示されているときはボリュームボタンでも強さを上下できるのは前回と一緒です。

左上のところはU.F.O. SAに接続した場合は「U.F.O. SA」に、A10サイクロンSAに接続した場合は「A10CYCLONE SA」になります。

大きく変わったのが、左下のトグルボタン。
「Start when LCD turnOff」と書いてあるときには、モードや強さを弄っても動き出しません。
動き出すのは、そう、画面をオフにしたとき。
この手のアプリはだいたい好みのモードや強さが決まったら、あまり変更することは無いと思うのです。(というか、筆者がそうなだけだけど)
それよりも、長く動かすのでバッテリーの消耗を抑えたい&動かしている間はスマホに触らないので画面表示している意味が無い。
それで、画面オフ時に動くという仕組みを導入しました。(あ、でも強さ0では動きませんよ)
止めたいときは画面をオンにすれば良いじゃない。それって、モードや強さを変更するときか、アプリを終わらせる時だよね。

そして、このトグルボタンを押すと、

Immediatelyモード

「Immediately」という表示に。

この状態のときは、モードや強さが即時で反映されてU.F.O. SAやA10サイクロンSAがすぐに動きます。強さ0にしたら止まります。
なので、普段はこの「Immediately」で動かしていて、止めたいときはトグルボタンを押して「Start when LCD turnOff」にしても止めることができます。
この「Immediately」で動かして、画面をオフにしても動き続けますので、そういう使い方もOKです。

このトグルボタンはON/OFF的な使い方の他に、電源ボタン連動も可能という一挙両得、一石二鳥、一期一会、一日一善(意味不明)なボタンなのです。

あ、「Step」「Composite」「Gradual」の動作イメージは前回の『U.F.O. SAをAndroidから独自のランダムパターンでコントロールするアプリ』を参照ください。
こっそりブラッシュアップしているけど、基本は同じです。

Bluetooth通信状態やアプリ状態の説明

画面上部にはBluetoothの通信状態やアプリ(特にアプリで使用しているサービス)の状態が表示されていますので、それを説明します。

画面上部の説明

①の部分に何も表示がされていないときは、正常に接続が出来ているときです。
接続できていないないときには「SCAN」という文字が出ています。
ので、それをタップするとBluetooth機器を検出を行い、U.F.O. SAやA10サイクロンSAが見つかり次第この表示が消えます。
ちなみに、検出中は、

Bluetooth機器検出中

こんな感じで、クルクル輪っかが動いています。

②はアプリを終了するときにタップしてください。バックボタン(キー)でもOKです。
でも、ホームボタンや他のアプリの起動では、背面に隠れるだけでアプリは動いたままです。
なんたって、このアプリはずっとU.F.O. SAやA10サイクロンSAを動かし続けるのが売りのアプリですから、ちゃんと終了させないと終了しません。

ちゃんと終了しないときは③の表示が残っています。
この通知領域に表示されているアイコンはこのアプリのサービスが動いていますよということを表しています。
アプリを終了させればサービスも終了させるようにしていますが、隠すだけではサービスが終了しません。
このサービスはBluetooth通信を行うためのものなので、バッテリーをそれなりに消耗する可能性があります。特に、Bluetooth検出はバッテリー大食いらしいので、なるべくU.F.O. SAやA10サイクロンSAを起動した状態でこのアプリを動かした方がスマホやタブレットのバッテリーには優しいかもしれません。
アプリの終了はちゃんとしましょう。
逆に言うと、このアプリ、表示を隠しちゃって他のアプリを動かしてもバックグラウンドで動き続けるんですよ。

動作がおかしくなってしまったら

操作はあまり短い時間に集中して行わないように、一息入れてを心掛けてください。
2台の離れたデバイスの制御ですので、完璧な動作がどうしてもできないことがあります。取りこぼしが発生し得るんですね。
特にBluetooth機器の接続&切断に関してはタイムラグが長く、下手すると最新の状況が分かるのに10秒以上掛かってからようやくアプリ側が検出できるとか、そういうケースもあるんです。そういったときに、「あれっ?」って思ってついついあれこれ操作してしまうかもしれませんが、無反応だったり、思った通りの動作をしなかったりしがちです。

画面ON/OFF時の反応も長いと2,3秒くらい待たされることがありますので、気長に待ちましょう。

画面の状態とU.F.O. SAやA10サイクロンSAの動きが合わなくなった場合、大抵はそれでも、もう一度操作すればちゃんと正常になるのですが、状態異常が積み重なって正常に戻れなくなるケースも稀に発生するかもしれません。
例えば、どうにもアプリが起動しなくなったとか、アプリは起動するけど、「SCAN」を押していくら待ってもBluetooth接続ができないなどなったときは、一度、完全にアプリを終了してから、再起動してみてください。
これは、一回バックボタンを押せば良いというレベルではなくて、「設定」の「アプリ」から「UfoSaCtrl」を選択して「強制停止」してください、という意味です。

強制終了

この画面の「強制停止」ですね。
アプリを終了させてもサービスだけ生き残っちゃっている場合(3つ上の画像の①のアイコンが出っぱなしの場合)も、この強制停止をしてあげてください。

また、それでも駄目なときは「データを消去」「キャッシュを消去」もしてみてください。
このアプリ、今回のVer.4ではモードや強さ、「Immediately」か「Start when LCD turnOff」かの状態を記憶し、再びアプリを立ち上げたときに状態を再現するようにしています。
それが悪さをしている場合は「データを消去」「キャッシュを消去」が有効かもしれません。
この記憶が無ければ、「Composite」モードの強さ0、「Start when LCD turnOff」で初期表示するようにプログラムしてあります。

逆にアプリは正常に終了出来たっぽい(一番上のサービス通知アイコンの表示も消えている)のに、U.F.O. SAやA10サイクロンSA側がBluetooth接続したままの状態表示になっている(U.F.O. SAの場合はLEDが青色)ってときは、U.F.O. SAやA10サイクロンSAの電源をそのまま落としちゃって結構です。
こういうときはBluetoothもOFFに戻しておいた方が良いかもしれませんね。変に接続情報の残骸が残っていてバッテリー食いまくったりしたら難なので。

筆者の環境ではというと、何度も状況を更新してしまい申し訳ありません。
妨害されているとか強過ぎとかいろいろ言ってきましたが、単純に電波が弱いんじゃないかという風に思うようになりました。

開発作業中は全く正常に動いていたものが、実践に臨むとどうにも不安定。
ひょっとしたら、U.F.O. SAが人体に触れていることも関係しているのかもしれませんが、手の届く範囲のどこに置いても通信が不安定なままでした。
説明動画を撮影するときにも調子が悪くて、U.F.O. SAのシリコンカップを微妙にスマートフォンとU.F.O. SAコントローラ部の間に邪魔するように配置させると通信が安定したりしていたので、てっきり近過ぎても駄目なのかと思ったのですが、じゃあ同じように邪魔物を置いて使ってみようと実践してみてもあまり安定度が上がったようには思えない。

もしかしたら、弱い&人体吸収で不安定なのかと思い、スマートフォンを立てておいてみることに。
すると、まだ実施時間が充分ではないのでプラシーボかもしれませんが、何となく調子が良くなってきたような気はする。
あれです。アンテナの配置の都合上、立てた方が電波が遠くまで届くというあれ。クルマのドアロックなんかも手を上に真っ直ぐ伸ばすと結構遠くからでも操作できますからね。
しばらく、縦で運用してみて、また状況が変わったら、またここを書き直したいと思います。(´・ω・`)

ちなみに、妨害されて通信不安定になるケースではPCのUSB3.0ポートを使用していると妨害電波が大量に出るというなんていう話もあります。USB3.0ポート未使用なら大丈夫みたいだけど、何かしらのデバイスを差し込むもドバーッと、らしいです。

Volze Controllerとの共存に注意!

設計思想の違いだと思うのですが、Volze Controllerはバックボタンを押して画面を消してもアプリは終了しません。裏でずっと動いています。
試しにBluetoothを手動でOFFにしてみても、ゾンビのようにONに蘇るのはVolze Controllerが強制的にONにしているようなのです。
このようにVolze Controllerが裏であっても起動している状態ではUfoSaCtrlは起動しないでください。
サービスがぶつかり合ってデッドロックするのか、双方共にちゃんと動作しなくなります。(下手したらBluetooth全般がおかしくなっているかも)
こうなったら、本体の再起動でしか復旧の道はありません。いくら、アプリを両方とも強制終了してから再実行したとしても正常な動作は望めません。

こちらのUfoSaCtrlを実行するときにはVolze Controllerが(裏でも)起動していないことを確認のうえ、実行してください。
詳しいことが分からない方は、一度でもVolze Controllerを実行してしまっていたら、本体の再起動をしてからでないと正常に動作しないと覚えて下さい。

逆にこちらのUfoSaCtrlは、上記の説明の通りに終了させればちゃんと完全に終了しますので、その後Volze Controllerを実行したとしてもちゃんと動きます。

(2017/11/08追記:もしかしたら現在は上記のような問題が改善されているかもしれません)

ダウンロードファイル

Android4.3以上、かつ、Bluetooth4.0(BLE)対応が必須条件です。野良アプリですので、それが分かっている人向けです。
例によって、酷いコメントには対応しませんので宜しくです。

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

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

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

ブログに無理矢理載せている都合上、ちょっと特殊なダウンロード形式にしているので、Androidの標準ブラウザではダウンロードに失敗するかもしれません。Chromeなら大丈夫みたい。ブラウザをある程度選んでしまうようです。ご了承ください。

最後に

アダルドグッズや同人コンテンツなどをご購入の際にはこのサイトのリンクを踏んでから購入していただけると、いくばくかの紹介料をいただけるので筆者が大変助かります。
このアプリや筆者の作成コンテンツが役に立ったとか面白かったとか、ありましたら応援していただけると幸いです。

このアプリの対象となる製品はこちらです。

2016-04-15

この記事のタグ

U.F.O.

SA

アプリ

制御

自作