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


概述

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


通过Itent实现拍录制视频

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

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

[html]  view plain  copy
  1. <uses-feature android:name="android.hardware.camera" android:required="false" />  
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
  3.     

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

[java]  view plain  copy
  1. import java.io.File;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.net.Uri;  
  7. import android.os.Bundle;  
  8. import android.os.Environment;  
  9. import android.provider.MediaStore;  
  10. import android.widget.Toast;  
  11.   
  12. public class AndroidCameraActivity extends Activity {  
  13.     private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200;    
  14.         
  15.     private Intent intent  = null;    
  16.     private Uri fileUri    = null;    
  17.     
  18.     @Override    
  19.     protected void onCreate(Bundle savedInstanceState) {    
  20.         super.onCreate(savedInstanceState);    
  21.         setContentView(R.layout.main);    
  22.             
  23.         intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//create a intent to record video    
  24.         fileUri = getOutputMediaFileUri(); // create a file Uri to save the video  
  25.           
  26.         // set the video file name  
  27.         intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);     
  28.           
  29.         // set the video quality high  
  30.         intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);   
  31.   
  32.         // start the video capture Intent  
  33.         startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);    
  34.     }    
  35.     
  36.     @Override    
  37.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
  38.         super.onActivityResult(requestCode, resultCode, data);    
  39.             
  40.         if(requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {    
  41.             if (resultCode == RESULT_OK) {    
  42.                 // video captured and saved to fileUri specified in the Intent    
  43.                 Toast.makeText(this"Video saved to:\n" +    
  44.                          data.getData(),     
  45.                          Toast.LENGTH_LONG).show();    
  46.             } else if (resultCode == RESULT_CANCELED) {    
  47.                 // User cancelled the video capture    
  48.             }    
  49.         }    
  50.     }    
  51.         
  52.     /** Create a File Uri for saving a video */    
  53.     private static Uri getOutputMediaFileUri(){    
  54.         //get the mobile Pictures directory  
  55.         File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);  
  56.   
  57.         //get the current time  
  58.         String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());   
  59.           
  60.         File videoFile = new File(picDir.getPath() + File.separator + "VIDEO_"+ timeStamp + ".mp4");    
  61.     
  62.         return Uri.fromFile(videoFile);  
  63.     }    
  64. }  


第四步:运行程序。


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

参考资料

  1. http://developer.android.com/guide/topics/media/camera.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值