安卓调用系统录像功能:1、启动录像返回视频,2、启动录像将视频存储在指定路径下

来源:互联网 发布:如何加入淘宝客? 编辑:程序博客网 时间:2024/05/17 21:53

全栈工程师开发手册 (作者:栾鹏)

安卓教程全解

安卓调用系统录像功能,两种方式获取拍摄的视频。

1、启动系统录像intent,并直接返回视频数据

2、启动系统录像intent,录像后存储在指定的路径下,返回后app主动读取路径下的视频文件。


第一种方式:启动系统相机录像,返回视频数据

  private static final int RECORD_VIDEO = 0;  private void takevideo() {    //生成Intent.    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);    //启动摄像头应用程序    startActivityForResult(intent, RECORD_VIDEO);  }

第二种方式:启动系统录像,视频存储到指定路径下

 //使用一个intent请求录像,视频存储在指定位置  private Uri outputFileUri;    private static final int RECORD_VIDEO_SAVE = 1;  public void takevideo_save() {    //创建输出文件      File file = new File(Environment.getExternalStorageDirectory(),"test.mp4");  //存放在sd卡的根目录下      outputFileUri = Uri.fromFile(file);      //生成Intent.      Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);      //启动摄像头应用程序      startActivityForResult(intent, RECORD_VIDEO_SAVE);  }

接收系统录像的事件的返回结果(1返回视频数据,2返回视频地址)

除了可以根据返回的intent,也可以根据请求码来区别。

对于包含视频数据的,直接将数据给VideoView播放,对于不包含视频数据的这判定为存储在了指定位置。通过uri获取视频路径,将地址给VideoView播放。

  //1、获取录制视频使用VideoView播放,2、获取视频存储地址  @Override  protected void onActivityResult(int requestCode,int resultCode, Intent data) {      //读取直接返回的视频数据    if (requestCode == RECORD_VIDEO) {          VideoView videoView = (VideoView)findViewById(R.id.activity1_video1);          Uri uri=data.getData();          videoView.setVideoURI(uri);           videoView.start();          Log.v("系统录像", "直接返回视频数据"+uri.getPath());    }    //读取指定路径的视频文件    else if (requestCode == RECORD_VIDEO_SAVE) {        VideoView videoView = (VideoView)findViewById(R.id.activity1_video1);        videoView.setKeepScreenOn(true);        String path = outputFileUri.getPath();        String path1=Environment.getExternalStorageDirectory()+"/test.mp4";        videoView.setVideoPath(path1);        Log.v("系统录像", path+"读取"+path1+"下的视频文件");    }  } 
阅读全文
1 0
原创粉丝点击