Ich versuche, eine App zu machen, wo der Benutzer ein Bild machen kann und das Bild in einer Bildansicht gespeichert wird. Ich habe Dutzende von Methoden ausprobiert, um dies zum Laufen zu bringen.Android: Wie nehme ich ein Bild mit der Kamera und speichere das Bild mit voller Auflösung in imagview?
Viele Antworten, die ich gesehen habe, schlagen vor, data.getExtra ("data") mit dem MediaStore Intent zu verwenden und ACTION_CAMERA_CAPTURE zu übergeben. Dadurch wird ein kleineres Bild zurückgegeben, und das Bild, das ich anzeigen möchte, ist groß, sodass das Bild bei dieser Methode unscharf wird.
Die andere Option besteht darin, dieselbe Methode zu verwenden und EXTRA_OUTPUT zu übergeben. Dies erfordert jedoch das Einlagern des Speicherorts und jede Antwort, die ich gesehen habe, sagt mir, dass ich in Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES) einfügen soll. Wenn ich versuche, data.getData() in onActivityResult zu machen, bekomme ich null. Wie mache ich das?
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);
}
}
Was meinst du mit EXTRA_OUTPUT wird nicht zurückgegeben? Wie bekomme ich die Absichtsdaten, wenn dies falsch ist? Auch suchte ich nach dem Speicherort auf meinem Telefon, konnte es aber nicht finden. Ich habe es gefunden, indem ich meinen Telefonspeicher auf meinem Computer angesehen habe. Dies ist der Ort [link] (http://i.imgur.com/MgAYa9U.png) (weiß nicht, ob es hilft). Weißt du, wie ich es stattdessen im Galeriestandort ablegen könnte? [link] (http://i.imgur.com/GhdIWB8.png) – kindOfABigDeal
Eigentlich ist der Ordner, den es zu bekommen versucht, falsch. Es gibt mir diesen Speicherort/Speicher/emuliert/0/Bilder/die nicht existiert. Es sollte mir Bilderverzeichnis im letzten Bild geben. – kindOfABigDeal
@kindOfABigDeal: "Was meinst du mit EXTRA_OUTPUT wird nicht zurückgegeben?" - Ich meine, dass Sie den Wert behalten müssen, den Sie in "EXTRA_OUTPUT" eingegeben haben. Dieser Wert kommt im Ergebnis "Absicht" nicht zu dir zurück."Tatsächlich ist der Ordner, den es zu bekommen versucht, falsch" - das ist wahrscheinlich der richtige Ort für [externen Speicher] (https://commonsware.com/blog/2014/04/08/storage-situation-external-) storage.html). – CommonsWare