デバイスのデフォルトのカメラで写真を撮るか、デバイスのデフォルトの画像ギャラリーから選択するかをユーザーに選択させようとしています。
カメラに写真を撮らせて、アプリ内に問題なく表示させることができます.JPGファイルへの直接のURIパスが好きなようです. ただし、ギャラリー URI に指定されたパスは大きく異なり、画像はまったく表示されません。
ここに私が得るパスがあります:
カメラから撮影した場合: /mnt/sdcard/filename.jpg
ギャラリーから選択した場合 : /external/images/media/# (# は ID 番号/サムネイルだと思います)
両方のパスを取得するために使用されるコードは次のとおりです。
カメラ:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageCaptureUri =
Uri.fromFile(new file(Environment.getExternalStorageDirectory(),
"fname_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
ギャラリー:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Complete action using"), PICK_FROM_FILE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
ギャラリーを使用すると、開いてブラウジングできますが、写真を撮るときのように画像が表示されません。
選択/撮影された画像をアプリに取り込むために使用されるコードは次のとおりです。
ImageView getMyphoto = (ImageView) findViewById(R.id.usePhoto);
String stringUrl = prefSettings.getString("myPic", "");
Uri getIMG = Uri.parse(stringUrl);
getMyphoto.setImageURI(null);
getMyphoto.setImageURI(getIMG);