|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Capture d'une photo d'un smartphone avec Windev Mobile |
Débuté par Christian Robert, 28 sep. 2006 16:24 - 12 réponses |
| |
| | | |
|
| |
Posté le 28 septembre 2006 - 16:24 |
Est-il possible de capturer une photo (voire une vidéo) à partir de la caméra d'un smartphone, directement depuis une application widev mobile ? |
| |
| |
| | | |
|
| | |
| |
Posté le 28 septembre 2006 - 18:33 |
alors le probleme est le meme que pour enregistré un son sous wm2003 : il faut passer par des DLL fabricants, sous wm5 apparament il devrait avoir des API mais bon reste à savoir comment les exploitées... a mon avis ce n'est pas simple sinon on aurait les fonctions sous windev mobile... Stef |
| |
| |
| | | |
|
| | |
| |
Posté le 02 octobre 2006 - 18:27 |
stef a écrit :
alors le probleme est le meme que pour enregistré un son sous wm2003 : il faut passer par des DLL fabricants, sous wm5 apparament il devrait avoir des API mais bon reste à savoir comment les exploitées... a mon avis ce n'est pas simple sinon on aurait les fonctions sous windev mobile... Stef
Bonjour,
Je débute en Windev Mobile, Et je cherche également une solution pour me servir de l'appareil photo intégré des PDA en Windev Mobile. Toutes les réponses parlent d’API WM5… Mais comment le faire Windev ? Impossible de trouver un bout de code exemple… Il y a des explications sur http://www.microsoft.com/france/msdn/mobilite/MED307_MSDN_Intro_New_WM5_Native_API.mspx… Qui parlent d’une fonction SHCameraCapture mais je suis incapable de le traduire en windev. Quelqu’un a-t-il d’autres pistes ? |
| |
| |
| | | |
|
| | |
| |
Posté le 05 octobre 2006 - 10:39 |
Bon, j'ai la doc de Microsoft sur cette API SHCamaraCapture qui fait partie de la DLL "CF1Camera.dll" (je l'ai trouvé là http://www.toddm.net/clog/). Cette API a un paramètre shcc dont la structure est de type SHCAMERACAPTURE. Cette fonction renvoie un résultat hr de type HRESULT. Il faudrait donc utiliser, avec Windev Mobile, hr = API("CF1Camera.dll","SHCameraCapture",&shcc) et tester le résultat hr pour vérifier que tout s'est bien passé. Ensuite, je manque de compétence sur la manipulation des API Windows Mobile avec Windev Mobile pour aller plus loin... ps : pour tester cette fonction, il faut impérativement le faire sur le smartphone et non sur l'émulateur car ça ne marche pas Merci de votre contribution pour parvenir à exploiter cette fonction. |
| |
| |
| | | |
|
| | |
| |
Posté le 09 octobre 2006 - 22:05 |
Christian Robert a écrit :
Bon, j'ai la doc de Microsoft sur cette API SHCamaraCapture qui fait partie de la DLL "CF1Camera.dll" (je l'ai trouvé là http://www.toddm.net/clog/). Cette API a un paramètre shcc dont la structure est de type SHCAMERACAPTURE. Cette fonction renvoie un résultat hr de type HRESULT. Il faudrait donc utiliser, avec Windev Mobile, hr = API("CF1Camera.dll","SHCameraCapture",&shcc) et tester le résultat hr pour vérifier que tout s'est bien passé. Ensuite, je manque de compétence sur la manipulation des API Windows Mobile avec Windev Mobile pour aller plus loin... ps : pour tester cette fonction, il faut impérativement le faire sur le smartphone et non sur l'émulateur car ça ne marche pas Merci de votre contribution pour parvenir à exploiter cette fonction.
J'ai l'impression que la dll a utiliser est plutôt : aygshell.dll. ( Voir http://windowsmobilepro.blogspot.com/2006/04/how-to-use-new-camera-api-in-windows.html)
En regardant un peu ce qui se fait en C, j’ai essayé de recopier la structure en Windev, de lui affecter des valeurs, et de la passer en paramètre…
Voila le bout de code que cela donne :
STSHCameraCapture est une structure cbSize est un entier //Type C : DWORD hwndOwner est un entier //Type C : HWND szFile est une chaîne // ? entier dans wdapi , mais pas logique. Type C : TCHAR pszInitialDir est une chaîne //?entier dans wdapi.Type C:LPCTSTR pszDefaultFileName est une chaîne //?entier dans wdapi.Type C: LPCTSTR pszTitle est une chaîne // ? entier dans wdapi. Type C : LPCTSTR StillQuality est un entier //Type CAMERACAPTURE_STILLQUALITY VideoTypes est un entier //Type CAMERACAPTURE_VIDEOTYPES nResolutionWidth est un entier //Type C : DWORD nResolutionHeight est un entier //Type C : DWORD nVideoTimeLimit est un entier //Type C : DWORD Mode est un entier //Type CAMERACAPTURE_MODE FIN
shcc est une STSHCameraCapture shcc:cbSize = Taille(&shcc) shcc:hwndOwner = Handle() shcc:pszInitialDir = "\\My Documents" shcc:pszDefaultFileName = "test.jpg" shcc:pszTitle = "Camera Demo" shcc:VideoTypes = 0 shcc:nResolutionWidth = 176 shcc:nResolutionHeight = 144 shcc:nVideoTimeLimit = 15 shcc:Mode = 0
resultat est un entier resultat = API("aygshell.dll","SHCameraCapture",&shcc) Info (resultat) Info (ErreurInfo(errCodeSystème)) Info (ErreurInfo(errMessageSystème))
Sur mon PDA (spv m600), j'ai les réponses suivantes aux différents info() : 1 6 "Handle non valide"
Donc, comment traduire le : "hwndOwner" du C ? |
| |
| |
| | | |
|
| | |
| |
Posté le 25 janvier 2010 - 23:11 |
Bonjour, Avez vous trouvé une solution à votre problème ? Je serais également intéressé.
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 27 janvier 2010 - 11:13 |
Bonjour à tous,
Je me suis penché sur ce sujet il y a pas mal de temps déjà.
Il faut bien utiliser la DLL "aygshell.dll" et la structure SHCameraCapture
Atention la variable "szFile" (MSDN) est un tableau fixe de 1 par 260 caractères en Windev.
Voici les déclarations que j'ai et qui fonctionnent:
sChaine_pszInitialDir est une chaîne = "\My Documents" sChaine_pszDefaultFileName est une chaîne = "Picture.JPG" sChaine_pszTitle est une chaîne = "Ma photo"
SHCAMERACAPTURE est une structure cbSize est un entier sur 4 octets hwndOwner est un entier sur 4 octets szFile est une tableau fixe de 1 par 260 caractères pszInitialDir est un entier sur 4 octets pszDefaultFileName est un entier sur 4 octets = 0 pszTitle est un entier sur 4 octets StillQuality est un entier sur 4 octets VideoTypes est un entier sur 4 octets nResolutionWidth est un entier sur 4 octets nResolutionHeight est un entier sur 4 octets nVideoTimeLimit est un entier sur 4 octets Mode est un entier sur 4 octets FIN
stMaPhoto est un SHCAMERACAPTURE
stMaPhoto:hwndOwner = Handle(FEN_Fenêtre1) stMaPhoto:pszInitialDir = &sChaine_pszInitialDir stMaPhoto:pszDefaultFileName = &sChaine_pszDefaultFileName stMaPhoto:pszTitle = &sChaine_pszTitle stMaPhoto:StillQuality = 0 stMaPhoto:VideoTypes = 0x0000 stMaPhoto:nResolutionWidth = 176 stMaPhoto:nResolutionHeight = 144 stMaPhoto:nVideoTimeLimit = 0 stMaPhoto:Mode = 0 stMaPhoto:cbSize = Dimension(stMaPhoto)
Ensuite il suffit d'utiliser l'API SHCameraCapture puis récupérer le chemin de l'image caractère par caractère :
j est un entier sCheminImage est une chaîne
POUR j=1 A 260 sCheminImage = sCheminImage + stMaPhoto:szFile[1][j] SI Droite(sCheminImage,4) = ".JPG" ALORS SORTIR FIN |
| |
| |
| | | |
|
| | |
| |
Posté le 17 mars 2014 - 11:38 |
Bonjour,
Je dépoussière le post !
Je dois utiliser l'appareil photo d'un terminal windows mobile.
J'utilise le code donné par Laurent. Mon application se lance bien, je prend une photo mais elle ne s'enregistre pas j'ai surement oublié quelque chose mais quoi ? Voici mon code :
sChaine_pszInitialDir est une chaîne = fRepExe() +["\"]+ "Images\" sChaine_pszDefaultFileName est une chaîne = ChaîneConstruit("MaPhoto_%1_%2.jpg", DateDuJour(), Maintenant()) sChaine_pszTitle est une chaîne = "Ma photo"
SHCAMERACAPTURE est une structure cbSize est un entier sur 4 octets hwndOwner est un entier sur 4 octets szFile est une tableau fixe de 1 par 260 caractères pszInitialDir est un entier sur 4 octets pszDefaultFileName est un entier sur 4 octets pszTitle est un entier sur 4 octets StillQuality est un entier sur 4 octets VideoTypes est un entier sur 4 octets nResolutionWidth est un entier sur 4 octets nResolutionHeight est un entier sur 4 octets nVideoTimeLimit est un entier sur 4 octets Mode est un entier sur 4 octets FIN
stMaPhoto est un SHCAMERACAPTURE
stMaPhoto:hwndOwner = Null stMaPhoto:pszInitialDir = &sChaine_pszInitialDir stMaPhoto:pszDefaultFileName = &sChaine_pszDefaultFileName stMaPhoto:pszTitle = &sChaine_pszTitle stMaPhoto:StillQuality = 3 stMaPhoto:VideoTypes = 0x0000 stMaPhoto:nResolutionWidth = 176 stMaPhoto:nResolutionHeight = 144 stMaPhoto:nVideoTimeLimit = 0 stMaPhoto:Mode = 0 stMaPhoto:cbSize = Dimension(stMaPhoto)
API("aygshell","SHCameraCapture",&stMaPhoto)
j est un entier sCheminImage est une chaîne
POUR j=1 A 260 sCheminImage = sCheminImage + stMaPhoto:szFile[1][j] SI Droite(sCheminImage,4) = ".JPG" ALORS SORTIR FIN
Merci pour vos réponses |
| |
| |
| | | |
|
| | |
| |
Posté le 17 mars 2014 - 13:41 |
Bonjour,
A partir de quel endroit est-ce que le code dysfonctionne ?
Laurent |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 17 mars 2014 - 14:39 |
Bonjour,
Et bien mon tableau szFile est vide. Il ne contient pas l'adresse de mon image. Voilà où j'en suis :
sHInst est un entier nRslt est un entier sHInst = ChargeDLL("aygshell.DLL") MoiMême..Plan = 1
sChaine_pszInitialDir est une chaîne = fRepExe() +["\"]+ "Images\" sChaine_pszDefaultFileName est une chaîne = ChaîneConstruit("MaPhoto_%1_%2.jpg", DateDuJour(), Maintenant()) sChaine_pszTitle est une chaîne = "Ma photo"
SHCAMERACAPTURE est une structure cbSize est un entier sur 4 octets hwndOwner est un entier sur 4 octets
szFile est un tableau fixe de 1 par 260 caractères pszInitialDir est un entier sur 4 octets pszDefaultFileName est un entier sur 4 octets pszTitle est un entier sur 4 octets StillQuality est un entier sur 4 octets VideoTypes est un entier sur 4 octets nResolutionWidth est un entier sur 4 octets nResolutionHeight est un entier sur 4 octets nVideoTimeLimit est un entier sur 4 octets Mode est un entier sur 4 octets FIN
stMaPhoto est un SHCAMERACAPTURE
stMaPhoto:hwndOwner = Null stMaPhoto:pszInitialDir = &sChaine_pszInitialDir stMaPhoto:pszDefaultFileName = &sChaine_pszDefaultFileName stMaPhoto:pszTitle = &sChaine_pszTitle stMaPhoto:StillQuality = 3 stMaPhoto:VideoTypes = 0x0000 stMaPhoto:nResolutionWidth = 176 stMaPhoto:nResolutionHeight = 144 stMaPhoto:nVideoTimeLimit = 0 stMaPhoto:Mode = 0 stMaPhoto:cbSize = Dimension(stMaPhoto)
SI sHInst = 0 ALORS Erreur("Erreur lçors du chargement") SINON nRslt = AppelDLL32("aygshell","SHCameraCapture",&stMaPhoto)
j est un entier sCheminImage est une chaîne
POUR j=1 A 260 sCheminImage = sCheminImage + stMaPhoto:szFile[1][j] SI sCheminImage<>"" ALORS Info(sCheminImage) SI Droite(sCheminImage,4) = ".JPG" ALORS SORTIR FIN DéchargeDLL(sHInst) FIN
-- Merci pour vôtre attention. J'en ferai de même une fois devenue grand (développeur). |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 17 mars 2014 - 15:04 |
J'ai trouvé mon erreur... Le programme marche très bien ! J'appuyais sur "OK" dans le menu au lieu d'appuyer sur la touche "entrer".
Oui, je me sens très bête.
En tout cas merci beaucoup Laurent ! Ton code est très précieux.
Cordialement, Nicolas Saboureau
-- Merci pour vôtre attention. J'en ferai de même une fois devenue grand (développeur). |
| |
| |
| | | |
|
| | |
| |
Posté le 17 mars 2014 - 23:04 |
Ça arrive à tout le monde, même aux meilleurs !
Bon devs. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 7 messages |
|
Posté le 18 mars 2014 - 14:44 |
Encore moi...
Aurais-tu une idée s'il est possible de désactiver et/ou personnaliser le menu de la caméra ?
Merci pour le temps que tu m'accordes.
-- Merci pour vôtre attention. J'en ferai de même une fois devenue grand (développeur). |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|