[JAVA] Causes techniques et contre-mesures pour les points auxquels j'étais accro avec l'application Android et Kotlin (2. Traitement lié à la fonction caméra d'Android *)

2. * Traitement de la fonction de l'appareil photo Android *

Il semble que l'emplacement de stockage de l'image après la prise de vue avec l'appareil photo diffère en fonction de l'application de l'appareil photo fournie par le troisième fournisseur, il est donc nécessaire de faire attention au comportement et au contenu du paramètre implicite * Intent *. De plus, * Android * version 6.0 ou ultérieure exigera que l'utilisateur vérifie l'autorité et confirme l'autorisation lors du premier démarrage de l'application.

2.1 * Traitement du sélecteur * pour sélectionner la fonction galerie ou appareil photo lors de la sélection d'une image

Dans cette application, après avoir pris une photo de la galerie dans le terminal * Android * ou pris une photo avec un appareil photo, l'image est collée après la transition d'écran.

<Problème>

Lorsque vous touchez le bouton de sélection d'écran dans l'enregistrement * Intent * des deux fonctions (implicite * Intent * (fonction de galerie) / implicite * Intent * (fonction de caméra)) de l'image de la galerie ou de la prise de vue de la caméra dans le terminal * Android * Seule * Intent * implicite (fonction de galerie) n'est pas affichée. * Intent * implicite * (fonction de caméra) n'est pas affichée. D'un autre côté, si vous annulez immédiatement et touchez à nouveau le bouton de sélection d'écran, plusieurs * Intent * implicites (fonction de galerie) seront affichés.

Une erreur s'est produite dans l'ordre d'enregistrement * Intention * des deux fonctions de l'image de la galerie * Android * ou de la prise de vue avec l'appareil photo.

L'enregistrement * Intent * de deux fonctions (implicite * Intent * (fonction de galerie) / implicite * Intent * (fonction de caméra)) est dans l'ordre suivant. ① Création * Intent * implicite (fonction caméra) ② Création * Intent * implicite (fonction de galerie) ③ Créer * Sélecteur *

Ordre d'enregistrement des intentions implicites (fonction de galerie / fonction de caméra)


// .....Abréviation
	private fun addPhoto(requestCode: Int) {
		getCameraIntent()
		createChooserIntent()
// .....Abréviation
	}
// .....Abréviation

Création d'une intention implicite (fonction de caméra)


// .....Abréviation
	private fun getCameraIntent() {
		Intent(MediaStore.ACTION_IMAGE_CAPTURE)
// .....Abréviation
	}
// .....Abréviation

Intention implicite (fonction Galerie) et création de sélecteur


// .....Abréviation
	private fun createChooserIntent(): Intent {
		Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
			addCategory(Intent.CATEGORY_OPENABLE)
			type = "image/*"
		}
		return Intent.createChooser(argument).apply {
			putExtra(Intent.EXTRA_INITIAL_INTENTS,argument)
		}
	}
// .....Abréviation

2.2 Traitement pour exclure d'autres applications de caméra de la fonction caméra du * Sélecteur *

Dans cette application, après avoir touché le bouton de sélection d'écran pour exclure l'image de la galerie ou de l'application appareil photo fournie par le troisième fournisseur et avoir pris une photo avec l'appareil photo, l'image d'image est collée après la transition d'écran.

<Problème>

Étant donné que l'emplacement de stockage de l'image capturée est inconnu pour l'application de caméra fournie par un fournisseur tiers, il est exclu du * Sélecteur * en raison du degré d'influence.

Aucun

Après avoir créé une * Intent * implicite (fonction de caméra), créez une nouvelle * Intent * implicite (fonction de caméra) si elle correspond au nom de classe de la fonction de caméra intégrée.

Exclure les autres applications de caméra


// .....Abréviation
	Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
		val intentInfoList = context?.packageManager?.queryIntentActivities(this, 0) ?: return

		//Étant donné que les spécifications des autres applications de caméra sont inconnues, seule la caméra intégrée est ciblée
		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 {
// .....Abréviation
				}
			}
		}
	}
// .....Abréviation

