Android - 調(diào)用系統(tǒng)相機(jī) (適配Android10)

  1. 相機(jī)拍照
private Uri mImageUri;


//假設(shè)拍照片保存在DCIM公共目錄,為了查看方便,盡可能的將邏輯寫(xiě)在一個(gè)方法里
private void takePicture() {
    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
    String name = System.currentTimeMillis() + ".jpg";
    File file = new File(path,name);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    /**
     *  主要適配的點(diǎn)在mImageUri賦值這里
     */
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        // Android Q得用MediaStore先存一下
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.DISPLAY_NAME,name);
        values.put(MediaStore.Images.Media.RELATIVE_PATH,Environment.DIRECTORY_DCIM);
        values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
        mUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // Android N版本需要用FileProvider
        mUri = FileProvider.getUriForFile(this,getPackageName()+ "fileProvider",file);
    } else {
        // 古老的版本用這個(gè)
        mUri = Uri.fromFile(file);
    }
    // 指定圖片保存的位置
    intent.putExtra(MediaStore.EXTRA_OUTPUT,mUri); 
    startActivityForResult(intent,REQUEST_CODE_CAMERA);
}

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_CAMERA) {
            if (resultCode == RESULT_OK) {
                // 這里就不要用data.getData()了,有可能返回空。
                // 直接用之前的mUri
                // 低版本需要絕對(duì)地址的,直接拿方法中的path
                Glide.with(this).load(mUri).into(mImageView);
            }
        }
    }
  1. 拍視頻
    依葫蘆畫(huà)瓢吧!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容