Tutorials  /  Security

Android-Bildaufnahme leicht gemacht: Kamera und Galerie in einer App

Ccentron Redaktion · Juli 2024 ·4 Min. Lesezeit ·Security, Tutorial

Tauchen Sie ein in die Welt der Android-Entwicklung mit unserem neuesten Blogbeitrag!

Erfahren Sie, wie Sie mühelos Bilder aus Kamera und Galerie in Ihre App integrieren und anzeigen können. Von der Berechtigungsverwaltung bis zur Anzeige der Bilder in verschiedenen Ansichten - unser Leitfaden führt Sie Schritt für Schritt durch den Prozess. Tauchen Sie ein und entdecken Sie die Möglichkeiten der Bildaufnahme in Android!

In der heutigen Anleitung werden wir eine Anwendung entwickeln

In der heutigen Anleitung werden wir eine Anwendung entwickeln, die ein Bild aus der Kamera oder der Galerie auswählt und dieses in einem ImageView anzeigt. Beachten Sie: Der untenstehende Code funktioniert einwandfrei für Versionen vor Android Nougat.

SEC

Passende Infrastruktur bei centron

Absicherung endet nicht beim Server: Cloud Firewalls filtern den Datenverkehr vor der VM – zentral verwaltet, ohne Aufpreis je Regel. Cloud Firewalls ansehen →

Mit dem Beginn von Android Marshmallow

Mit dem Beginn von Android Marshmallow müssen Berechtigungen zur Laufzeit im Vordergrund implementiert werden. Fügen Sie die folgenden Berechtigungen in die Android Manifest.xml-Datei ein, über dem Anwendungstag.

Code
<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.flash"
    android:required="false" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>

Durch das Hinzufügen von android.hardware.camera erkennt der Play Store und verhindert die Installation der Anwendung auf Geräten ohne Kamera. Intent ist der Standardweg, um Aktionen an eine andere Anwendung zu delegieren. Um die native Kamera zu starten, benötigt das Intent android.provider.MediaStore.ACTION_IMAGE_CAPTURE. Um ein Bild aus der Galerie auszuwählen, benötigt das Intent das folgende Argument: Intent.ACTION_GET_CONTENT. In dieser Anleitung rufen wir einen Bildauswähler auf, der es uns ermöglicht, ein Bild aus der Kamera oder der Galerie auszuwählen und das Bild in einem kreisförmigen ImageView und einem normalen ImageView anzuzeigen. Fügen Sie die folgende Abhängigkeit in die build.gradle-Datei ein. `compile 'de.hdodenhof:circleimageview:2.1.0'`

Projektstruktur für die Android-Bildaufnahme

Android-Bildaufnahme-Code

Das Layout für die activity_main.xml bleibt gleich, außer der Icon-Änderung für die FAB-Schaltfläche zu @android:drawable/ic_menu_camera. Der Inhalt content_main.xml lautet wie folgt:

Code
<!-- Ihr XML-Code hier einfügen -->

Der Code für die MainActivity.java ist wie folgt:

Code
// Ihr Java-Code hier einfügen

Schlussfolgerungen

Hier sind einige Schlussfolgerungen, die aus dem obigen Code gezogen werden können:

  • Wir müssen um Kamera-Berechtigungen zur Laufzeit bitten, wenn der Benutzer die Aktivität startet.
  • Da wir das Intent starten, um ein Ergebnis zurückzubekommen, müssen wir startActivityForResult mit den relevanten Argumenten aufrufen.
  • Anstatt einen Dialog zu verwenden, um die Intents für Kamera und Galerie separat aufzurufen, haben wir eine Methode `getPickImageChooserIntent()` verwendet, die ein einzelnes Auswahlintent für alle Kamera- und Galerie-Intents erstellt (beachten Sie das Dokumenten-Intent). `Intent.EXTRA_INITIAL_INTENTS` wird verwendet, um die verschiedenen Anwendungsintents an einer Stelle hinzuzufügen.
  • Für das Kamera-Intent wird `MediaStore.EXTRA_OUTPUT` als Extra übergeben, um den Bildspeicherpfad anzugeben. Ohne dies erhalten Sie nur ein Bild mit geringer Auflösung zurück.
  • Der URI-Pfad für das Bild, das von der Kamera zurückgegeben wird, wird in der Methode `getCaptureImageOutputUri()` abgerufen.
  • Das `onActivityResult` gibt im Wesentlichen eine URI für das Bild zurück. Einige Geräte geben den Bitmap als `data.getExtras().get("data")` zurück.
  • Wenn ein Bild aufgenommen wird, wird der Kamera-Bildschirm beim Zurückkehren die Aktivität neu gestartet, wodurch die URI, die aus der Methode `getCaptureImageOutputUri()` gespeichert wurde, null wird. Daher ist es wichtig, dass wir diese URI mit `onSaveInstanceState()` und `onRestoreInstanceState()` speichern und wiederherstellen.
  • Die Bitmap wird aus der URI in der folgenden Codezeile abgerufen: `myBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), picUri);`
  • Geräte wie das Samsung Galaxy sind dafür bekannt, das Bild im Querformat aufzunehmen. Wenn das Bild ohne Änderungen abgerufen und angezeigt wird, kann es in der falschen Ausrichtung angezeigt werden. Daher haben wir die Methode `rotateImageIfRequired(myBitmap, picUri)` aufgerufen.
  • `ExifInterface` ist eine Klasse zum Lesen und Schreiben von Exif-Tags in einer JPEG-Datei oder einer RAW-Bilddatei.
  • Am Ende rufen wir die Methode `getResizedBitmap()` auf, um die Bitmap nach Breite oder Höhe zu skalieren (je nachdem, welche größer ist), und setzen das Bild auf das ImageView mit `setImageBitmap`.
Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Security
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren