android调用系统相机

Android调用系统相机录像并设置参数 调用方便简单,开发量少,适用于快速实现功能。界面简单,无需自己构建复杂的拍摄界面进行处理,方便易于使用,比较美观,功能相对完善。毕竟都是系统自带的; 阅读详情

首先先说明一下,鉴于网上搜android调用系统相机,得到的内容一大把都是:调用系统相机然后获得图片(网上一大把这样的东西,抄过来抄过去,有些人根本就不加以验证是否有效,很不提倡这种做法),如果需要这样功能的请自行百度,我待会介绍的是单纯调用系统相机,但不需要获取图片。

就单纯调用系统相机而言,先说说几个问题

1、系统版本

这个问题在这个帖子中说明了

http://www.eoeandroid.com/thread-536075-1-1.html

在不同版本的系统中,调用的方法似乎不一样,上述的方法在我的小米2S手机上试了不行

2、大部分机型可以,其他机型目前只测试了小米和三星。

3、机型

我在我手机上常使用的方法是

		ComponentName comp = new ComponentName("com.android.camera",
				"com.android.camera.Camera");
		intent.setComponent(comp);
		intent.setAction("android.intent.action.VIEW");
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
				| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
		startActivity(intent);

这个方法确实可行,但是当我在nexus 5上使用时,程序崩溃了........


无意间得到这个帖子的一点启示

http://www.apkbus.com/android-182775-1-1.html

可以先通过找到包名再调用相机,因为我发现,之前小米可用的那个方法虽然在别的机型上不行,但是如果Intent的Action是MediaStore.ACTION_IMAGE_CAPTURE。虽然网上很多说“调用系统相机拍照返回照片”用的都是这个,但是确实在很多机型上都可以打开相机

于是我想到了,既然相机包名找到了,那可以通过包名启动相机

Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		ResolveInfo res = getPackageManager().
				 resolveActivity(infoIntent, 0);
        if (res != null) {
        	//启动相机
        	startApplicationByPackageName(res.activityInfo.packageName);
        }

其中startApplicationByPackageName方法如下

//通过包名启动应用
	private void startApplicationByPackageName(String packName)
	{
		PackageInfo packageInfo=null;
		try{
			packageInfo=getPackageManager().getPackageInfo(packName, 0);
		}catch(Exception e){
			e.printStackTrace();
		}
		if(null==packageInfo){
			return;
		}	
		Intent resolveIntent=new Intent();
		resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
		resolveIntent.setPackage(packageInfo.packageName);		
		List<ResolveInfo> resolveInfoList =getPackageManager().queryIntentActivities(resolveIntent, 0);
		if(null==resolveInfoList){
			return;
		}	
		Iterator<ResolveInfo> iter=resolveInfoList.iterator();
		while(iter.hasNext()){
			ResolveInfo resolveInfo=(ResolveInfo) iter.next();
			if(null==resolveInfo){
				return;
			}		
			String packageName=resolveInfo.activityInfo.packageName;
			String className=resolveInfo.activityInfo.name;
			Intent intent=new Intent(Intent.ACTION_MAIN);                       
			intent.addCategory(Intent.CATEGORY_LAUNCHER);
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			ComponentName cn=new ComponentName(packageName, className);
			intent.setComponent(cn);
			startActivity(intent);
		}//while
	}//method

考虑到三星的部分机型不吃MediaStore.ACTION_IMAGE_CAPTURE这套,但是却吃MediaStore.ACTION_IMAGE_CAPTURE_SECURE,前后只是多了一个SECURE。因此稍作修改,完整方法如下(目前我手上的机型都支持,包括Vivo、魅族、三星、锤子、小米、Nexus、索尼、HTC)

