私はユーザーが写真を撮ることができ、その写真が画像ビューに保存されるようなアプリを作ろうとしています。私はこれを動作させるために数十の方法を試した。Android:カメラで写真を撮り、フル解像度の画像をimagviewに保存するにはどうすればよいですか?
私が見た多くの答えは、MediaStoreのインテントを使用し、ACTION_CAMERA_CAPTUREを渡してdata.getExtra( "data")を使用することをお勧めします。これは小さい画像を返し、表示しようとしている画像が大きいので、この方法では画像がぼやけて表示されます。
もう1つの方法は、この同じ方法を使用してEXTRA_OUTPUTを渡すことです。しかし、これは格納場所を入れる必要があり、私が見たすべての答えはEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)を配置するように指示します。しかし、私がonActivityResultでdata.getData()を実行しようとすると、nullが返されます。これはどうすればいいですか?
alert.setPositiveButton("Take Photo", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
profileFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "image_" +
String.valueOf(System.currentTimeMillis()) + ".jpg");
profile = Uri.fromFile(profileFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, profile);
startActivityForResult(intent, 1);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
ImageView imageView = (ImageView) findViewById(R.id.ProfileImage);
//This returns null.
//I am guessing that the Environment.getExternalSt...() method is getting a storage
//location that does not exist.
//I don't know what the correct storage location is and I have not
//been able to find it.
Uri u = data.getData();
File finalFile = new File(getRealPathFromURI(u));
Picasso.with(this).load(finalFile).into(imageView);
}
}
EXTRA_OUTPUTが返されないということを意味しますか?これが間違っている場合は、インテントデータをどのように取得するのですか? また、携帯電話の保存場所を探しましたが、見つけられませんでした。私は私のコンピュータ上の私の電話のストレージを見てそれを見つけました。これは場所[リンク](http://i.imgur.com/MgAYa9U.png)です(役立つかどうかわかりません)。ギャラリーの場所に保存する方法を知っていますか? [link](http://i.imgur.com/GhdIWB8.png) – kindOfABigDeal
実際に取得しようとしているフォルダが間違っています。それは私にこの場所/記憶/エミュレート/ 0/Pictures /存在しないものを与えます。最後の画像にPicturesディレクトリがあります。 – kindOfABigDeal
@kindOfABigDeal:「EXTRA_OUTPUTが返されないのはどういう意味ですか?」 - あなたは 'EXTRA_OUTPUT'に入れた値を保持する必要があることを意味します。その価値はあなたが「意図」の結果に戻ってこない。「実際には取得しようとしているフォルダが間違っています」 - これは[外部ストレージ]の正しい場所です(https://commonsware.com/blog/2014/04/08/storage-situation-external- storage.html)。 – CommonsWare