0

スマートフォンのカメラを起動するAndroidアプリがあります

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST );

撮影した写真を表示するには、次のコードを使用します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    setImage=true;
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
        if(data!=null)
        {
            ImageView image = (ImageView) findViewById(R.id.imagePreview);
            Bundle extras = data.getExtras();
             Bitmap mImageBitmap = (Bitmap) extras.get("data");
             image.setImageBitmap(mImageBitmap);
        }
   }
}

これはかなりうまく機能しますが、撮影した写真のパスを取得したい場合は、使用する必要があります(intent)data.getData()が、これは値を返しnullます。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

以下のようにしてみてください。

      Bitmap m_photo = (Bitmap) p_data.getExtras().get("data");
    if (m_photo != null)
    {
    ByteArrayOutputStream m_upByteArrayOutputStream = new ByteArrayOutputStream();
    m_photo.compress(Bitmap.CompressFormat.PNG, 40, m_upByteArrayOutputStream);
    Drawable m_imageFromCamera = new BitmapDrawable(m_photo);
             image.setBackgroundDrawable(m_photo);
      }

編集:

画像のパスを取得するには、以下のコードを試してください:

     Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String imagePath = cursor.getString(columnIndex); <---- Here is your image path.
        cursor.close();
于 2013-03-28T12:27:38.777 に答える
0

この希望を試してみてください。

Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            String imageName = picturePath.substring(picturePath.lastIndexOf(
                    "/", picturePath.length()));
于 2013-03-28T13:25:21.120 に答える