Android 多媒体
注意读写权限问题!
动态申请权限:
调用摄像头:
首先这里创建了一个File 对象,用于存储摄像头拍下的图片,这里我们把图片命名为output_image.jpg ,
并将它存放在手机SD 卡的根目录下,
调用Environment 的getExternalStorageDirectory()方法获取到的就是手机SD 卡的根目录。
然后再调用Uri 的 fromFile()方法将File 对象转换成Uri 对象,这个Uri 对象标识着output_image.jpg 这张图片的唯一地址。
接着构建出一个Intent对象,并将这个Intent的action指定为android.media.action. IMAGE_CAPTURE,
再调用Intent 的putExtra()方法指定图片的输出地址,这里填入刚刚得到的Uri 对象,
最后调用startActivityForResult()来启动活动。
由于我们使用的是一个隐式 Intent,系统会找出能够响应这个Intent 的活动去启动,这样照相机程序就会被打开,拍下的照片将会输出到output_image.jpg 中。
注意刚才我们是使用startActivityForResult()来启动活动的,因此拍完照后会有结果返回到onActivityResult()方法中,这个时候我们就可以调用BitmapFactory 的decodeStream()方法将output_image.jpg 这张照片解析成Bitmap 对象,然后把它设置到ImageView 中显示出来。
调用相册:
为了兼容新老版本的手机,我们做了一个判断,如果是4.4及以上系统的手机就调用handleImageOnKitKat()方法来处理图片,否则就调用handleImageBeforeKitKat()方法来处理图片。之所以要这么做,是因为Android系统从4.4版本开始,选取相册的图片不再返回图片真是的Uri了,而是一个封装过的Uri,因此如果是4.4版本以上的手机需要对这个Uri进行解析才行。
播放音频:
创建MediaPlayer对象;
调用setDataSource设置音频文件路径
在调用prepare方法使mediaPlayer进入准备状态
调用start开始播放、pause暂停播放、stop停止播放
播放视频:
主要应用VideoView控件完成
与播放音频基本相同
//设置播放源(非SD卡)
video_view.setVideoURI(Uri.parse("android.resource://com.example.ts.myapplication/" + R.raw.video0));
//SD卡根目录下
File file = new File(Environment.getExternalStorageDirectory(),"movie.mp4");
video_view.setVideoPath(file.getPath());