zoukankan      html  css  js  c++  java
  • Android 指定调用已安装的某个“相机”App

    在做项目时,有这样一个需求:如果我的手机中安装了四个相机软件,那么,在调用系统相机的时候,这四个相机软件都会被列出来,但是其中的两个在拍照完后并不能将拍得的照片返回给我,因此,能不能指定开启一个我已知的能返回照片的相机App?

    整个解决过程如下:

    参考资料:http://my.oschina.net/armsky/blog/54692

    运行参考资料中所示代码时,遇到两个问题:

      (一)、“相机”App同一时间被打开两次;意即我需要按两次“返回”才能退出被打开的“相机”App。

      (二)、用“相机”App拍完照后不能得到其返回值。事实上,如果用Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)来调用“相机”App是会得到拍到的照片的。

    因此,在参考资料文中所示代码的基础上做了修改,解决了上述两个问题。具体的代码如下所示:

            PackageInfo pi = null;  
            try {
                //获得相机包名信息
                pi = getPackageManager().getPackageInfo("com.motorola.CameraF", 0);
            } catch (NameNotFoundException e) {
                e.printStackTrace();
            }
            //获得当前应用程序的包管理器
            PackageManager pm = TestCallBackExampleActivity.this.getPackageManager(); 
    
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
            resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            resolveIntent.setPackage(pi.packageName);
            List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
            ResolveInfo ri = apps.iterator().next();
            if (ri != null ) {
                String packageName = ri.activityInfo.packageName;
                String className = ri.activityInfo.name;
    
                // 此处将Intent的Action设置为捕获照片
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                // Intent intent = new Intent(Intent.ACTION_MAIN);  // 相机主界面
                // 设置期望被打开的App包名和类名
                ComponentName cn = new ComponentName(packageName, className);
                
                intent.setComponent(cn);
                startActivityForResult(intent, 1);
            }
  • 相关阅读:
    如何查看RabbitMQ日志,Rabbitmq Trace日志的使用
    windows激活 RabbitMQ's Management Plugin(必须)
    UNET
    边缘检测
    Huber Loss
    深度学习之自编码器AutoEncoder(一)
    PU learning简介
    机器学习-稀疏矩阵的处理
    R语言入门-安装R和Rstuido软件
    归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
  • 原文地址:https://www.cnblogs.com/bluestorm/p/10949992.html
Copyright © 2011-2022 走看看