[JAVA] Technische Ursachen und Gegenmaßnahmen für Punkte, denen ich mit der Android-App und Kotlin verfallen war (2. Verarbeitung im Zusammenhang mit der Kamerafunktion von Android *)

2. * Android * Kamerafunktionsverarbeitung

Es scheint, dass der Speicherort für Bilder nach der Aufnahme mit der Kamera je nach der vom dritten Anbieter bereitgestellten Kameraanwendung unterschiedlich ist. Daher ist es erforderlich, auf das Verhalten und den Inhalt des impliziten Parameters * Intent * zu achten. Bei * Android * Version 6.0 oder höher muss der Benutzer außerdem die Berechtigung überprüfen und die Autorisierung bestätigen, wenn die App zum ersten Mal gestartet wird.

2.1 * Auswahl * Verarbeitung zur Auswahl der Galerie- oder Kamerafunktion bei der Auswahl eines Bildes

In dieser Anwendung wird das Bild nach dem Bildschirmübergang eingefügt, nachdem ein Bild der Galerie im * Android * -Terminal aufgenommen oder ein Bild mit einer Kamera aufgenommen wurde.

Wenn Sie die Bildschirmauswahlschaltfläche in der * Intent * -Registrierung der beiden Funktionen (implizit * Intent * (Galeriefunktion) / implizit * Intent * (Kamerafunktion)) des Galeriebilds oder der Kameraaufnahme im * Android * -Terminal berühren Nur implizite * Absicht * (Galeriefunktion) wird nicht angezeigt. Implizite * Absicht * (Kamerafunktion) wird nicht angezeigt. Wenn Sie dagegen sofort abbrechen und die Schaltfläche zur Bildschirmauswahl erneut berühren, werden mehrere implizite * Absichten * (Galeriefunktion) angezeigt.

Es ist ein Fehler in der Reihenfolge der * Absicht * -Registrierung der beiden Funktionen von * Android * -Galeriebildern oder Kameraaufnahmen aufgetreten.

Registrierungsreihenfolge für implizite Absichten (Galeriefunktion / Kamerafunktion)


// .....Abkürzung
	private fun addPhoto(requestCode: Int) {
		getCameraIntent()
		createChooserIntent()
// .....Abkürzung
	}
// .....Abkürzung

Erstellen einer impliziten Absicht (Kamerafunktion)


// .....Abkürzung
	private fun getCameraIntent() {
		Intent(MediaStore.ACTION_IMAGE_CAPTURE)
// .....Abkürzung
	}
// .....Abkürzung

Implizite Absicht (Galerie-Funktion) & Auswahlerstellung


// .....Abkürzung
	private fun createChooserIntent(): Intent {
		Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
			addCategory(Intent.CATEGORY_OPENABLE)
			type = "image/*"
		}
		return Intent.createChooser(Streit).apply {
			putExtra(Intent.EXTRA_INITIAL_INTENTS,Streit)
		}
	}
// .....Abkürzung

2.2 Verarbeitung zum Ausschließen anderer Kamera-Apps von der Kamerafunktion von * Chooser *

In dieser Anwendung wird nach Berühren der Bildschirmauswahlschaltfläche, um das Bild der Galerie oder der vom dritten Anbieter bereitgestellten Kameraanwendung auszuschließen und ein Bild mit der Kamera aufzunehmen, das Bild nach dem Bildschirmübergang eingefügt.

Da der Speicherort des aufgenommenen Bildes für die von einem dritten Anbieter bereitgestellte Kameraanwendung unbekannt ist, wird er unter Berücksichtigung des Grads des Einflusses von * Auswahl * ausgeschlossen.

Keiner

Erstellen Sie nach dem Erstellen einer impliziten * Absicht * (Kamerafunktion) eine neue implizite * Absicht * (Kamerafunktion), wenn diese mit dem Klassennamen der integrierten Kamerafunktion übereinstimmt.

Andere Kamera-Apps ausschließen


// .....Abkürzung
	Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
		val intentInfoList = context?.packageManager?.queryIntentActivities(this, 0) ?: return

		//Da die Spezifikationen anderer Kamera-Apps nicht bekannt sind, wird nur die eingebaute Kamera als Ziel ausgewählt
		for (intentInfo in intentInfoList) {
			val packageName = intentInfo.activityInfo.packageName
			val name = intentInfo.activityInfo.name
			if (name.contains(CAMERA_CLS_NAME)) { // CAMERA_CLS_NAME → "com.android.camera"
				Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
// .....Abkürzung
				}
			}
		}
	}
// .....Abkürzung

2.3 * Absicht * Parameterverarbeitung von * onActivityResult () * bei Aufnahmen mit der Kamera

In dieser Anwendung wird nach Berühren der Bildschirmauswahlschaltfläche zum Aufnehmen eines Bilds der Galerie oder einer Kamera das Bild nach dem Bildschirmübergang eingefügt.

Nach dem Berühren der Bildauswahlschaltfläche, um ein Bild der Galerie oder der Kamera aufzunehmen, wird das Bild nicht in * ImageView * im Ziellayout des Bildschirmübergangs angezeigt, und der Bildschirm wird leer.

