ミニアプリがアクティブ状態である事を検知したいのですが、できますか?

1,224 views
Skip to first unread message

makoto tsurumaru

unread,
Dec 11, 2012, 12:37:29 PM12/11/12
to android-...@googlegroups.com
ミニアプリがユーザーから起動された事を検知したいのですが、うまくいっておりません。
 
どうすれば、ミニアプリがアクティブである事を検知できますか?
ご教授頂けないかと相談です。
 
※非アクティブ状態であるときは、検知したくないという条件つきです。
 

ミニアプリのパッケージ名は
com.sony.nfx.app.plusone.calculator
です。

getRunningTasks では、
ユーザーが起動したアプリ一覧を取得できると考えていました。

しかし、ミニアプリが対象になっていないです。

getRunningTasks では、
ユーザーが起動したミニアプリのパッケージ名を取得できないでいます。

私は、ミニアプリの検知を行いたいです。
何かいい方法があれば、教えて頂けないでしょうか。
 
また、条件としましては、
プロセスの一覧を単純に取得するものではありません。
ユーザーが操作して起動したという事実を検知したいです。
ただし、一度起動して、その後非アクティブ状態であるときは、検知したくないという条件つきです。


宜しくお願い致します。

sony tablet S
Android 4.0.3

android java code
 

 public void run_task_log(){

        ArrayList<String> appList = new ArrayList<String>();
         ActivityManager activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);

         List<RunningAppProcessInfo> processList = activityManager.getRunningAppProcesses();
         for(RunningAppProcessInfo process : processList) {
             //Log.i(TAG,"pid:"+process.pid);
             //Log.i(TAG,"processName:"+process.processName);
             appList.add(   (String) "" + process.pid + ":" +process.processName);
         }
         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, appList);
         setListAdapter(adapter);
 
 
 

         List<RunningTaskInfo> taskList = activityManager.getRunningTasks(10);
         for(RunningTaskInfo task : taskList) {
          Log.d("ActivityManager","task.topActivity.getPackageName():"+task.topActivity.getPackageName());
         }
         List<RunningServiceInfo> serviceList = activityManager.getRunningServices(30);
         for(RunningServiceInfo serv : serviceList) {
          Log.d("ActivityManager","PID:"+serv.pid+":serv.getPackageName():"+serv.service.getPackageName());
          Log.d("ActivityManager","PID:"+serv.pid+":serv.clientPackage():"+serv.clientPackage);
         }
 

         PackageManager packageManager = getPackageManager();
         ActivityManager activityManager1 = ((ActivityManager) getSystemService(ACTIVITY_SERVICE));
         List<RunningTaskInfo> runningTask = activityManager1.getRunningTasks(100);
         ArrayList<CharSequence> activityNameList = new ArrayList<CharSequence>();
         if (runningTask != null) {
          for (RunningTaskInfo task : runningTask) {
           try {
                  Log.d("ActivityManager","packageManager.getApplicationLabel():"+packageManager.getApplicationLabel(packageManager.getApplicationInfo(task.topActivity.getPackageName(), 0)));
           } catch (NameNotFoundException e) {
            Log.e("ERROR", e.toString());
           }
          }
         }
 

         ActivityManager activityManager2 = (ActivityManager) getSystemService(Service.ACTIVITY_SERVICE);
         String className = activityManager.getRunningTasks(3).get(0).topActivity.getClassName();
      Log.d("ActivityManager","className:"+className);

 }
 
Logcat
 
