安卓多媒體相機及攝像機的數據處理

1.打開圖庫:Intent.ACTION_PICK
2.打開照相機:MediaStore.ACTION_IMAGE_CAPTURE
3.打開攝像機:MediaStore.ACTION_VIDEO_CAPTURE
4.圖庫內容提供者: uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI
字段:MediaStore.Images.Media.DATA 代表圖片的路徑

設置靜態常量,標記對回傳的請求碼
public static final int PIC_CODE=101;//圖庫請求碼
public static final int VIDEO_CODE=102;//攝像機請求碼
public static final int CAMERA_CODE=103;//照相機請求碼

1.打開相機

private void open_camera() {
  	//創建Intent對象
    Intent intent = new Intent();
    //設置動作
    intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
    //手動保存圖片
    long l = System.currentTimeMillis();
    file = new File("/sdcard/"+l+".jpg");
    //使用內容提供者將圖片插入到指定file
    ContentResolver contentResolver = getContentResolver();//獲得內容解析者
    ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.Images.Media.DATA,file.getAbsolutePath());
    Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    //設置一個輸出參數,保證圖片存入圖庫中
    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);//設置文件輸出uri,必須設置 不然照片不能保存到圖庫中
    //開啓intent
    startActivityForResult(intent,CAMERA_CODE);
}

2.打開攝像機

private void open_video() {
    //創建intent意圖對象
    Intent intent = new Intent();
    //設置一個動作
    intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
    //啓動intent
    startActivityForResult(intent,VIDEO_CODE);
}

3.打開圖庫

private void open_pic() {
    //創建intent意圖對象
    Intent intent = new Intent();
    //設置一個動作
    intent.setAction(Intent.ACTION_PICK);
    intent.setType("image/*");//打開所有的圖片 如果設置爲video/* 打開所有視頻
    startActivityForResult(intent,PIC_CODE);
}

4.回傳對數據的處理

/***
 *
 * @param requestCode  請求碼
 * @param resultCode  結果碼  OK
 * @param data   返回的數據:包含選擇照片
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==PIC_CODE&&resultCode== Activity.RESULT_OK){//請求碼對應,結果碼是OK
        //獲得數據
        Uri data1 = data.getData();
        //將uri展示在ImageView
        imageView.setImageURI(data1);
    }else if(requestCode==VIDEO_CODE&&resultCode==Activity.RESULT_OK){
        Uri data1 = data.getData();
        Toast.makeText(this, ""+data1, Toast.LENGTH_SHORT).show();
        videoView.setVideoURI(data1);//設置資源
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {//準備完畢
            @Override
            public void onPrepared(MediaPlayer mp) {
                videoView.start();//播放視頻
            }
        });
    }else if(requestCode==CAMERA_CODE&&resultCode==Activity.RESULT_OK){
        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
        imageView.setImageBitmap(bitmap);
    }
}
項目理解:
1.在我們選中,跳轉的時候intent,會帶着我們選中的Uri,我們可以通過Uri來獲取我們想要的數據
2.在保存照片,或者視頻做跳轉的時候,Intent或帶着這個值存儲的,數據庫,
通過Uri來獲取Data,
3.相機沒有儲存的功能所以必須有我們自己創建添加到數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章