Android 调用系统相机拍照和录制视频,保存照片和视频

1、申请权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

java

private static final String[] authBaseArr = {//申请类型Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE
};
private static final int authBaseRequestCode = 1;
private boolean hasBasePhoneAuth() {PackageManager pm = getPackageManager();for (String auth : authBaseArr) {if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;
}private void initNavi() {// 申请权限if (android.os.Build.VERSION.SDK_INT >= 23) {if (!hasBasePhoneAuth()) {this.requestPermissions(authBaseArr, authBaseRequestCode);return;}}
}

2、开始起调相机

private static final int REQUEST_PERMISSION_CODE = 101;
private String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//private String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确
private String ends = "";
                Intent intent = new Intent();// 指定开启系统相机的Actionintent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//图片intent.addCategory(Intent.CATEGORY_DEFAULT);//图片
//                intent.setAction("android.media.action.VIDEO_CAPTURE");//视频
//                intent.addCategory("android.intent.category.DEFAULT");//视频// 根据文件地址创建文件String subForder = SAVE_REAL_PATH;File foder = new File(subForder);if (!foder.exists()) foder.mkdirs();File file = new File(subForder, System.currentTimeMillis() + ".png");//图片
//                File file = new File(subForder, System.currentTimeMillis() + ".mp4");//视频ends = file.getPath();if (file.exists()) {file.delete();}// 把文件地址转换成Uri格式Uri uri = Uri.fromFile(file);// 设置系统相机拍摄照片完成后图片文件的存放地址intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(intent, REQUEST_PERMISSION_CODE);

3、保存图片

调用EXTRA_OUTPUT时,已经保存了图片到文件夹——只是相册不可见

如需相册可见,自定义保存即可

    public void saveBitmapFile(Bitmap bitmap) {File file = new File(ends);//将要保存图片的路径try {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);bos.flush();bos.close();
//            FileOutputStream fos = new FileOutputStream(file);
//            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
//            fos.flush();
//            fos.close();Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);Uri uri = Uri.fromFile(file);intent.setData(uri);this.sendBroadcast(intent);} catch (IOException e) {e.printStackTrace();}}

 录音报错:startRecording() called on an uninitialized AudioRecord.

解决方法如下 

录音权限


    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />  
    <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT"/>  
    <uses-permission android:name="android.permission.RECORD_AUDIO" />  
    <uses-sdk  
        android:minSdkVersion="19"  
        android:targetSdkVersion="19" />  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
 

把apk重新签名为系统应用。

(1)在AndroidManifest.xml文件的application标签中,增加配置:android:sharedUserId="android.uid.system"

 

    packagingOptions{exclude 'META-INF/DEPENDENCIES'exclude 'META-INF/NOTICE'exclude 'META-INF/LICENSE'exclude 'AndroidManifest.xml'
//        exclude 'META-INF/LICENSE.txt'
//        exclude 'META-INF/NOTICE.txt'}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jedis jedispool Redistemplate

jedis jedispool Redistemplate 整理了之前学习 redis 的笔记&#xff0c;强烈建议看最后总结。 在大型系统数据读请求中&#xff0c;基本上90%都可以通过分布式缓存集群来抗下来&#xff0c;而 Redis 又是分布式缓存集群的主要践行者&#xff0c;因此了解 Redis 是必不可少的…

支付宝支付提示 4006 ISV权限不足,建议在开发者中心检查签约是否已经生效

解决方法非常简单&#xff1a; 1、首先登录支付宝商家中心&#xff1a;https://b.alipay.com/index.htm 查看产品中心&#xff0c;对应功能有木有开通&#xff0c;或者签约开通 2、登录支付宝开放平台&#xff1a;https://open.alipay.com/platform/home.htm 查看应用功能列…

剑指Offer-按之字形顺序打印二叉树

package Tree;import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue;/*** 请实现一个函数按照之字形打印二叉树&#xff0c;即第一行按照从左到右的顺序打印&#xff0c;第二层按照从右至左的顺序打印&#xff0c;第三行按照从左到右的顺序打印&a…

android 自定义相机,Camera,相机遮罩层

实现效果&#xff1a; 实现方法&#xff1a;一个自定义view实现demo 一、自定义相机Camera&#xff0c;无API版本限制 &#xff08;1&#xff09;。实现接口 implements SurfaceHolder.Callback private SurfaceView mView;private Camera mCamera; private int cameraId 0;/…

RedisTemplate在项目中的应用

RedisTemplate在项目中的应用 如下主要通去年无聊做的 "涂涂影院后台管理系统" 一个 demo&#xff0c;看 RedisTemplate 的使用。 主要用到地方&#xff1a;视频首页轮播图的获取&#xff0c;以及搜索检索界面&#xff0c;如下图所示&#xff1a; 由于是非maven非sp…

Android 蓝牙开发,搜索蓝牙列表,蓝牙连接,蓝牙通讯

申请打开蓝牙 <!-- 蓝牙权限 --> <uses-permission android:name"android.permission.BLUETOOTH" /> <uses-permission android:name"android.permission.BLUETOOTH_ADMIN" />private final int BLUE_REQUEST_CODE 551; public void s…

jeecg uedit 自定义图片上传路径

jeecg uedit 图片上传配置自定义物理路径&#xff0c;简单描述&#xff1a;我们知道 jeecg 中使用的 uedit 默认图片上传路径为 “当前项目\plug-in\ueditor\jsp\uploadx\日期\图片.png”&#xff0c;但是把图片放在项目中显然是很不友好的&#xff0c;所以我们自定义上传路径。…

OpenFileDialog 打开文件对话框

InitialDirectory 对话框的初始目录 Filter 要在对话框中显示的文件筛选器&#xff0c;例如&#xff0c;"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" FilterIndex 在对话框中选择的文件筛选器的索引&#xff0c;如果选第一项就设为1 RestoreDirectory 控制对话框在关…

了解一下Elasticsearch的基本概念

了解一下Elasticsearch的基本概念 一、前文介绍 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Apache Lucene(TM)的开源搜索引擎&#xff0c;无论在开源还是专有领域&#xff0c;Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。注意&#x…

简单的对象定位与登录实例的简单操作

①元素对应的定位方法&#xff1a; ②登录实例&#xff08;暂不考虑验证环节&#xff09; 注意&#xff1a;在实践过程中出现过&#xff0c;密码输入之后又被清空的情况&#xff0c;应该是被处理过&#xff0c;换个别的简单的登录界面试下看看如果没有出现前面所说的情况&#…

Didn‘t find class “android.view.View$OnUnhandledKeyEventListener“,Didn‘t find class “androidx

Android 新导入的项目&#xff0c;报错&#xff1a; java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rikkathewrold.rikkamusic/com.rikkathewrold.rikkamusic.login.mvp.view.SelectLoginActivity}: java.lang.IllegalStateException: Only fullscr…

百度OCR文字识别API使用心得 com.baidu.ocr.sdk.exception.SDKError[283604]

百度OCR文字识别API使用心得 com.baidu.ocr.sdk.exception.SDKError[283604] 本文转载自好基友upuptop&#xff1a;https://blog.csdn.net/pyfysf/article/details/77455330 效果图&#xff1a; 如下为文章正文&#xff1a; 最近有个小项目使用到了OCR技术&#xff0c;顺便到网…

Android studio ERROR: Software caused connection abort: recv failed 解决方法

使用Android studio打开kotlin项目时报错&#xff1a;ERROR: Software caused connection abort: recv failed 解决方法&#xff1a;修改三个文件即可 1、修改gradle-wrapper.properties 修改为当前Android studio的gradle版本 2、修改项目build.gradle 修改为当前Android st…

VSCode.exe扩展主机意外终止。请重新加载窗口以恢复。

删除D:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\git这个文件夹(根据每个人安装目录的不同而不同) 问题的起因貌似是git没有安装在C盘就会导致VSCode找不到git.exe的路径&#xff0c;从而报错。转载于:https://www.cnblogs.com/fhldbk/p/8629379.html

Android获取手机联系人或通讯录的基本信息(如姓名、电话)

1、添加权限 <uses-permission android:name"android.permission.READ_CONTACTS"/> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name"android.permission.READ_EXTERNAL…

百度OCR文字识别-Android安全校验

百度OCR文字识别-Android安全校验 本文转载自好基友upuptop&#xff1a;https://blog.csdn.net/pyfysf/article/details/86438769 效果图&#xff1a; 如下为文章正文&#xff1a; 百度OCR接口使用总结&#xff1a;之前总结一下关于百度OCR文字识别接口的使用步骤&#xff08;…