12-11 16:53:36.360: D/T2MDMService(3775): ////// ID Service Timer Start ///
12-11 16:53:36.370: D/ActivityManager(3775): task.topActivity.getPackageName():com.sony.nfx.app.launcher2
12-11 16:53:36.370: D/ActivityManager(3775): task.topActivity.getPackageName():com.anetm.www.apprunlist
12-11 16:53:36.380: D/ActivityManager(3775): PID:434:serv.getPackageName():com.android.smspush
12-11 16:53:36.380: D/ActivityManager(3775): PID:434:serv.clientPackage():null
12-11 16:53:36.380: D/ActivityManager(3775): PID:2996:serv.getPackageName():com.sony.nfx.app.plusone.calculator
12-11 16:53:36.380: D/ActivityManager(3775): PID:2996:serv.clientPackage():null
12-11 16:53:36.380: D/ActivityManager(3775): PID:3174:serv.getPackageName():com.android.providers.media
12-11 16:53:36.380: D/ActivityManager(3775): PID:3174:serv.clientPackage():null
12-11 16:53:36.380: D/ActivityManager(3775): PID:3534:serv.getPackageName():com.sony.nfx.hwmonitorservice
12-11 16:53:36.390: D/ActivityManager(3775): PID:3534:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:313:serv.getPackageName():com.google.android.location
12-11 16:53:36.390: D/ActivityManager(3775): PID:313:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:0:serv.getPackageName():com.google.android.talk
12-11 16:53:36.390: D/ActivityManager(3775): PID:0:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:3522:serv.getPackageName():com.sony.nfx.app.wappushdbinit
12-11 16:53:36.390: D/ActivityManager(3775): PID:3522:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:249:serv.getPackageName():com.android.systemui
12-11 16:53:36.390: D/ActivityManager(3775): PID:249:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:3508:serv.getPackageName():com.sony.automagic.blservice
12-11 16:53:36.390: D/ActivityManager(3775): PID:3508:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:313:serv.getPackageName():com.google.android.location
12-11 16:53:36.390: D/ActivityManager(3775): PID:313:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:2984:serv.getPackageName():com.sony.smallapp.plusoneservice
12-11 16:53:36.390: D/ActivityManager(3775): PID:2984:serv.clientPackage():null
12-11 16:53:36.390: D/ActivityManager(3775): PID:328:serv.getPackageName():com.sony.nfx.inputmethod
12-11 16:53:36.400: D/ActivityManager(3775): PID:328:serv.clientPackage():android
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.getPackageName():com.android.stk
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): PID:167:serv.getPackageName():com.google.android.backup
12-11 16:53:36.400: D/ActivityManager(3775): PID:167:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.getPackageName():com.android.phone
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.getPackageName():com.mbm.mbmservice
12-11 16:53:36.400: D/ActivityManager(3775): PID:375:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): PID:249:serv.getPackageName():com.android.systemui
12-11 16:53:36.400: D/ActivityManager(3775): PID:249:serv.clientPackage():android
12-11 16:53:36.400: D/ActivityManager(3775): PID:3495:serv.getPackageName():com.sony.automagic.ui
12-11 16:53:36.400: D/ActivityManager(3775): PID:3495:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): PID:313:serv.getPackageName():com.google.android.gsf
12-11 16:53:36.400: D/ActivityManager(3775): PID:313:serv.clientPackage():null
12-11 16:53:36.400: D/ActivityManager(3775): packageManager.getApplicationLabel():ホーム
12-11 16:53:36.400: D/ActivityManager(3775): packageManager.getApplicationLabel():AppRunList
12-11 16:53:36.410: D/ActivityManager(3775): className:com.android.launcher2.Launcher
12-11 16:53:36.410: D/T2MDMService(3775): ////// ID Service Timer End ///
 

Keiji Ariyama

unread,
Dec 12, 2012, 11:46:20 AM12/12/12
to android-...@googlegroups.com
有山と申します。

 アプリケーションの起動状態の取得であればgetRunningTasksで用が足りると
は思いますが、"ミニアプリ"という用語がよく分からないので、もう少し詳しく
教えてくださいませんか。

 他のアプリの内部で動く、プラグインとか、ウィジットのようなものでしょうか?

(12/12/12 2:37 AM), makoto tsurumaru wrote:
> ミニアプリがユーザーから起動された事を検知したいのですが、うまくいっておりません。
>
> どうすれば、ミニアプリがアクティブである事を検知できますか?
> ご教授頂けないかと相談です。
>
> ※非アクティブ状態であるときは、検知したくないという条件つきです。
>
>
> ミニアプリのパッケージ名は
> com.sony.nfx.app.plusone.calculator
> です。
>
> getRunningTasks では、
> ユーザーが起動したアプリ一覧を取得できると考えていました。
>
> しかし、ミニアプリが対象になっていないです。
>
> getRunningTasks では、
> ユーザーが起動したミニアプリのパッケージ名を取得できないでいます。
> 私は、ミニアプリの検知を行いたいです。
> 何かいい方法があれば、教えて頂けないでしょうか。
>
> また、条件としましては、
> プロセスの一覧を単純に取得するものではありません。
> ユーザーが操作して起動したという事実を検知したいです。
> ただし、一度起動して、その後非アクティブ状態であるときは、検知したくないという条件つきです。
>
>
> 宜しくお願い致します。
>
> sony tablet S
> Android 4.0.3
> *android java code*
> **
> *Logcat*
> **
--
Keiji,
ml_an...@c-lis.co.jp

makoto tsurumaru

unread,
Dec 13, 2012, 11:45:24 AM12/13/12
to android-...@googlegroups.com
有山様。
有難うございます。
 
> 他のアプリの内部で動く、プラグインとか、ウィジットのようなものでしょうか?
なんともいえないです。
 
SONY Tablet S なのですが、
呼び名的には、スモールアプリ(ミニアプリ)でして、
ここに電卓などがございます(別パッケージ)
 
このスモールアプリ(ミニアプリ)である電卓は、起動すると常に前面に表示されていて、
他の一般的なアプリを起動しても、スモールアプリ(ミニアプリ)である電卓は、前面に残ったままになるものです。
 
このスモールアプリ(ミニアプリ)である電卓がアクティブになった事を検知したいのですが、
これまでの、フォアグラウンドのアプリを取得する方法ではうまくいかなかったものでして、
何か検知するすべがないかを模索しております。
 
何かしら方法がありませんでしょうか・・・。
よろしくお願いいたします。
 

2012年12月13日木曜日 1時46分20秒 UTC+9 C-LIS Keiji Ariyama:

makoto tsurumaru

unread,
Dec 13, 2012, 12:04:54 PM12/13/12
to android-...@googlegroups.com
有山様。追加の情報として、記入させていただきます。
 
タッチされアクティブ状態のパッケージ名を知る事が出来ればよいと思いますが、可能でしょうか・・・。
getRunningAppProcesses
getRunningTasks
では、一般的なアプリの検知は可能でした。
しかし、このスモールアプリ(ミニアプリ)である
電卓アプリcom.sony.nfx.app.plusone.calculator
は検知できていません。
getRunningTasks
での取得では、
最後に起動したアプリより以前の行としてリストされています。
何か、他の方法があればよいのですが・・・。
 

2012年12月14日金曜日 1時45分24秒 UTC+9 makoto tsurumaru:

Keiji Ariyama

unread,
Dec 13, 2012, 9:34:38 PM12/13/12
to android-...@googlegroups.com
有山です。

>> SONY Tablet S なのですが、
>> http://ctec3.blog.so-net.ne.jp/2012-03-28
>> 呼び名的には、スモールアプリ(ミニアプリ)でして、
>> ここに電卓などがございます(別パッケージ)
 SONY Tabletの独自機能のようなので、ちょっとわからないです。。。

 ミニアプリがプロセスとして独立してるのか、それともミニアプリをハンドリ
ングする特定のプロセスの一部として動くのか。もしかしたらなんらかのAPIが
用意されているのかもしれませんが、詳細は、SONYさんに聞いてみるのが適切に
思います。
>> ml_an...@c-lis.co.jp <javascript:>
>>
>

--
Keiji,
ml_an...@c-lis.co.jp

KISAKA Toshihiro

unread,
Dec 14, 2012, 1:21:46 AM12/14/12
to android-...@googlegroups.com
こんにちは、木坂です。

設定 -> アプリ -> スモールアプリマネージャー
をみてみるに、ミニアプリは独立して動いているのではなくスモールアプリマネージャー上で動いているみたいですね。

今回はミニアプリの外からミニアプリが動いているか否か、フォーカスされているか否か、
最小化されているか否か、を知りたいということですよね。

ミニアプリの中からならフォーカス状態は SmallAppWindow#SetOnWindowFocusListener() 云々で
知ることはできると思いますが、外からどうなんだろう。

KT
--
KISAKA Toshihiro

makoto tsurumaru

unread,
Dec 18, 2012, 9:31:40 AM12/18/12
to android-...@googlegroups.com

有山様、有難うございます。

>ミニアプリがプロセスとして独立してるのか、それともミニアプリをハンドリ
>ングする特定のプロセスの一部として動くのか。もしかしたらなんらかのAPIが
>用意されているのかもしれませんが、詳細は、SONYさんに聞いてみるのが適切に

たしかに、本質的なところそうだと思いますが、こちらでお調べした限りでは、
公開されているAPIとしてはないようですね。

2012年12月14日金曜日 11時34分38秒 UTC+9 C-LIS Keiji Ariyama:

makoto tsurumaru

unread,
Dec 18, 2012, 9:48:38 AM12/18/12
to android-...@googlegroups.com

木坂様。有難うございます。


>設定 -> アプリ -> スモールアプリマネージャー
>をみてみるに、ミニアプリは独立して動いているのではなくスモールアプリマネージャー上で動いているみたいですね。
>
>今回はミニアプリの外からミニアプリが動いているか否か、フォーカスされているか否か、
>最小化されているか否か、を知りたいということですよね。
>

はい。この状態を知りたいです。
 
 
>ミニアプリの中からならフォーカス状態は SmallAppWindow#SetOnWindowFocusListener() 云々で
>知ることはできると思いますが、外からどうなんだろう。
 
確認を行いましたが、外部からは無理っぽかったです。
 
>をみてみるに、ミニアプリは独立して動いているのではなくスモールアプリマネージャー上で動いているみたいですね。
やはり、ここがネックなんですね。Android SDK でのタスクの取得等ではフォアでアクティブ状態である事が判断が出来ていない状況です。
 
他に手はないものでしょうか・・・。
 

2012年12月14日金曜日 15時21分46秒 UTC+9 KISAKA Toshihiro:
Reply all
Reply to author
Forward
0 new messages