//启动相机
	private void launchCamera()
	{
		try{
			//获取相机包名
			Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
			ResolveInfo res = mContext.getPackageManager().
					 resolveActivity(infoIntent, 0);
            if (res != null) 
            {
            	String packageName=res.activityInfo.packageName;
            	if(packageName.equals("android"))
            	{
            		infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE);
					res = mContext.getPackageManager().
							 resolveActivity(infoIntent, 0);
					if (res != null)
						packageName=res.activityInfo.packageName;
            	}
            	//启动相机
            	startApplicationByPackageName(packageName);
            }
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}

//通过包名启动应用
	private void startApplicationByPackageName(String packName)
	{
		PackageInfo packageInfo=null;
		try{
			packageInfo=mContext.getPackageManager().getPackageInfo(packName, 0);
		}catch(Exception e){
			e.printStackTrace();
		}
		if(null==packageInfo){
			return;
		}	
		Intent resolveIntent=new Intent();
		resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
		resolveIntent.setPackage(packageInfo.packageName);		
		List<ResolveInfo> resolveInfoList =mContext.getPackageManager().queryIntentActivities(resolveIntent, 0);
		if(null==resolveInfoList){
			return;
		}	
		Iterator<ResolveInfo> iter=resolveInfoList.iterator();
		while(iter.hasNext()){
			ResolveInfo resolveInfo=(ResolveInfo) iter.next();
			if(null==resolveInfo){
				return;
			}		
			String packageName=resolveInfo.activityInfo.packageName;
			String className=resolveInfo.activityInfo.name;
			Intent intent=new Intent(Intent.ACTION_MAIN);                       
			intent.addCategory(Intent.CATEGORY_LAUNCHER);
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			ComponentName cn=new ComponentName(packageName, className);
			intent.setComponent(cn);
			mContext.startActivity(intent);
		}//while
	}//method
		




Android拍照的方式:调用系统相机、自定义 Camera 相机、相册、拍照 阅读详情

相关推荐

h5调用安卓原生相机、相册、电话、录像,且兼容安卓系统8.0

前言        安卓原生组件webview加载h5的URL,若要h5调用安卓原生相机和相册有效需要做以下操作。        测试机:魅蓝note2  系统5.1.1                      华为荣耀畅玩7x  系统8.0.0 一、h5页面相关       方便与安卓原生代码相对应且拿到相对应的file值,避免之后不必要的不匹配麻烦。 1、标签设置 [相机、相册]...

c_TOY的博客 9357

Android---打开相机拍照

打开系统相机进行拍照

qq_44950283的博客 3469

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

安卓调用系统相机录像并上传到后端服务器写在前面一、录像上传的思路二、添加相关权限三、按钮设置监听,调用相机录像并回调1、按钮设置监听:2、调用代码3、回调代码(划重点奥)最后: 写在前面 这段时间接了个安卓功能,把扔了很久的安卓又复习了一遍。其实就是个调用相机录像上传的功能。但是要注意的是系统自带的相机会出现几个无法避免的问题,那就是像素无法具体控制,可以简单调参数,如果对文件大小和像素没有特殊要求的,也可采用此方案,这里简单介绍一下 调用系统相机优点: 界面比较美观,功能相对完善。毕竟系统自带的相机。

Mr_Van的博客 5441

安卓开发-调用相机

安卓开发-调用相机详细案例

A4545156的博客 4450

Android 调用系统相机 失败

最近花了几个小时淌了这个坑,记录下了 Android 调用系统相机 这里我就不详细介绍了直接贴代码: 在拍照按钮的回调中加入如下代码: Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri imgUri = createImgUri(); //Uri imgUri = Uri.parse(...

Bear_861110453的专栏 2465

【android开发-21】android中调用系统摄像头camera拍照和相册的用法详解

android中调用系统camera和相册的用法参考代码

jiangchaobing_2017的博客 2663

Android之如何打开系统相机

为什么要打开系统相机呢? 因为现在的APP差不多都要求打开系统相机来拍照,这个需求还是蛮广的~所以就有了调用系统相机这一个功能~ 如何打开系统相机呢? 步骤如下: 1.先加权限吧~ 2.写了俩个不同的打开相机的方法:   (1)传回原图:

