PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → [WM16] Android, synchronisation des données
[WM16] Android, synchronisation des données
Iniciado por solioz@winsoftinformatique.ch, 03,feb. 2011 15:42 - 14 respuestas
Publicado el 03,febrero 2011 - 15:42
Bonjour,
J'ai repris une mise à jour de WD Mobile 16 pour développer pour Android. Il y a pas mal de limitations...

J'ai une base de donnée centralisée, que je souhaite synchroniser avec ma tablette Androïd (Mercury 3Gx).

Première idée : j'ai créé une analyse avec des fichiers SQL lite et des fichiers HS Serveur. Depuis mon PC, impossible d'accéder aux fichiers SQL Lite de la tabette, depuis la tablette, impossible de se connecter à l'HF serveur car incompatible. C'est le serpent qui se mors la queue...

Deuxième idée : un fichier CSV ou XML que je transfert sur un serveur via FTP.
OK pour le faire via mon PC, c'est la routine, sans soucis.
Par contre sur la tablette, impossible de récupérer ce fichier pour le traiter.
XMLouvre est indisponible sous Android...

ftpRecupère fonctionne sur mon PC en test mais par contre sur la tablette :
Erreur : impossible de créer le ficheir <rapports.txt> ou de l'ouvrir en écriture.

Le problème vient qu'on ne peut pas écrire sur la tablette. Quel chemin indiquer pour le faire ??? Comment doit-on nommer pour aller sur la clef USB par exemple ??

En vous remerciant par avance pour vos éclairages !
Publicado el 03,febrero 2011 - 16:11
Bonjour,
Tu peux peut-être utiliser un WebService pour faire communiquer ton
application mobile avec la base centrale.

Frédéric.
<solioz@winsoftinformatique.ch> a écrit dans le message de
news:20560ef676e74eed609c17cc377599b0@news.pcsoft...

Bonjour,
J'ai repris une mise à jour de WD Mobile 16 pour développer pour Android.
Il y a pas mal de limitations...

J'ai une base de donnée centralisée, que je souhaite synchroniser avec ma
tablette Androïd (Mercury 3Gx).

Première idée : j'ai créé une analyse avec des fichiers SQL lite et des
fichiers HS Serveur. Depuis mon PC, impossible d'accéder aux fichiers SQL
Lite de la tabette, depuis la tablette, impossible de se connecter à l'HF
serveur car incompatible. C'est le serpent qui se mors la queue...

Deuxième idée : un fichier CSV ou XML que je transfert sur un serveur via
FTP.
OK pour le faire via mon PC, c'est la routine, sans soucis.
Par contre sur la tablette, impossible de récupérer ce fichier pour le
traiter.
XMLouvre est indisponible sous Android...

ftpRecupère fonctionne sur mon PC en test mais par contre sur la tablette
:
Erreur : impossible de créer le ficheir <rapports.txt> ou de l'ouvrir en
écriture.

Le problème vient qu'on ne peut pas écrire sur la tablette. Quel chemin
indiquer pour le faire ??? Comment doit-on nommer pour aller sur la clef
USB par exemple ??

En vous remerciant par avance pour vos éclairages !

Publicado el 03,febrero 2011 - 17:01
Autre idée : embarquer la base de données directement dans l'appli (on peut inclure des fichiers dans le APK depuis l'assistant de génération Android) puis, au lancement de l'appli, l'extraire sur la tablette avec la fonction fExtraitRessource
Miembro registrado
17 mensajes
Publicado el 03,febrero 2011 - 17:18
Salut,

Android est un système très fermé. J'ai fait quelques essais et recherches : la tablette comme pour un téléphone n'est jamais root. C'est donc difficile d'accéder à la RAM du mobile (pb de droits).

J'ai envisagé la solution suivante : créer un fichier SQLite sur le PC avec windev et transfert du fichier sur la sdcard du mobile. Dans l'appli android, j'utilise la base présente sur la sdcard.

pas mieux comme idée.

A+
Adrien
Publicado el 03,febrero 2011 - 17:41
Merci pour ces pistes.

Frédéric :
Il semble que les Webservice ne soient pas disponibles sous Android !!

Merci pour vos commentaires.
Publicado el 14,febrero 2011 - 15:40
wddev a écrit dans le message de news <523a14f656c8f079e0c8eca14f34a360@news.pcsoft> :
> Autre idée : embarquer la base de données directement dans l'appli (on peut inclure des fichiers dans le APK depuis l'assistant de génération Android) puis, au lancement de l'appli, l'extraire sur la tablette avec la fonction fExtraitRessource


Je viens d'essayer de faire cette opération :

- mettre la base dans le .apk
- faire fExtraitRessource, mais là, je coince : quel chemin indiquer ?
- et ensuite, lorsque je fais HChangeConnexion, de nouveau quel chemin indiquer ?
Miembro registrado
38 mensajes
Publicado el 14,febrero 2011 - 20:04
fExtraitRessource("mabase.db",ComplèteRep(fRepDonnées())+"mabase.db")

cnxSQLite est une Connexion
cnxSQLite..Source="ComplèteRep(fRepDonnées())+"mabase.db""
cnxSQLite..Provider=hAccèsNatifSQLite

HOuvreConnexion(cnxSQLite )
HChangeConnexion("*",cnxSQLite)

A+
Publicado el 15,febrero 2011 - 14:31
J'ai fait EXACTEMENT ce code ... mais la première instruction HNbEnr sur une des tables donne -1 ....

J'avait ajouté la ressource en sélectionnant "raw" .... est-ce que cela vient de là ?
Publicado el 15,febrero 2011 - 14:31
Je complète mon commentaire d'hier ... après de multiples tentatives pour utiliser l'extraction de ressources .... cela ne marche pas ...

En laissant 'automatique' cela ne marche pas
En mettent 'raw' l'extraction se fait mais la base est inexploitable
.... que faut-il faire ???

Finalement je me suis rabatu sur la solution de la carte SD ... en mettant à la main ma base sur la carte SD de ma DELL STREAK et cela marche !... mais comment faire de même avec l'émulateur ? comment peut-on copier la base dans l'image de la carte sur le PC - crée dans temp ?
Publicado el 15,febrero 2011 - 16:50
MONOT a écrit dans le message de news <84f743a37b6b0e97e39c0ab5f9a7c4e9@news.pcsoft> :
> J'ai fait EXACTEMENT ce code ... mais la première instruction HNbEnr sur une des tables donne -1 ....

Si HNbEnr retourne -1 c'est qu'il y a eu une erreur.
Quel est le message d'erreur (connu avec HErreurInfo()) ?
Miembro registrado
38 mensajes
Publicado el 18,febrero 2011 - 13:21
Attention également à la casse.
Android est casse sensitive.

Donc Base.db est différent de base.db
Publicado el 12,mayo 2011 - 08:54
Je reviens mon pb est toujours la ....

Quand je mets ma c:/temp/base.db dans le .apk, sans rien specifier(je laisse 'automatique') et que je demande fExtraitRessource, j'obtiens une erreur 'impossible d'extraire la ressource'....

Faut-il specifier 'raw' ? Peut on demander un 'asset' comme le prevoit android ?
Publicado el 13,mayo 2011 - 00:48
J'ai migré une application de windows vers android qui tourne depuis 5 ans maintenant.
J'ai passé pas mal de temps à tester ce qui n'est pas possible de faire sous android par rapport à windows avec WD.
En conclusion j'ai refait l'application dans sa totalité et modifier les pocédures de synchronisation.
L'application utilise des webservices,importe et exporte des fichiers via ftp
Synchronise des données sql et hyperfile avec un serveur,exportent et importent des fichiers photo.
Tous les services fonctionnent sans problème
Les applications tournent sur des galaxy tab 1ere generation.
Pour la synchronisation je compresse une base sql qui est envoyée vers le serveur et manipulée une fois décompressée.

