短視訊程式開發,Android:呼叫系統拍照和相簿

zhibo系統開發發表於2021-12-03

短視訊程式開發,Android:呼叫系統拍照和相簿實現的相關程式碼

1、從相簿選擇 

/**
     * 從相簿選取圖片
     */
    private void choosePhoto() {
        /**
         * 開啟選擇圖片的介面
         */
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");//相片型別
        startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case REQUEST_CODE_PICK_IMAGE:
                if (resultCode == Activity.RESULT_OK) {
                    try {
                        Uri uri = data.getData();
                        LogUtil.d("url:" + getRealPathFromURI(uri));
                        String realPathFromURI = getRealPathFromURI(uri);
                        uploadType = 2;
                        uploadFile(realPathFromURI, userId);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Log.d(Constants.TAG, e.getMessage());
                    }
                } else {
                    Log.d(Constants.TAG, "失敗");
                }
                break;
        }
    }
 
    public String getRealPathFromURI(Uri contentUri) {
        String res = null;
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = mContext.getContentResolver().query(contentUri, proj, null, null, null);
        if (cursor.moveToFirst()) {
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            res = cursor.getString(column_index);
        }
        cursor.close();
        return res;
    }
 
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == MY_PERMISSIONS_REQUEST_CHOOSE_PHOTO) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                choosePhoto();
            } else {
                ToastUtils.showShort("請同意系統許可權後繼續");
            }
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }


2、拍照

    private File output;
    private Uri imageUri;
 
 /**
     * 拍照
     */
    private void takePhoto() {
        /**
         * 最後一個引數是資料夾的名稱,可以隨便起
         */
        File file = new File(Environment.getExternalStorageDirectory(), "external_files");
        if (!file.exists()) {
            file.mkdir();
        }
        /**
         * 這裡將時間作為不同照片的名稱
         */
        output = new File(file, System.currentTimeMillis() + ".jpg");
 
        /**
         * 如果該資料夾已經存在,則刪除它,否則建立一個
         */
        try {
            if (output.exists()) {
                output.delete();
            }
            output.createNewFile();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        /**
         * 隱式開啟拍照的Activity,並且傳入CROP_PHOTO常量作為拍照結束後回撥的標誌
         */
        Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        Uri photoUri = FileProvider.getUriForFile(
                getContext(),
                getContext().getPackageName() + ".fileprovider",
                output);
        Uri  imageUri = photoUri;
        takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
        startActivityForResult(takePhotoIntent, CROP_PHOTO);
    }
 
 
 
public void onActivityResult(int req, int res, Intent data) {
        switch (req) {
            case CROP_PHOTO:
                if (res == Activity.RESULT_OK) {
                    try {
                       String realPath = output.getPath();
 
                        messageInfo.setImageUrl(realPath);
                        EventBus.getDefault().post(messageInfo);
                    } catch (Exception e) {
                    }
                } else {
                    Log.d(Constants.TAG, "失敗");
                }
 
                break;
        }
    }


以上就是短視訊程式開發,Android:呼叫系統拍照和相簿實現的相關程式碼, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2845651/,如需轉載,請註明出處,否則將追究法律責任。

相關文章