Beim Erstellen eines impliziten * Intent * (Kamerafunktion) mit * IntentChooser * ist der * Intent * -Parameter von * onActivityResult () * * null *, sofern * putExtra (MediaStore.EXTRA_OUTPUT, cameraUri) * nicht ausgeschlossen ist. , * Absicht * Kann * Uri * nicht von der Kamera aufnehmen lassen. (Verwenden Sie das implizite * Intent * -Beispiel aus der offiziellen Dokumentation.)

Erstellen Sie eine implizite * Absicht * (Kamerafunktion), indem Sie * putExtra (MediaStore.EXTRA_OUTPUT, cameraUri) * ausschließen.

putExtra()Ausschluss


// .....Abkürzung
	Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
		val intentInfoList = context?.packageManager?.queryIntentActivities(this, 0) ?: return

		//Da die Spezifikationen anderer Kamera-Apps nicht bekannt sind, wird nur die eingebaute Kamera als Ziel ausgewählt
		for (intentInfo in intentInfoList) {
			val packageName = intentInfo.activityInfo.packageName
			val name = intentInfo.activityInfo.name
			if (name.contains(CAMERA_CLS_NAME)) { // CAMERA_CLS_NAME → "com.android.camera"
				Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
// .....Abkürzung
					// putExtra(MediaStore.EXTRA_OUTPUT, cameraUri)→ Ausschluss
				}
			}
		}
	}
// .....Abkürzung

Verknüpfung

Technische Ursachen und Gegenmaßnahmen für die erste Android-App und Kotlin-Sucht 1. Verarbeitung des Android-Bildschirmübergangs (Fragment) 3. Verarbeitung in Bezug auf Android-Bilder

Recommended Posts

Technische Ursachen und Gegenmaßnahmen für Punkte, denen ich mit der Android-App und Kotlin verfallen war (2. Verarbeitung im Zusammenhang mit der Kamerafunktion von Android *)
Technische Ursachen und Gegenmaßnahmen für die Punkte, denen ich mit der ersten Android-App und Kotlin verfallen war
Technische Ursachen und Gegenmaßnahmen für Punkte, die von Android-Apps und Kotlin abhängig sind (3. Verarbeitung in Bezug auf Android-Bilder)
Technische Ursachen und Gegenmaßnahmen für Punkte, die von Android-Apps und Kotlin abhängig sind (3. Verarbeitung in Bezug auf Android-Bilder)
Technische Ursachen und Gegenmaßnahmen für die Punkte, denen ich mit der ersten Android-App und Kotlin verfallen war
Technische Ursachen und Gegenmaßnahmen für Punkte, denen ich mit der Android-App und Kotlin verfallen war (2. Verarbeitung im Zusammenhang mit der Kamerafunktion von Android *)
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Konvertieren Sie alle Android-Apps (Java) in Kotlin
Zusammenfassung der guten Punkte und Vorsichtsmaßnahmen bei der Konvertierung der Java Android-Anwendung in Kotlin
Geben Sie Optionen für die Java / Kotlin-Kompilierungszeit für Android-Apps an
Eine Geschichte, der ich mit der automatischen Starteinstellung von Tomcat 8 unter CentOS 8 zweimal verfallen war
Ich war süchtig nach der Aufzeichnung des zugehörigen Modells
Beachten Sie, dass ich süchtig nach Stapelverarbeitung mit Spring Boot war
Beachten Sie, dass ich von den Einstellungen des Android-Projekts von IntelliJ IDEA abhängig war
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich war süchtig nach Laradock + VSCode + xdebug
Was ich mit der Redmine REST API süchtig gemacht habe
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Über die Sache, dass ich süchtig danach war, wie man Hashmap benutzt
Ich war süchtig nach der API-Version min23 von registerTorchCallback
Ein Memo, das nüchtern von der Anfrage nach mehrteiligen / Formulardaten abhängig war
Probleme, denen ich beim Erstellen der Digdag-Umgebung mit Docker verfallen war
Aufgenommen, weil ich süchtig nach der Standardeingabe der Scannerklasse war
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Die Geschichte der ersten Veröffentlichung der Android-App im Play Store.
[Circle CI] Ich war süchtig nach dem automatischen Test von Circle CI (Rails + MySQL) [Memo]
Ich war süchtig nach Unit-Tests mit dem Pufferoperator in RxJava
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich war süchtig nach der Rollmethode
Ich war süchtig nach dem Spring-Batch-Test
Zusammenfassung der guten Punkte und Vorsichtsmaßnahmen bei der Konvertierung der Java Android-Anwendung in Kotlin
Zusammenfassung der Punkte, über die ich mir bei der Migration von Java nach Kotlin Sorgen gemacht habe
Ich war süchtig danach, onActivityResult () mit DialogFragment zu machen
Der Teil, dem ich in "Einführung in Ajax in Java-Webanwendungen" von NetBeans verfallen war