Ce que je ne comprends pas c'est pourquoi on ne peut pas développer de widgets avec WD?
Obligé de passer par eclipse.
Publicado el 18,mayo 2011 - 13:23
Monot a écrit dans le message de news <f781c36889d761e65002ffccf1e89714@news.pcsoft> :
Je reviens mon pb est toujours la ....

Quand je mets ma c:/temp/base.db dans le .apk, sans rien specifier(je laisse 'automatique') et que je demande fExtraitRessource, j'obtiens une erreur 'impossible d'extraire la ressource'....

Faut-il specifier 'raw' ? Peut on demander un 'asset' comme le prevoit android ?



Je viens d'avoir la réponse du support PCSOFT : il y a un souci actuellement avec les bases de données > 1Mo ...

Voici la solution de contournement en attendant que PCSOFT corrige le bug.

==============
En fonction du périphérique des cas d'échec de compression / décompression de fichiers ont pu être identifiés, et sont en cours de résolution.

Un palliatif immédiat, peut être de placer le .db dans l'application, en empêchant sa compression. Pour parvenir à ce résultat, il faut modifier l'extension du fichier contenant les données. En effet, tous les fichiers de plus de 1 Mo à placer dans l'application apk sont compressés, sauf ceux ayant l'extension :
".jpg", ".jpeg", ".png", ".gif", ".wav", ".mp2", ".mp3", ".ogg", ".aac", ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".amr", ".awb", ".wma", ".wmv"

je vous conseille donc de renouveler le test en effectuant les opérations suivantes :
- renommer sur le PC le .db en .mp3 par exemple avant de créer l'application android
- créer l'application en ajoutant le fichier .mp3 des données,
- après l'appel de fExtraitChemin, renommer le .mp3 extrait en .db à l'aide de la fonction fRenomme.
===============
Publicado el 27,mayo 2011 - 17:55
Bonjour Monot,
Je passe en ce moment par les mêmes difficultés par lesquelles tu passais et avec exactement les mêmes erreurs.
Donc j'ai changé l'extension du fichier_de_données de .db en .mp3 (du coup mon fichier de base de données se nomme maintenant Projet_Android_Lecture_Code_Barre_Test.mp3.db), j'ai ensuite lancé la procédure d'installation en laissant le répertoire d'intégration des fichier en mode automatique.
J'installe sur le terminal archos 4.3 it sous android, à l'éxecution j'ai l'erreur suivante:
....................
-Appel WL: Fonction <fExtraitRessource>
-Niveau: erreur non fatale
-Message d'erreur
-Message d'erreur système: La ressource n'a pas été trouvée dans les ressources de l'application.
(Rappel : la ressource doit avoir été intégrée dans le repertoire 'raw' de l'application)
-Que s'est il passé? Impossible d'extraire la ressource 'Projet_Android_Lecture_Code_Barre_Test.jpg'
......................

J'ai donc voulu relancer la procédure d'installation en changeant le répertoire d'intégration des fichier en raw. Sauf que quand je sélectionne 'raw', la procédure de génération de l'application android m'affiche le message d'erreur suivant:

.........................................
Echec de la création de l'application Android <C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Exe\Projet_Android_Lecture_Code_Barre_Test.apk>.


Ligne de commande : .\platform-tools\aapt.exe package -m -J "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\gen" -M "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\AndroidManifest.xml" -S "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\res" -I "platforms\android-12\android.jar"


Erreur retournée :
res\raw\projet_android_lecture_code_barre_test.xdd:0: error: Resource entry projet_android_lecture_code_barre_test is already defined.
res\raw\projet_android_lecture_code_barre_test.jpg.db:0: Originally defined here.

..................................................

Du coup je suis bien bloqué...

Vous avez une idée?