当前位置 : 主页 > 编程语言 > java >

android如何浏览并选择图片、音频 、视频

来源:互联网 收集:自由互联 发布时间:2021-06-28
android如何浏览并选择图片、音频 、视频 // 选取图片按钮单击事件 public void click_xuanqutupian(View source) { Intent intent = new Intent(); /* 开启Pictures画面Type设定为image */ intent.setType(“image/*”);
android如何浏览并选择图片、音频 、视频
// 选取图片按钮单击事件  
public void click_xuanqutupian(View source) {  
 Intent intent = new Intent();  
 /* 开启Pictures画面Type设定为image */  
 intent.setType(“image/*”); 
 //intent.setType(“audio/*”); //选择音频 
 //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android支持的视频格式) 
 //intent.setType(“video/*;image/*”);//同时选择视频和图片   
 /* 使用Intent.ACTION_GET_CONTENT这个Action */  
 intent.setAction(Intent.ACTION_GET_CONTENT);  
 /* 取得相片后返回本画面 */  
 startActivityForResult(intent, 1);  
}  


	/**
	 * 选择照片
	 */
	protected void doPickPictures()
	{
			Intent intent = new Intent(Intent.ACTION_PICK);
			intent.setType("image/*");// 相片类型
			((Activity) getContext()).startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
	}
	
	/**
	 * 选择视屏
	 */
	private void doPickVideos()
	{
		Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
		((Activity) getContext()).startActivityForResult(intent, REQUEST_VIDEO_CODE);
	}
	

   /**
   * activity回调
   */

	@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_VIDEO_CODE) {
            if (resultCode == RESULT_OK) {
                Uri uri = data.getData();
                ContentResolver cr = this.getContentResolver();
                /** 数据库查询操作。
                 * 第一个参数 uri:为要查询的数据库+表的名称。
                 * 第二个参数 projection : 要查询的列。
                 * 第三个参数 selection : 查询的条件,相当于SQL where。
                 * 第三个参数 selectionArgs : 查询条件的参数,相当于 ?。
                 * 第四个参数 sortOrder : 结果排序。
                 */
                Cursor cursor = cr.query(uri, null, null, null, null);
                if (cursor != null) {
                    if (cursor.moveToFirst()) {
                        // 视频ID:MediaStore.Audio.Media._ID
                        int videoId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
                        // 视频名称:MediaStore.Audio.Media.TITLE
                        String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
                        // 视频路径:MediaStore.Audio.Media.DATA
                        String videoPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
                        // 视频时长:MediaStore.Audio.Media.DURATION
                        int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));
                        // 视频大小:MediaStore.Audio.Media.SIZE
                        long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));

                        // 视频缩略图路径:MediaStore.Images.Media.DATA
                        String imagePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
                        // 缩略图ID:MediaStore.Audio.Media._ID
                        int imageId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
                        // 方法一 Thumbnails 利用createVideoThumbnail 通过路径得到缩略图,保持为视频的默认比例
                        // 第一个参数为 ContentResolver,第二个参数为视频缩略图ID, 第三个参数kind有两种为:MICRO_KIND和MINI_KIND 字面意思理解为微型和迷你两种缩略模式,前者分辨率更低一些。
                        Bitmap bitmap1 = MediaStore.Video.Thumbnails.getThumbnail(cr, imageId, MediaStore.Video.Thumbnails.MICRO_KIND, null);

                        // 方法二 ThumbnailUtils 利用createVideoThumbnail 通过路径得到缩略图,保持为视频的默认比例
                        // 第一个参数为 视频/缩略图的位置,第二个依旧是分辨率相关的kind
                        Bitmap bitmap2 = ThumbnailUtils.createVideoThumbnail(imagePath, MediaStore.Video.Thumbnails.MICRO_KIND);
                        // 如果追求更好的话可以利用 ThumbnailUtils.extractThumbnail 把缩略图转化为的制定大小
//                        ThumbnailUtils.extractThumbnail(bitmap, width,height ,ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
                        setText(tv_VideoPath, R.string.path, videoPath);
                        setText(tv_VideoDuration, R.string.duration, String.valueOf(duration));
                        setText(tv_VideoSize, R.string.size, String.valueOf(size));
                        setText(tv_VideoTitle, R.string.title, title);
                        iv_VideoImage.setImageBitmap(bitmap1);
                    }
                    cursor.close();
                }
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
上一篇:gitignore
下一篇:获取本机的IP
网友评论