PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile (versiones precedentes) → Ouvrir une application Photo autre que celle par défaut
Ouvrir une application Photo autre que celle par défaut
Iniciado por Julie, 14,mar. 2024 12:06 - No hay respuesta
Publicado el 14,marzo 2024 - 12:06
Bonjour,

Depuis Android 11 on ne peut plus déclarer un autre application photo que celle de native comme étant par défaut. L'application photo native ne convient pas à mes opérateurs. J'ai fait des tests sur OpenCamera qui leur convient mieux... Ma problématique étant comment la lancer mais surtout comment récupérer les photos renvoyées par cette application.

Voici mon code d'origine :
Procedure NouvellePhoto(sCB est une chaîne, nPos)
sCheminGalerie est une chaîne
sNomDestination est une chaîne=""
sNomCompletDestination est une chaîne=""


SI EnModeTest() ALORS
sNomCompletDestination = "C:\Users\julie.aymard\Pictures\Screenshot_20220608-092840.png"
RENVOYER sNomCompletDestination
FIN
// Lancement de la prise de photo, si la photo est prise, la fonction renvoie le chemin de la photo enregistrée dans la galerie
sCheminGalerie=CaméraLanceAppli(viCaptureImage)




//Si l'opérateur a pris une photo sans annuler, le chemin renvoyé n'est pas vide
SI sCheminGalerie<>"" ALORS

//On récupère l'angle de rotation
nRotation est une entier = GetExifAngle(sCheminGalerie)

// Futur nom du fichier photo
sNomDestination = ChaîneConstruit("%1-%2%3",DateHeureSys(), DonneGUID(guidBrut), fExtraitChemin(sCheminGalerie,fExtension))

//chemin complet du fichier à sauvegarder (dans les documents publics du smartphone)
sNomCompletDestination = PhotoCheminCompresse(sNomDestination)

// Copie du fichier originel avant de le travailler
fCopieFichier(sCheminGalerie,sNomCompletDestination)
//Suppression du fichier de la galerie
fSupprime(sCheminGalerie)

MonImage est une Image = dChargeImage(sNomCompletDestination)

nRatio est un numérique
SI MonImage..Hauteur > MonImage..Largeur ALORS
nRatio= MonImage..Largeur/gnTailleMax
SINON
nRatio= MonImage..Hauteur/gnTailleMax
FIN
dRedimensionne(MonImage,MonImage..Largeur/nRatio,MonImage..Hauteur/nRatio)

//On tourne l'image de l'angle de rotation donné par la fonction exif
dRotation(MonImage, nRotation)

//On enregistre l'image en lui affectant un coefficient de qualité ex: 50%
SI dSauveImageJPEG(MonImage,sNomCompletDestination,gnPourcentageCompression) ALORS

//Suppression d'une éventuelle photo sur la même pièce
HLitRecherchePremier(T_ACTION,ACT_PHOTO_POSITIONACT_PHOTO_CB_PIECE,[ Val(nPos), sCB])
SI HTrouve(T_ACTION) ALORS
HSupprime(T_ACTION)
FIN

// Ajout dans la base de données des actions à traiter
HRAZ(T_ACTION)
T_ACTION.ACT_PHOTO_COMPRESSEE_CHEMIN = sNomCompletDestination
//T_ACTION.ACT_PHOTO_GALERIE_CHEMIN = sCheminGalerie
T_ACTION.ACT_PHOTO_CB_PIECE = sCB
T_ACTION.ACT_PHOTO_POSITION = Val(nPos)
T_ACTION.ACT_ENVOYE=0
HAjoute(T_ACTION)


// Appel WS
SI gnTempsReel =1 _ET_ ThreadEtat("ThreadEnvoiActionsWs") = threadInexistant ALORS
ThreadExecute("ThreadEnvoiActionsWs", threadNormal, "EnvoiActionsWS",sCB,nPos)
FIN
FIN
FIN

RENVOYER sNomCompletDestination


Sachant que sur mon application comporte une liste de photos à prendre dans une liste répétée. L'opérateur clique sur celle qu'il veut prendre ... ma procédure se lance permettant de lancer l'application, l'opérateur prend la photo puis valide sur Ok et cela ramène à l'écran avec la zone répétée... en affichant la photo en icône. Il peut également passer en mode "rapide" et enchainer les photos sans repasser par la zone répétée... je ne sais pas si je suis assez claire.