如何在Android中区分相机和电影模式?

时间:2017-01-18 12:45:12

标签: android android-intent android-camera android-camera-intent

我正在使用Android 6.0并通过

打开相机意图
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 个答案:

答案 0 :(得分:2)

您可以要求相机通过ACTION_IMAGE_CAPTURE拍摄照片,然后您可以请求相机录制视频via ACTION_VIDEO_CAPTURE

如果您正在测试的相机应用程序允许用户在这些模式之间切换,则从这些Intent操作启动时,恕我直言,这是相机应用程序中的错误。

答案 1 :(得分:1)

处理MediaStore.ACTION_IMAGE_CAPTURE的应用不应该允许您切换到视频模式,因为您明确调用它来捕获图像(ACTION_VIDEO_CAPTURE操作相同,这应该只适用于视频模式)。我会将此问题报告给应用供应商,而不是浪费时间尝试解决其他问题。错误。