[JAVA] So schränken Sie das Bildformat in der Galerie unter Android ein und wählen und importieren Sie dann mehrere Bilder

Ich habe mich entschlossen, eine Android-Anwendung bei der Arbeit zu entwickeln, und eine Bilderfassungsfunktion mit dem sogenannten Storage Access Framework erstellt. Dies ist jedoch ein Memorandum, da es nur wenige japanische Materialien gibt und dies einige Zeit in Anspruch nahm. Es tut mir leid, wenn ein Fehler vorliegt, da es sich um die erste Android-Entwicklung handelt und es einen Zeitraum von der Entwicklung bis zur Zusammenfassung des Inhalts gibt.

Umgebung

・ Android 6.0.1

So rufen Sie die Galerie auf

Unter Android scheint Intent verwendet zu werden, wenn verschiedene Funktionen anderer Apps und des Android-Standards aufgerufen werden.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 0);

Durch Setzen von "image / *" in setType können nur Bilder importiert werden.

0 wird im zweiten Argument von startActivityForResult gesetzt, aber hier setzen wir etwas namens requestCode. Dies wird verwendet, um zu bestimmen, von welcher App oder Funktion der Anruf stammt, und wird in dem unten beschriebenen Rückgabeprozess verwendet. Jeder Wert kann verwendet werden, solange er int ist. Bei der Implementierung ist es jedoch besser, ihn zu einer Konstanten zu machen, damit derselbe Wert zum Aufrufen und Zurückgeben verwendet werden kann.

Mehrfachauswahl

Ich möchte nicht eins nach dem anderen auswählen, daher können Sie mehrere Bilder auswählen.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 0);

Wenn Sie keine zusätzlichen Apps aufrufen möchten

Wenn Sie es oben belassen, können Sie auch Dateien von Netzwerklaufwerken und anderen Apps auswählen. In diesem Fall ist es ärgerlich, beim Erstellen der Bedienungsanleitung zusätzliche Funktionen zu berühren. Löschen Sie sie daher.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 0);

Wählen Sie das Bildformat

Ich möchte die Bildformate einschränken, die verarbeitet werden können. Legen Sie daher die Bildformate fest, die ausgewählt werden können.

Wenn es ein Format gibt (Beispiel ist JPEG)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 0);

Zwei oder mehr (Beispiele sind JPEG und PNG)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/jpeg", "image/png"});
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, 0);

Der Anruf sieht so aus.

Bearbeitung von Retouren aus der Galerie

Von hier aus geht es um die Verarbeitung auf der Empfangsseite. Wenn Sie es in die mainActivity schreiben, funktioniert es.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            Uri = uri;
            if (data.getData() != null) {
                //Verarbeitung, wenn das ausgewählte Bild einzeln ist
                uri = data.getData();
            } else {
                //Verarbeitung, wenn mehrere Bilder ausgewählt sind
                ClipData cd = data.getClipData();
                for (int i=0; i<cd.getItemCount(); i++) {
                    uri = cd.getItemAt(i).getUri();
                }
            }
        }
    }
}

Der requestCode wird vom startActivityForResult () des Aufrufers festgelegt. Wenn mehrere Funktionen zurückkehren, ändern Sie die Verarbeitung für jede Funktion mit if oder swicht.

resultCode ist der Erfolg oder Misserfolg des Aufrufs.

Jetzt können Sie den URI des ausgewählten Bildes abrufen. Den Rest können Sie also erledigen.

Recommended Posts

So schränken Sie das Bildformat in der Galerie unter Android ein und wählen und importieren Sie dann mehrere Bilder
Android App, die Bilder aus der Galerie auswählt und anzeigt
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
[Android] Zeigen Sie Bilder und Zeichen auf der Registerkarte ViewPager an
[Android] Hochladen von Bildern vom Terminal auf den Server
So verwenden Sie OpenCV 4 unter Android und zeigen die Kamera live an
Halten Sie das praktische Bild und das wesentliche Bild gedrückt, um TDD anzugehen
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
So deaktivieren Sie Set-Cookie über die API auf der Vorderseite
So führen Sie React und Rails auf demselben Server aus
Komprimieren Sie mehrere Dateien und laden Sie sie auf Android in Firebase Storage hoch.
So wenden Sie das C-Code-Format über die Befehlszeile an
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
[Schienen] Verwenden Sie die Auswahlmethode nicht nur, um die Spalten einzugrenzen!
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
Wie man eine Ansicht auf Android "aushöhlt"
[Java] So rufen Sie die von HTML auf der Serverseite übergebenen Parameter ab
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat