Android中级第十讲--相机录像和查看系统相册图片

简介:                      博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 录像比较简单,开始录制:myCamera.



                     博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 


录像比较简单,开始录制:

myCamera.unlock();
initVideo();
video_stop.setVisibility(View.VISIBLE);
// 设置视频文件输出的路径
String dir = CWFileUtil.getSaveVideoPath();
File dirFile = new File(dir);
if (!dirFile.exists()) {
if (!dirFile.mkdirs()) {
return;
}
}
File file = new File(dir, System.currentTimeMillis() + ".3gp");
mediarecorder.setOutputFile(file.getAbsolutePath());
try {
// 准备录制
mediarecorder.prepare();
// 开始录制
mediarecorder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


void initVideo() {
if (mediarecorder == null) {
mediarecorder = new MediaRecorder();// 创建mediarecorder对象
// 设置录制视频源为Camera(相机)
mediarecorder.setCamera(myCamera);
// 录音源为麦克风
mediarecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4
mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediarecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 设置录制的视频编码h263 h264
mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
// 视频编码
// mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
// 音频编码
// mediarecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 预览
mediarecorder.setPreviewDisplay(surfaceView.getHolder()
.getSurface());
// 设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错
mediarecorder.setVideoSize(176, 144);
// 设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错
mediarecorder.setVideoFrameRate(20);
mediarecorder.setPreviewDisplay(surfaceView.getHolder()
.getSurface());
}
}

停止录制:

if (mediarecorder != null) {
mediarecorder.stop();// 停止录制
mediarecorder.release();// 释放资源
mediarecorder = null;
}
myCamera.lock();
video_stop.setVisibility(View.INVISIBLE);

查看系统视频:

Intent videoIntent = new Intent(Intent.ACTION_DEFAULT);
videoIntent.setDataAndTypeAndNormalize(Uri.fromFile(CWFileUtil.getCurrentVideoPath()),
"video/3gp");
context.startActivity(videoIntent);

注意:路径要具体到一个视频,通过这种方式查到最新录制的视频,然后通过系统相册的返回按钮可以查看其他视频。查看图片也是同样原理,只要把查看类型改为"image/*"即可。

但有的时候拍完的照片或者视频未显示,可以采用发方播的形式,让系统加载

正常情况下,用下面方法即可

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(CWFileUtil.getSavePicPath()));
intent.setData(uri);
context.sendBroadcast(intent);

但特殊情况下,这种不管用,可以用下面的方法,不过弱点的显示缓慢

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri

.parse("file://" + CWFileUtil.getScanPicPath())));


目录
相关文章
|
1天前
|
Android开发
Android构建系统:Android.mk(2)函数详解
Android构建系统:Android.mk(2)函数详解
8 1
|
1天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
13 1
|
1天前
|
移动开发 Java Unix
Android系统 自动加载自定义JAR文件
Android系统 自动加载自定义JAR文件
11 1
|
1天前
|
Shell Android开发 开发者
Android系统 自定义动态修改init.custom.rc
Android系统 自定义动态修改init.custom.rc
8 0
|
1天前
|
测试技术 Android开发 开发者
RK3568 Android系统客制化动态替换ro任意属性
RK3568 Android系统客制化动态替换ro任意属性
9 1
|
1天前
|
存储 Linux Android开发
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
RK3568 Android/Linux 系统动态更换 U-Boot/Kernel Logo
11 0
|
1天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
5 0
Android系统 应用存储路径与权限
|
Android开发 数据格式 XML
Android异步加载图片详解之方式二(3)
main.xml如下:   listviewitem.xml如下:   ...
795 0
|
缓存 Java Android开发
Android异步加载图片详解之方式二(2)
FileCache.java如下: package com.cn.loadImages; import java.io.File; import java.
879 0
|
Android开发
Android异步加载图片详解之方式二(1)
MainActivity.java如下: package com.cn.perfectlistview; import java.util.ArrayList; import android.
879 0