Android Camera系列开发 (二)通过Intent录制视频

作者:雨水  2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/

概述

使用Camera有两种方式:通过Intent方式和通过Camera的API。在开发系列(一) 中已经介绍了通过Intent方式拍照,本文介绍通过Intent的方式录制视频。

通过Itent实现拍录制视频

第一步:在Eclipse中创建一个名为AndroidCamera的Android工程,可参见Helloworld的例子;

第二步:在AndroidManifest.xml中添加使用Camera相关的声明如下:

 <uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第三步:编写
AndroidCameraActivity类,如下:
\

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.widget.Toast; public class AndroidCameraActivity extends Activity {
private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200; private Intent intent = null;
private Uri fileUri = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//create a intent to record video
fileUri = getOutputMediaFileUri(); // create a file Uri to save the video // set the video file name
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the video quality high
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // start the video capture Intent
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); if(requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// video captured and saved to fileUri specified in the Intent
Toast.makeText(this, "Video saved to:\n" +
data.getData(),
Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the video capture
}
}
} /** Create a File Uri for saving a video */
private static Uri getOutputMediaFileUri(){
//get the mobile Pictures directory
File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); //get the current time
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File videoFile = new File(picDir.getPath() + File.separator + "VIDEO_"+ timeStamp + ".mp4"); return Uri.fromFile(videoFile);
}
}

第四步:运行程序。

运行程序会出现录制视频的窗口,录制保存后可以即可在SD卡的Pictures目录下找到刚才录制的视频。

参考资料

  1. http://developer.android.com/guide/topics/media/camera.html

Android Camera系列开发 (二)通过Intent录制视频的更多相关文章

  1. Android开发之打开闪光灯录制视频

    Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序 ...

  2. Android Studio系列教程二--基本设置与运行

    Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...

  3. 【转】Android Camera 相机开发详解

    在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动, 但是基于众所周知的原因,我们还必须基于 Android ...

  4. android camera 自定义开发

    1.检测是否有摄像头 /** Check if this device has a camera */ private boolean checkCameraHardware(Context cont ...

  5. Android 流媒体系列(二)

    import java.io.IOException; import android.app.Activity; import android.content.ContentResolver; imp ...

  6. Android 实践项目开发二

    在地图开发中项目中,我这周主要完成的任务是和遇到的问题是以下几个方面. 1.在本次的项目中主要是利用百度地图的.jar包实现地图的定位与搜索功能,需要在百度地图开发中心网站取得 密钥,并下载相关.ja ...

  7. 第一行Kotlin系列(二)Intent隐式显式跳转及向下传值

    1.Intent显式跳转页面 val button5 = findViewById<Button>(R.id.mButton5) button5.setOnClickListener { ...

  8. (Android学习系列)二,窗口(Activity)的生命周期

    在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceSta ...

  9. Django系列---开发二

    django.contrib.auth Django的用户验证框架,可以快速实现用户信息验证.登录.登出等用户操作 from django.contrib.auth import authentica ...

随机推荐

  1. r语言之生成规则序列,规则序列函数及用法

    在生成序列时,“:”的优先级最高 (1)从1到20的整数序列: > 1:20 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (2) ...

  2. java web中jsp连接mysql数据库 以及数据库连接池的使用

    将mysql-connector-java-5.1.6-bin.jar导入到tomcat的lib目录下. 在java项目中,只需要引入mysql-connector-java-5.1.6-bin.ja ...

  3. html一些东东

    在IE浏览器中,当input获得焦点时,点击有unselectable="on"属性的标签时,不会触发onblur事件 在 IE11 下,浏览器自作多情在 text input 组 ...

  4. cocos2dx进阶学习之CCBI文件

    在马里奥这个游戏里,我们用到了几个ccbi文件,比如蘑菇怪,马里奥等,下面是加载马里奥代码

  5. Android Touch事件传递机制具体解释 上

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/37961997 近期总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,曾经 ...

  6. ThinkPHP - I 函数

    ThinkPHP函数详解:I方法   浏览:144722 发布日期:2013/06/01 分类:文档教程 关键字: 函数 ThinkPHP的I方法是3.1.3版本新增的,如果你是之前的3.*版本的话, ...

  7. linux中/etc与/var目录,各是什么意思?这两个目录下的文件有什么特点?

    http://zhidao.baidu.com/link?url=DkxU9CyhJb_dIUAPCmPmxRtQsENgCzqy5qnLPEj_V9DqNzdt6Qya0U5iCVRCYFkgoRo ...

  8. javascript date部分

    <html> <body> <script type="text/javascript"> var d=new Date() var weekd ...

  9. Android:ListViewAdapter

    MainActivity: package com.wyl.listview; import java.util.ArrayList; import java.util.HashMap; import ...

  10. Android 中 ListView 常用属性合集

    class ListView.FixedViewInfo//用来在列表内展现一个固定位置视图,如在列表顶端的header和在列表底端的footer 一.XML属性 1.ListView的XML属性 a ...