簡體   English   中英

無法將意圖用於CAMERA

[英]Unable to use intent for CAMERA

在我的應用程序中,單擊“圖像視圖”后,我要啟動Camera,它將捕獲圖像並將其顯示在另一個圖像視圖中。
我的代碼如下:

 //On clicking Camera
    iv_camera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        }
    });

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
        if (data != null) {
            Log.e("Result Code", String.valueOf(resultCode));
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            Uri selectedImageUri = data.getData();
            Log.e("ImageUri", String.valueOf(selectedImageUri));
            String realPath = getRealPathFromURI(selectedImageUri);
             Log.e("Real Path", realPath);
            imgProfilePic.setImageBitmap(photo);
        }
    }
}

//Get real path form Uri
public String getRealPathFromURI(Uri contentUri) {
    try {
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } catch (Exception e) {
        return contentUri.getPath();
    }
}

我的問題是,在某些手機上它可以正常工作,但在某些手機上卻不能。
例如:如果我正在使用帶有棒棒糖的手機Yu Yureka來測試我的應用程序,它將給我的數據為null。此外,當方向更改時,應用程序崩潰了。請幫助我解決此問題。

在清單文件中使用這些權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

從這個簡單的代碼示例中實現,這是我的工作示例代碼

public void CameraClick(View v) {

        Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        // creating Dir to save clicked Photo
        String root = Environment.getExternalStorageDirectory().toString();
        File myDir = new File(root + "/cam_Intent");
        myDir.mkdirs();

        // save clicked pic to given dir with given name

        File file = new File(Environment.getExternalStorageDirectory(),
                "/cam_Intent/MyPhoto.jpg");

        outPutfileUri = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
        startActivityForResult(intent, TAKE_PIC);
    }

    Bitmap bitmap = null;

    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data)
    {
        if (requestCode == TAKE_PIC && resultCode==RESULT_OK) {

            String uri = outPutfileUri.toString();
            Log.e("uri-:", uri);
            Toast.makeText(this, outPutfileUri.toString(),Toast.LENGTH_LONG).show();

            //Bitmap myBitmap = BitmapFactory.decodeFile(uri);
           // mImageView.setImageURI(Uri.parse(uri));   OR drawable make image strechable so try bleow also

            try {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outPutfileUri);
                Drawable d = new BitmapDrawable(getResources(), bitmap);
                mImageView.setImageDrawable(d);
            } catch (IOException e) {
                e.printStackTrace();
            }


        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM