Androidでサービスを実行していますが、フォーカスのあるアプリケーションがあるかどうか、または「デスクトップ」(ホーム画面)にフォーカスがあるかどうかを知る必要があります。これが電話のホーム画面を指すのに適切な言葉であるかどうかはわかりません。これが焦点になっているのか、それとも他のアプリケーションなのかをどうやって知ることができますか?
サービス内には、実行中のタスクを取得するための次のコードがあります。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
componentInfo
これがデスクトップかどうかをどのように知ることができますか?エミュレーターではcomponentInfo.getPackageName()が返されますcom.android.launcher
が、Galaxy S1(私はこの電話でのみテストしました)では別のものを返します。
これを行う他の方法はありますか?