设为首页 加入收藏

TOP

Android开发之打开闪光灯录制视频(一)
2015-07-16 12:57:40 来源: 作者: 【 】 浏览:45
Tags:Android 开发 打开 闪光灯 录制 视频

  首先在工程中的AndroidManifest.xml中添加权限声明,因为要使用到摄像头,故需要添加Camera的相关权限,另外还需要写SD卡的权限,如果同时需要录制音频,则还需要添加RECORD_AUDIO权限。







  再来分析下要使用到的类,录制视频使用的MediaRecorder类,官方给出了调用MediaRecorder录制视频的一个简单状态机,展示了各个状态之间的转化。然后也给出了一个简单的调用方法,代码如下:



MediaRecorder recorder = new MediaRecorder();
?recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
?recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
?recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
?recorder.setOutputFile(PATH_NAME);
?recorder.prepare();
?recorder.start();? // Recording is now started
?...
?recorder.stop();
?recorder.reset();? // You can reuse the object by going back to setAudioSource() step
?recorder.release(); // Now the object cannot be reused


录制视频是调用MediaRecorder类,但API中真正介绍如何录制视频的一般步骤却被放在了Camera类中,在线API上有句话提示“For more information about how to use MediaRecorder for recording video, read the?Camera?developer guide.”。转到Camera类去看看。


  Camera类是用来控制照相机的,没错,就是这个类。照相机可以用来拍照,也可以用来录制视频(也叫捕捉视频),但是录制视频需要按照一定的步骤来编写程序,不然发生运行时错误是非常正常的。录制视频需要调用Camera和MediaRecorder类,下面说说一般步骤。


  1) 打开照相机。直接调用Camera.open()来获取一个Camera的实例。


  2) 设置预览控件。一般是设置在SurfaceView上面,通过调用Camera.setPreviewDisplay()来完成,但是这一步也可以放到MediaRecorder类DataSourceConfigured步骤中完成。


  3) 开启预览。调用Camera.startPreview()。


  4) 开始录制视频。为了确保你录制成功,请务必按要求完成下面的步骤。


    A. 解锁照相机。通过调用Camera.unlock()解锁照相机,以便照相机被MediaRecorder使用。


    B. 设置MediaRecorder。


      这里有一系列的设置,根据需要设置吧。比如说,你只需要录制视频,就不必设置音频的输入源,也就不用设置音频的编码方式。对应于MediaRecorder state diagram中的Initialized和DataSourceConfigured。具体方法调用可以查看Android在线API的MediaRecorder类,上文已经将主要的代码贴出,下文还会贴出实例代码,这里就不详细介绍了。


    C. 准备MediaRecorder。在调用MediaRecorder.prepare()之前一定要先设置好MediaRecorder对象的各项属性,后面设置会引发运行时错误。


    D. 开始MediaRecorder。调用MediaRecorder.start()之后,就开始录制视频了。


  5) 停止录制。


    A. 停止MediaRecorder。调用MediaRecorder.stop()停止录制。


    B. 恢复MediaRecorder的默认设置。调用MediaRecorder.reset()来取消你对MediaRecorder所做的设置,但调用玩之后,MediaRecorder对象还是可以再次使用的。


    C. 释放MediaRecorder对象。调用MediaRecorder.release()释放资源,之后该MediaRecorder对象销毁了,再调用会出错。


    D. 给Camera上锁。为了后面的MediaRecorder对象可以再次使用,需要调用Camera.lock(),Android 4.0以后,这个操作并不是必须的,除非MediaRecorder.prepare()调用失败。


  6) 停止预览,调用Camera.stopPreview()。


  7) 释放照相机资源,调用Camera.release()。


  以上就是打开照相机录制视频的一般步骤,当然你可以可以在录制之前实现预览,决定什么时间开始录制,这个其实可以先开启照相机进行预览即可然后,需要录制时调用Camera.unlock(),然后按流程接入MediaRecorder进行录制。现在考虑第一种情况,直接开始录制。


  权限要求已经贴出来了,再贴个布局文件,recordvideo.xml。



? ? android:layout_width="fill_parent"
? ? android:layout_height="fill_parent"
? ? android:background="#ffffff"
? ? android:orientation="vertical" >


? ? ? ? ? ? android:id="@+id/surfaceView"
? ? ? ? android:layout_width="fill_parent"
? ? ? ? android:layout_height="220dip" />


? ? ? ? ? ? android:layout_width="fill_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:layout_marginLeft="5dp"
? ? ? ? android:layout_marginRight="5dp"
? ? ? ? android:layout_marginTop="20dp"
? ? ? ? android:gravity="right"
? ? ? ? android:orientation="horizontal" >


? ? ? ? ? ? ? ? ? ? android:id="@+id/rv_testusername"
? ? ? ? ? ? android:layout_width="156dp"
? ? ? ? ? ? android:layout_height="wrap_content"
? ? ? ? ? ? android:layout_weight="0.27"
? ? ? ? ? ? android:ems="10"
? ? ? ? ? ? android:hint="输入姓名或标识" />


? ? ? ? ? ? ? ? ? ? android:id="@+id/rv_record"
? ? ? ? ? ? style="@style/mainactivitybtnstyle"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android平台之不预览获取照相机预.. 下一篇Android设置选项开发及自定义Pref..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: