現在の最前面アプリ変更時のインテント


現在の最前面アプリ変更時にインテントを発行するアプリを作りました。

Androidには、現在の最前面アプリ切り替わり時のインテントがありません。(何に使うんだって話ですが。)

これが出来ると、たとえば、SwipeStarterにて、指定のアプリが最前面に来た場合、マーカーを無効(完全に非表示)にしたりとか出来ます。
基本的にこの手の判断が必要なアプリは、サービスを裏でぶん回して現在の情報を取得するといったような処理をしていることが多いと思います。(アプリの説明見ても、アクセシビリティ・・について触れていることが少ないので多分そうだと思う。)
そういうのに比べれば、アクセシビリティサービスを利用したインテントぶん投げなのでCPU負荷も少ないでしょう。


まだマーケットに登録中。。
色々作るのがめんどくさくてのびのびに・・・

野良で行きます。

最前面アプリモニター
https://www.dropbox.com/s/efm9muad1vyust6/ForegroundMonitor.apk


普通にインテントぶん投げているので、以下の設定をすれば受信できます。

Manifest.xml
<receiverandroid:name="Receiver">
 <intent-filter>
  <action android:name="open.android.intent.action.APP_START" />

  <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
</receiver>

レシーバのソース
public class Receiver extends BroadcastReceiver {
 public void onReceive(Context context, Intent intent) {
  //パッケージ名の取得
  intent.getStringExtra("package");
 }
}


自分とこのアプリで処理をしたいパッケージを取得しておいて、レシーバで受信した際のパッケージが一致したら処理をすればいい。

個人的には、こういう機能は個々のアプリで実装するっていうよりは他のアプリに任せた方が良いと思う。
責任転嫁出来るし。
あ、でもあまり詳しくない人にやらせようとすると、設定がめんどくさいか。

一応、自分だったら、この「最前面モニター」と、それを必要とするアプリ・・たとえば、
アプリ毎の回転方向
アプリ毎の画面輝度
アプリ毎のボリューム
アプリ毎の消灯時間
アプリ毎のネットワークOFF
アプリ毎のGPSのON/OFF
あたりを作るかな。

これら単発でインストールしたら、最初に「最前面モニター」のインストール確認をして、これが無かったら入れるように促す。

1個1個のアプリサイズも小さく出来るし、「最前面モニター」1個で6アプリ分まかなえるから環境にやさしいしね。

でもこんな感じのアプリ(アクセシ・・じゃないけど)はありふれているのでたぶん作らないけど。
でも作ったら作ったで結構なことが自動化出来る気がするね。
そう、基本は何をやるにしても手数を減らしたいっていうのがあります。
野良でやろうかな。



※追記※
ボリュームのサンプル作りました。

杏マナー
https://www.dropbox.com/s/vlqbzpbp0zbyf9q/AnzManner.apk




デフォルト音量を決めてもらって、アプリは基本デフォルト音量で動きます。
指定アプリのみ指定の音量になります。

そのほかに強制マナーモードもあります。
これは何があろうとマナーモードにします。
ボリュームボタンを押そうが、それを検知してマナーにします。

そのほかに強制マナーだけど指定アプリ音量は有効にするっていうモードもあります。
指定アプリの時だけ強制マナーモードが解除されて音量を変更できるようになります。

最前面アプリモニターが無いとマーケットに飛ぶようにしてありますが、マーケットにはアップしていないので野良を入れてください。
最前面アプリモニターのユーザ補助がONじゃないと設定画面に飛ぶようにしてありますので、ONにしてください。

また、最前面アプリが切り替わると、問答無用で音量を変更してしまうので、音楽プレイヤー等に利用している場合は挙動がおかしくなるかもしれません。



なんか話ずれたのでこの辺で。

1 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除