Ich muss eine Absicht zu Standard-Kamera-Anwendung drücken, damit es ein Foto machen, speichern Sie es und einen URI zurück. Gibt es eine Möglichkeit, dies zu tun?Android Kamera Absicht
Antwort
private static final int TAKE_PICTURE = 1;
private Uri imageUri;
public void takePhoto(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photo = new File(Environment.getExternalStorageDirectory(), "Pic.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
startActivityForResult(intent, TAKE_PICTURE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case TAKE_PICTURE:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getContentResolver().notifyChange(selectedImage, null);
ImageView imageView = (ImageView) findViewById(R.id.ImageView);
ContentResolver cr = getContentResolver();
Bitmap bitmap;
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
imageView.setImageBitmap(bitmap);
Toast.makeText(this, selectedImage.toString(),
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT)
.show();
Log.e("Camera", e.toString());
}
}
}
}
Gibt es die Möglichkeit, eine Frontkamera des Gerätes vorsätzlich zu öffnen? – Dimon
Das funktioniert gut, obwohl Sie möglicherweise benötigen: private statische int TAKE_PICTURE = 1; –
@Aleksander O. - toller Code, danke!Ich habe eine vollständige voll funktionsfähige Implementierung dieser bei http://StackOverflow.com/A/13446838/1166727 –
Versuchen Sie Folgendes ich here gefunden
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 0);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == 0) {
String result = data.toURI();
// ...
}
}
Danke, aber die Bild der Einsparung ist nicht auf ein Gerät, so bekomme ich FileNotFoundException in Uri uri = Uri.parse (data.toURI()); bitmap = android.provider.MediaStore.Images.Media .getBitmap (contentResolver, uri); –
Sagst du, dass das Bild, das du machst, nicht auf dem Telefon/Gerät gespeichert wird oder etwas passiert und obwohl du sagst, dass es das Bild auf deinem Handy/Gerät speichern soll, verhält es sich so, als würde es nicht speichern? – Ryan
Ich sage, dass das Bild nicht automatisch auf dem Gerät gespeichert wird, sondern in onActivityResult() als Bitmap zurückgegeben wird. Ich habe jedoch eine Lösung gefunden, die ich in einer Antwort erwähnen werde. –
versuchen diesen Code
Intent photo= new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(photo, CAMERA_PIC_REQUEST);
Dieser Beitrag wird automatisch als minderwertig gekennzeichnet, da es sich nur um Code handelt. Würde es Ihnen etwas ausmachen, es zu erweitern, indem Sie etwas Text hinzufügen, um zu erklären, wie es das Problem löst? – gung
Es dauerte einige Stunden, um diese Funktion zu erhalten. Der Code ist fast eine Kopie-Paste von developer.android.com, mit einem kleinen Unterschied.
Antrag diese Erlaubnis auf der AndroidManifest.xml
:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Auf Ihrem Activity
, durch die Definition dieser beginnen:
static final int REQUEST_IMAGE_CAPTURE = 1;
private Bitmap mImageBitmap;
private String mCurrentPhotoPath;
private ImageView mImageView;
Dann feuern diese Intent
in ein onClick
:
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (cameraIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Log.i(TAG, "IOException");
}
// Continue only if the File was successfully created
if (photoFile != null) {
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
}
}
hinzufügen das folgende unterstützt mich thod:
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, // prefix
".jpg", // suffix
storageDir // directory
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
}
erhalten dann das Ergebnis:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
try {
mImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath));
mImageView.setImageBitmap(mImageBitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Was die MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath))
, es Arbeit ist gemacht, die aus dem Code von developer.android.com unterscheidet. Der ursprüngliche Code gab mir eine FileNotFoundException
.
Das gleiche für mich. Du hast mir ein paar Stunden gespart. Irgendeine Idee, warum der Android Dev-Code eine IO-Ausnahme gibt? – Coo
Versuchen Sie, die folgenden I a link
hier gefunden Wenn Ihre App Ziele M und vor und erklärt, wie die Kamera die Erlaubnis verwendet, die nicht erteilt wird, dann in einem Security führt diese Aktion zu nutzen versuchen.
EasyImage.openCamera(Activity activity, int type);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
EasyImage.handleActivityResult(requestCode, resultCode, data, this, new DefaultCallback() {
@Override
public void onImagePickerError(Exception e, EasyImage.ImageSource source, int type) {
//Some error handling
}
@Override
public void onImagesPicked(List<File> imagesFiles, EasyImage.ImageSource source, int type) {
//Handle the images
onPhotosReturned(imagesFiles);
}
});
}
- 1. Android Bild Größe nach Kamera Absicht Callback
- 2. Android nehmen Kamera zurück leeren Absicht
- 3. Kamera Absicht vs Aktivität/Fragment
- 4. Android: BroadcastReceiver Absicht Kamera zu erkennen Foto aufgenommen?
- 5. Absicht: Android
- 6. Androide Kamera Absicht fest auf Bestätigung
- 7. Absicht Kamera stürzt nach hinten drücken
- 8. wie Kamera-Auflösung zu erhöhen, wenn IMAGE_CAPTURE Absicht
- 9. Android Studio 2 - Kamera SecurityException
- 10. Absicht, Video in android zu nehmen
- 11. Android implizite Absicht
- 12. Android Download Absicht
- 13. Android - ‚Anwendung installieren‘ Absicht
- 14. Android entsperren Bildschirm Absicht?
- 15. Foto durch Kamera Absicht genommen ist auf Qualität zu verlieren
- 16. auf Aktivität Ergebnis Kamera Absicht zurück Null in Samsung s4
- 17. Android Kamera, onPictureTaken (byte [] imgData, Kamera Kamera) Methode & PictureCallback nie
- 18. Phonegap Kamera Android tötet Cordova
- 19. Android NoClassDefFoundError beim Erstellen Absicht
- 20. Android PreferenceFragment Ergebnis aus Absicht
- 21. Android-Limit-Zeiterfassung mit Absicht
- 22. Android REORDER_TO_FRONT Benutzer neu Absicht
- 23. android ausstehende Absicht Benachrichtigung Problem
- 24. Android SMS Absicht Hangouts 2.0
- 25. Android Studio Absturz nach Kamera Absicht in realen Gerät (virtuelle Emulator funktioniert einwandfrei)
- 26. Absicht zwischen der Kamera oder der Galerie in Android zu wählen
- 27. Nehmen Sie ein Bild mit Android-Kamera (Absicht) aus dem Speicher Fehler
- 28. Kamera und Galerie Absicht, Bild und Kopie in einem anderen Ordner in Android
- 29. Android - Kamera Vorschau
- 30. Kamera Metering - Android
Siehe den Link unten http://stackoverflow.com/questions/13977245/android-open-camera-from-button/40041381#40041381 –