重心开始,重新开始 1838

Unidbg补环境实战:复现Shopee风控Native层运行环境

Android App风控已从HTTP层签名校验,演进为深度依赖Native层系统调用与硬件特征的多维验证。其核心原理在于通过JNI桥接Java与Native代码,调用openat、sysconf、getrandom等系统接口读取/proc、/sys、/dev等路径的真实状态,并结合SELinux策略、CPU拓扑、分区哈希等硬性指标构建设备可信画像。这种技术架构显著提升了对抗黑灰产的能力,但也对逆向分析与自动化调用提出更高要求——必须精准模拟底层环境而非仅Hook逻辑。Unidbg补环境正是为此而生:它支持

weixin_30533109的博客 636

Android 相机教程,安卓应用开发调用系统相机教程

当一些应用要上传图片和视频时常常要调用常常会调用安卓系统的相机来照相和录像,也可以利用安卓系统提供的API自己实现照相和录像功能,下面是学习啦小编给大家整理的一些有关安卓应用开发调用系统相机教程,希望对大家有帮助!安卓应用开发调用系统相机教程启动系统相机:图中代码可以启动系统相机照相机,new了Intent之后,设置好Actionadd和Category后调用startActivity(inten...

weixin_42353996的博客 2156

【TiktokAPI】Tiktok直播API与实时互动功能开发完全指南

Tiktok直播API允许开发者创建、管理直播,并实现各种互动功能。/*** 获取Tiktok直播API访问令牌* @param {string} client_id - 应用ID* @param {string} client_secret - 应用密钥* @param {string} code - 授权码* @param {string} redirect_uri - 重定向URI* @returns {Promise<object>} 访问令牌响应*/try {}),

Mageia的专栏 3191

保姆级教程:在Android车机上从零配置USB Gadget,搞定CarPlay有线连接

本文详细介绍了在Android车机上从零配置USB Gadget以实现CarPlay有线连接的完整实践指南。涵盖内核驱动开发、Android系统配置及用户空间通信架构,帮助开发者深入理解USB子系统和iAP2协议栈,实现稳定可靠的CarPlay有线连接功能。

weixin_30621711的博客 472

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

安卓调用系统相机进行拍照 调用系统相机进行拍照的话,步骤比较简单,分为两步 使用隐式Intent打开相机 在onActivityResult回调中对图片进行处理 (传回来的图片分为缩略图和原图,缩略图比较小可以直接进行展示,原图比较大,需要传输到文件中显示) 拍照获取缩略图 <ImageView android:layout_width="200dp" android:layout_height="200dp" android:layout_cen

qq_47625961的博客 4119

DSP28377内存不够用?手把手教你合并RAM/FLASH块,解决CCS20链接器报错

本文详细介绍了在CCS20开发环境中解决DSP28377内存不足问题的方法,通过合并RAM/FLASH块优化CMD文件配置,有效解决链接器报错。文章包含内存布局对比、改写步骤、FreeRTOS集成注意事项及调试技巧,帮助开发者提升内存利用率与项目性能。

weixin_42524762的博客 143

android开发调用系统相机

Android开发中的系统相机调用教程 在Android开发中,调用系统相机拍照是一个常见的需求。本文将介绍如何在Android应用中实现这一功能,包括相关代码示例、必要的权限声明以及使用注意事项。本文还将提供一个简单的甘特图,帮助理解整个过程的步骤与时间安排。 1. 准备工作 首先,我们需要在AndroidManifes...

weixin_41073450的博客 518

Eclipse 数据空间组件(EDC)项目介绍

在当今数字经济的背景下,数据成为了新的“石油”。但与石油不同的是,数据可以无限共享且再生。然而,如何在保持数据主权的前提下实现高效、安全的数据共享,成为了企业和组织面临的主要挑战。这时,**Eclipse 数据空间组件(Eclipse Dataspace Components, EDC)**应运而生,它为企业在多方参与的数据交换中提供了一个标准化、可扩展的解决方案。数据空间不仅是一个多组织间的数据共享协议,还是一套支撑这些协议运行的技术基础设施。

m0_74331272的博客 4597

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

安卓关于调用系统相机的问题

软件屋的小项目调用相机不成功是因为没有在系统设置中为应用打开相机使用期限 下面是百度上找到的关于安卓7.0之后的手机版本调用相机方法 1.现象 在项目中调用相机拍照和录像的时候,android4.x,Android5.x,Android6.x均没有问题,在Android7.x下面直接闪退 2.原因分析 Android升级到7.0后对权限又做了一个更新即不允许出现以file://的形式调用隐式APP...

weixin_44827506的博客 352

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2658

Android 调用系统相册、系统相机拍照

Android 调用系统相册、系统相机拍照

OneGreenHand的博客 2366

手把手教你如何在应用宝的Android模拟器安装第三方应用方法

通过上述步骤,你就能在腾讯应用宝模拟器中安装并运行本地的第三方APK应用了。虽然稍显繁琐,但操作起来并不复杂,只要按照步骤一步步做,就能顺利完成。希望这篇文章能帮助到遇到类似问题的你!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7208

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[Android多媒体一]调用系统相机拍照并存储到指定位置,适配安卓 7.0

项目里想添加几个小功能,拍照、录像、录音。都是调用系统的多媒体,拍摄、录制完毕也不能不管,应该将他们都存储到手机上,方便日后查看、使用。但是开发过程并不是一蹴而就,也是查阅了很多资料,向大佬请教了很多,才成功实现了功能,并且由于是Android 7.0的系统,相比以前的版本对文件的管理更加复杂。下面直接进入正题。一、准备创建项目后,还需要做什么准备?不是一顿敲就完事了吗?为了适配7.0的系统,确实...

樱_花_庄 6509

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

安卓调用系统相机相册

场景需求是安卓与js交互调用手机的相机与相册获取图片,将图片转成base64总结调用系统相机和相册的关键步骤,强调权限管理和文件URI处理的重要性。

清醒的博客 666

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android代码调用相机,Android如何调用系统相机拍照

本文实例为大家分享了Android调用系统相机拍照的具体代码,供大家参考,具体内容如下/*** 调用系统相机*/private void takePhoto() {Uri uri = null;if (which_image == FRONT_IMAGE) {frontFile = new File(getSDPath() +"/test/front_" + getDate() + ".jpg")...

weixin_39634876的博客 646

Android 9调用系统系统相机,系统图库

Android x 调用系统相机,系统图库 随着Android版本的不断升级,好多的系统方法以及调用都已经过时,造成无法实现预期的效果,本文实现对系统相机,系统图库封装,可以在Android 9.0之上实现,下来看具体实现方法。 因为在android 6.0之后,需要动态的申请调用相机和图库的权限,否则无法调起相机,所以首先我们对权限管理进行封装: PermissionManager public...

loserOr的博客 2321

安卓相机之——调用系统相机

调用安卓系统的相机,并保存相机拍下的图片。实现方法如下。新建一个module,在activity_main布局中,添加一个button按键,这个按键为启动相机的按键。并添加一个imageview,来显示拍下的图片。activity_main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sc

Chase_Java的博客 809

Android调用系统相机程序

一、请求相机功能 声明你的应用依赖于相机,请在清单文件中添加 uses-feature 代码: <manifest ... > <uses-feature android:name="android.hardware.camera" android:required="true" /> ... </manifest> 如果你的应用使用相机,但不需要相机也可以正常运作,应将 android:required 设为 fa.

旭哥的专栏 3826
上一篇: Android获取系统启动器、电话、短信和相机包名
下一篇: Android/Java 汉字转拼音(英文同样适用)
冒泡彩虹
博客等级 码龄14年 17粉丝 29原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值