私は、Android 6.0を使用し、それは私のカメラの意図を開きますAndroidでカメラモードとムービーモードを区別する方法は?
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
getApplication().startActivity(intent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
}
によってカメラの意図を開いています。ムービーボタンを押すと、ムービーGUIが表示されます。私はカメラと映画の意図を区別したい。どのように私は両方の名前はカメラですので、プログラミングでそれを知ることができます。これは、現在のプロセス名を取得するために私のコードです
String foregroundProcess = null;
UsageStatsManager mUsageStatsManager = (UsageStatsManager) getApplicationContext().getSystemService(Service.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
UsageEvents usageEvents = mUsageStatsManager.queryEvents(time - 1000 * 3600, time);
UsageEvents.Event event = new UsageEvents.Event();
while (usageEvents.hasNextEvent()) {
usageEvents.getNextEvent(event);
if(event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
foregroundProcess = event.getPackageName();
}
}
//Convert package name to application name
final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
ai = pm.getApplicationInfo(foregroundProcess, 0);
} catch (final PackageManager.NameNotFoundException e) {
ai = null;
}
String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
return applicationName;
ありがとうございました。私はより明確に私の質問を更新します。実際には、録音ボタンを押して、ルート付き電話でカメラと映画の2つのモードを切り替えることができます。上記の関数を使って、私は現在のアプリケーション名を得ることができ、両方のモードでカメラと同じ結果が表示されます – user8264
@ user8264:ユーザーは 'Intent'のために同じアプリを選ぶことができます。そのアプリが写真を撮っているか、動画を録画しているか、設定画面にあるか、その他何かをしているかどうか。その程度の制御が必要な場合は、これらの 'Intent'アクションを使用せず、アプリケーションに直接カメラ機能を実装してください。さらに、「UsageStatsManager」はリアルタイムではありません(「注:イベントログの最後の数分はアプリケーションによって乱用されないように切り捨てられます」)ので、既存のコードは確実に動作しません。 – CommonsWare
したがって、これらのモードを区別する方法はありません。私の目標は、カメラキャプチャやカメラ記録などの現在のプロセス名を検出することです。出来ますか? – user8264