2.3 * Intent * traitement des paramètres de * onActivityResult () * lors de la prise de vue avec l'appareil photo

Dans cette application, après avoir touché le bouton de sélection d'écran pour prendre une photo de la galerie ou d'un appareil photo, l'image de l'image est collée après la transition d'écran.

<Problème>

Après avoir touché le bouton de sélection d'image pour prendre une photo de la galerie ou de l'appareil photo, l'image de l'image n'est pas affichée dans * ImageView * sur la disposition de destination de transition d'écran, et l'écran devient vide.

Lors de la création d'un * Intent * implicite (fonction de caméra) avec * IntentChooser *, le paramètre * Intent * de * onActivityResult () * sera * null * sauf si * putExtra (MediaStore.EXTRA_OUTPUT, cameraUri) * est exclu. , * Intent * Impossible d'obtenir * Uri * pris par l'appareil photo. (Utilisez l'exemple implicite * Intent * de la documentation officielle)

Créez une * Intent * implicite (fonction de caméra) en excluant * putExtra (MediaStore.EXTRA_OUTPUT, cameraUri) *.

putExtra()Exclusion


// .....Abréviation
	Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
		val intentInfoList = context?.packageManager?.queryIntentActivities(this, 0) ?: return

		//Étant donné que les spécifications des autres applications de caméra sont inconnues, seule la caméra intégrée est ciblée
		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 {
// .....Abréviation
					// putExtra(MediaStore.EXTRA_OUTPUT, cameraUri)→ Exclusion
				}
			}
		}
	}
// .....Abréviation

Lien

Causes techniques et contre-mesures pour la première application Android et la dépendance à Kotlin 1. Traitement de la transition d'écran Android (fragment) 3. Traitement lié aux images Android

Recommended Posts

Causes techniques et contre-mesures pour les points auxquels j'étais accro avec l'application Android et Kotlin (2. Traitement lié à la fonction caméra d'Android *)
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin
Causes techniques et contre-mesures pour les points accro aux applications Android et Kotlin (3. Traitement lié aux images Android)
Causes techniques et contre-mesures pour les points accro aux applications Android et Kotlin (3. Traitement lié aux images Android)
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec l'application Android et Kotlin (2. Traitement lié à la fonction caméra d'Android *)
[Android / Java] Transition d'écran et traitement de retour par fragments
Convertir toutes les applications Android (Java) en Kotlin
Résumé des bons points et des précautions lors de la conversion de l'application Java Android vers Kotlin
Spécifier les options de compilation Java / Kotlin pour les applications Android
Une histoire à laquelle j'étais accro à deux reprises avec le paramètre de démarrage automatique de Tomcat 8 sur CentOS 8
J'étais accro au record du modèle associé
Notez que j'étais accro au traitement par lots avec Spring Boot
Notez que j'étais accro aux paramètres du projet Android d'IntelliJ IDEA
J'ai essayé de résumer les bases de kotlin et java
Je veux créer une fonction avec kotlin et java!
J'étais accro au réglage de laradock + VSCode + xdebug
Ce à quoi j'étais accro avec l'API REST Redmine
Je veux revenir à l'écran précédent avec kotlin et java!
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
J'étais accro au paramètre API version min23 de registerTorchCallback
Un mémo sobrement accro à la demande de multipart / form-data
Problèmes auxquels j'étais accro lors de la création de l'environnement digdag avec docker
Enregistré parce que j'étais accro à l'entrée standard de la classe Scanner
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
L'histoire de la sortie de l'application Android sur le Play Store pour la première fois.
[Circle CI] J'étais accro au test automatique de Circle CI (rails + mysql) [Memo]
J'étais accro aux tests unitaires avec l'opérateur de tampon dans RxJava
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'étais accro à la méthode du rouleau
J'étais accro au test Spring-Batch
Résumé des bons points et des précautions lors de la conversion de l'application Java Android vers Kotlin
Résumé des points qui m'inquiétaient lors de la migration de Java vers Kotlin
J'étais accro à faire onActivityResult () avec DialogFragment
La partie à laquelle j'étais accro dans "Introduction à Ajax dans les applications Web Java" de NetBeans