做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时,

调用new Intent(MediaStore.ACTION_IMAGE_CAPTURE);会弹出相机选择界面,

但是客户是不允许用户用第三方相机的,因为第三方相机有的可以直接进行选择照片操作,

但是客户要求照片必须是当前拍摄的。

上面是遇到的问题,寻找解决方案,发现Intent可以通过setPackage设置包名来指定

要打开的应用,安卓原生系统中照相机的包名是com.android.camera,通过测试在三

星等几个使用原生系统的手机中可以避免选择第三方相机直接调用了系统相机,但是在

魅族、小米等手机中仍然弹出相机选择界面,通过查看这几款手机自带相机的apk发现,

它们的包名并不是com.android.camera,试着将包名改为魅族小米的包名测试通过,

可以直接指定系统相机;

虽然找到了原因,但是我们总不能每款手机都做一个适配来指定包名吧。还好安卓

允许我们获取手机中安装的所有apk的信息。我的解决方案是遍历手机中所有安装的软件,

判断软件的名称为"相机,照相机,照相,拍照,摄像,Camera,camera"等关键字,

系统相机无非都是这样命名的。以下是代码:

 /*** 照相功能* imgPath指定照片存储路径*/public void cameraMethod(Activity activity, int RESULT_CAPTURE_IMAGE,String imgPath) {try {Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File out = new File(imgPath);Uri uri = Uri.fromFile(out);try {// 尽可能调用系统相机String cameraPackageName = getCameraPhoneAppInfos(myActivity);if (cameraPackageName == null) {cameraPackageName = "com.android.camera";}final Intent intent_camera = activity.getPackageManager().getLaunchIntentForPackage(cameraPackageName);if (intent_camera != null) {imageCaptureIntent.setPackage(cameraPackageName);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);activity.startActivityForResult(imageCaptureIntent,RESULT_CAPTURE_IMAGE);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 对使用系统拍照的处理public String getCameraPhoneAppInfos(Activity context) {try {String strCamera = "";List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);for (int i = 0; i < packages.size(); i++) {try {PackageInfo packageInfo = packages.get(i);String strLabel = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();// 一般手机系统中拍照软件的名字if ("相机,照相机,照相,拍照,摄像,Camera,camera".contains(strLabel)) {strCamera = packageInfo.packageName;if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {break;}}} catch (Exception e) {e.printStackTrace();}}if (strCamera != null) {return strCamera;}} catch (Exception e) {e.printStackTrace();}return null;}

安卓排除美颜相机等第三方相机直接调用系统相机处理方法相关推荐

  1. 安卓调用系统相机进行拍照

    安卓调用系统相机进行拍照 调用系统相机进行拍照的话,步骤比较简单,分为两步 使用隐式Intent打开相机 在onActivityResult回调中对图片进行处理 (传回来的图片分为缩略图和原图,缩略图 ...

  2. 安卓调用系统相机拍照并返回,实现图片预览

    安卓调用相机拍照并返回预览及相关类型换(略缩图,画质糊)原图预览参考传送门 一.demo预览 二.xml代码和activity简单代码描述. 三.顺便写几个转换工具方法吧 今年主要在忙新项目,安卓也有 ...

  3. 安卓调用系统相机录像并上传到后端服务器

    安卓调用系统相机录像并上传到后端服务器 写在前面 一.录像上传的思路 二.添加相关权限 三.按钮设置监听,调用相机录像并回调 1.按钮设置监听: 2.调用代码 3.回调代码(划重点奥) 最后的最后: ...

  4. 安卓调用系统相机拍照并且显示在ImageView上

    并没有什么技术难点,只是在保存到sdCard的时候有一点小细节需要注意,所以写了这篇文章.代码很简单,就不解释什么了,直接贴上源码. public class TakePhotoActivity ex ...

  5. 安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])

    先创建照片存储uri public static Uri createImagePathUri(Context context) {Uri imageFilePath = null;String st ...

  6. 调用系统相机和相册出现闪退报错No Activity found to handle Intent

    调用系统相机和相册出现闪退报错No Activity found to handle Intent : 在开发安卓项目的时候遇到了一个问题,当手机调用系统相机和相册的时候会出现闪退的现象,根据报错常常 ...

  7. android拍照保存到系统相册,调用系统相机拍照,并且保存到系统相册的一般套路...

    最近遇到也一个需求:调用系统相机拍照,并且照片可以在系统相册显示. 关于照片显示在系统相册这个问题,因为安卓机型太多了,各大厂商都对原生系统进行了不同程度的定制,所以在一般情况下,有的手机会把图片直接 ...

  8. Android手机调用系统相机拍照、裁剪以及获取Url上传图片

    前言 最近一个人在公司搞独立开发,遇到问题只能自己解决,虽然过程比较坎坷,但是收获还是颇多的,一个人也是要坚强滴,最近弄用户的头像遇到了一些小问题,虽然上一款应用有头像上传,但是发现了其中的一些小问题 ...

  9. 完美调用系统相机拍照,获取图片进行压缩并本地保存

    在android开发中,调用相机的功能的频幕可谓相当之高,尤其在当前社交应用五花八门的情况下,相机的功能被开发的相当丰富,如美颜相机,美拍,微拍和最早的360相机等,可是制造多少"美女&qu ...

  10. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

最新文章

  1. 为什么要把js放在body的末尾?
  2. 图解二叉树的先中后序遍历
  3. Linux内核分析 - 网络[四]:路由表
  4. c语言程序窗口后台持续监测,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...
  5. python创建一个新的txt文件-如何在python中编辑文本文件并创建一个新的文本文件?...
  6. 关于图片按比例自适应缩放
  7. 漫谈微服务架构:什么是Spring Cloud,为何要选择Spring Cloud
  8. OpenCV实战1——图像矫正技术
  9. 开涛spring3(5.15.2) - Spring表达式语言 之 5.1 概述 5.2 SpEL基础
  10. 基于神念TGAM的脑波小车(1)
  11. sift算法c语言实现
  12. 蓝桥杯2016年第七届C/C++省赛B组第二题-生日蜡烛
  13. MATLAB希尔伯特变换
  14. 局域网ip扫描工具_一款针对Profinet协议漏洞渗透的工具
  15. 全线路IC闭环控制自动温控电热毯维修记
  16. 笔记本可自行更换CPU、独显了,老外用它手搓了台“PS5”
  17. 超详细讲解!在字节跳动我是如何当面试官的,附大厂真题面经
  18. 差分进化算法_想用遗传算法?来看看这些已为你做好的开源优化框架
  19. python在新的图片窗口显示图片(图像)
  20. 根据commitid创建分支

热门文章

  1. OpenCV(三)彩色图灰度化、通道分离、单通道反差处理(灰度图)、多通道反差处理(彩色图)
  2. 【每天学点管理】——提升领导力 增值法则
  3. 字符间距和文字效果(转)
  4. 2022 年牛客多校第五场补题记录
  5. 卡内基梅隆大学计算机专业类别,卡内基梅隆大学计算机专业优势介绍
  6. svchost.exe网速占用解决办法
  7. 2021江西省数学建模A题
  8. win10家庭版计算机配置在哪里,Windows10家庭版没有组策略的解决方法
  9. Vue中使用swiper构建简易轮播图
  10. 网上商城所需软硬件架构分析