Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OccTax 1.3.0 - Cartes embarquées non visibles #101

Closed
Chrispnv opened this issue Nov 18, 2021 · 23 comments
Closed

OccTax 1.3.0 - Cartes embarquées non visibles #101

Chrispnv opened this issue Nov 18, 2021 · 23 comments

Comments

@Chrispnv
Copy link

Bonjour,

Après avoir installé le nouvel environnement Geonature 2.8.1 (Taxhub 1.9.1 et usershub 2.2.1), on s'est attaqué à Geonature mobile (Sync et Occtax) avec la version 1.3.0 sur des téléphones Samsung A50 et A40 en Android 11.
Après avoir suivi la doc, Sync 1.3.0 et Occtax 1.3.0 sont installés et fonctionnel sauf pour l'affichage des fonds carto embarqués sur le mobile se trouvant dans fr.geonature.maps. Ils ne s'affichent pas. Nos paramètres dans le fichier settings_occtax.json sont bons car ce sont ceux des versions antérieures.
On a testé le déploiement de Sync et Occtax 1.3.0 sur d'autres téléphones en Android 11. Les fonds carto sont visibles. On s'est aperçu après avoir mis à jour nos téléphones Samsung A50 et A40 en Android 11 que le répertoire Android/data est vide sur le téléphone alors que le répertoire est accessible dans le gestionnaire de fichiers Windows quand le téléphone est branché sur l'ordinateur.
Donc on se demande s'il n'y aurait pas un problème d'accès à Android/data sur Android 11 sur les Samsung A50 et A40. Pourtant Sync mobile montre bien le chemin /storage/emulated/0 qui est le même que le début du chemin du base_path dans settings_occtax.json

Avez vous une idée de ce qui pourrait bloquer sur ces Samsung avec Android 11 et comment le résoudre ?

Merci d'avance

@sgrimault
Copy link
Collaborator

sgrimault commented Nov 19, 2021

##Bonjour Christophe,
Pourrais tu m'envoyer les logs (adb) lorsque tu lances l'application "Occtax" en allant jusqu'à l'étape de la carte ?
Dans les logs, il va notamment indiquer les points de montage trouvés (au démarrage de l'application), ainsi que les fonds de carte chargés avec leurs chemins d'accès (dès qu'on arrive sur l'étape de la carte).

Je pense que l'application n'a sans doute pas les droits d'accès pour aller lire ces fichiers...

cf. PnX-SI/gn_mobile_core#36

@Chrispnv
Copy link
Author

Je viens de regarder dans les logs. Il y a bien
11-19 10:05:24.424 18988 18988 W fr.geonature.maps.settings.LayerSettingsViewModel: cannot access to '/storage/emulated/0/Android/data/fr.geonature.maps'...
Je t'envoie le log par mail.

@sgrimault
Copy link
Collaborator

@Chrispnv
Un truc bizarre, pourquoi cherche il à vouloir accéder à /storage/emulated/0/Android/data/fr.geonature.maps ?
Pourrais tu m'envoyer aussi le fichier de configuration actuel de l'application (settings_occtax.json) ?

@Chrispnv
Copy link
Author

On a repris la config antérieure à 1.3.0 qu'on avait (1.2.4) qui fonctionne sur Android 10.
Une chose que je n'ai pas dit. Sync 1.3.0 et Occtax 1.3.0 fonctionnent sur un Xiaomi en Android 10 avec la config le settings actuel (voir dessous). On n'a pas pu encore tester sur un Android 11 autre que sur Samsung A50 et A40
Voici notre config dans settings_occtax.json
{
"area_observation_duration": 1825.0,
"map": {
"base_path": "/storage/emulated/0/Android/data/fr.geonature.maps",
"show_scale": true,
"show_compass": true,
"max_bounds": [
[
46.0,
7.5
],
[
44.0,
5.1
]
],
"center": [
45.38,
6.83
],
"start_zoom": 11.0,
"min_zoom": 8.0,
"max_zoom": 18.0,
"min_zoom_editing": 15.0,
"layers": [
{
"label": "Scans",
"source": "scanvanoise.mbtiles"
},
{
"label": "Ortho",
"source": "ortho.mbtiles"
},
{
"label": "Mailles",
"source": "unities.geojson",
"style": {
"stroke": true,
"color": "#FF0000",
"weight": 7.0,
"opacity": 0.6,
"fill": true,
"fillColor": "#FF8000",
"fillOpacity": 0.2
}
}
]
}
}

@sgrimault
Copy link
Collaborator

sgrimault commented Nov 19, 2021

Ok, donc c'est bien la valeur de l'attribut base_path qui pose problème : On ne peut plus pointer sur un répertoire privé d'une autre application (ici fr.geonature.maps).
Sur Android 11, l'accès à /Android/data reste privé à chaque application, même sur l'espace de stockage externe.

@Chrispnv
Copy link
Author

C'est quelque chose qui peut être corrigé facilement ou faut il imaginer une prestation ?

@DonovanMaillard
Copy link
Collaborator

Le support de Android 11 et son changement d'accès aux répertoires est une prestation en cours. Mais dans ce cas c'est essentiellement de la configuration, pour que kes cartes soient stockées ailleurs que dans ke répertoire d'une application, mais uniquement dans des répertoires partagés en dehors de android/data

C'est lié aux changements de politiques d'accès aux répertoires qui sont arrivés sous Android 11. Tu peux stocker tes fonds en ligne dans un répertoire "maps" a la racine de ta carte sd par exemple et adapter ta configuration. Ca devrait fonctionner :)

@Chrispnv
Copy link
Author

Chrispnv commented Nov 19, 2021

@DonovanMaillard
Au moment où j'ai posté je me suis fait la même réflexion que toi.
On a testé et ça marche effectivement. Par contre on n'a pas mis les fonds carto sur la carte SD car certains nouveaux téléphones n'ont plus de carte SD. Voici ce qu'on a testé en lien avec notre contexte de déploiement.
Actuellement on a Sync et Occtax en 1.2.4 pointant sur fr.geonature.maps
On a la nouvelle version de Sync et Occtax configurée en centralisé sur le serveur.
Sur les téléphones nos agents vont cliquer sur Sync qui va se mettre à jour en 1.3.0 et dans la foulée mettre à jour Occtax en 1.3.0. Donc dans ce cas là, settings_sync.json et settings_occtax.json se mettent tous les 2 dans fr.geonature.sync. Occtax pointe vers fr.geonature.sync = c'est OK
Nos agents auront à déplacer (ou on le fera pour eux) les mbtiles dans un répertoire maps dans fr.geonature.occtax
Donc voici ce qu'on a testé.
si settings_occtax.json est dans fr.geonature.occtax = ça marche
si settings_occtax.json est dans fr.geonature.sync = ça marche
Vu que Occtax a été installé depuis Sync, Occtax doit fonctionner avec les 2 répertoires fr.geonature.occtax et fr.geonature.sync. Pourtant on est en Android 11 et si j'ai bien compris ce que vous avez mis, les répertoires fr.geonature.occtax et fr.geonature.sync sont étanches.
En tout cas, tout fonctionne. On va pousser les tests plus loin afin de ne pas trouver d'autres surprises. Si tout va bien, on aura un environnement Geonature complet fonctionnel !!
@DonovanMaillard @sgrimault merci d'avoir pris le temps de répondre et de nous aider !

@DonovanMaillard
Copy link
Collaborator

DonovanMaillard commented Nov 19, 2021

C'est là ou on va voir si j'ai tout compris ;) Mais comme Sync et Occtax sont obligées de communiquer entre elles, c'est bien deux applications différentes mais qui partagent un même identifiant il me semble (pour ca que Sync peut mettre occtax à jour par exemple).

Pour plus de généricité/tranquilité, je ne mettrais pas votre répertoire comportant les mbtiles dans un répertoire d'application, mais bien dans un dossier distinct. Au moins il ne peut pas bouger au fil des mises à jour , désinstallations/réinstallations, et les fonds pourront être utilisés par d'autres applis (maps, oruxmap etc)

@camillemonchicourt
Copy link
Member

Oui c'est clair il vaut mieux les mettre carrément ailleurs.
D'ailleurs ce dossier peut être sur la carte SD ou mémoire interne et si il est au même niveau, l'application arrivera à le trouver dans la carte SD ou dans la mémoire interne automatiquement.

@gildeluermoz
Copy link

Selon la doc, le paramètre base_path n'est pas obligatoire
base_path Sets the default layers path (default: null)

A priori si tu ne le défini pas, la localisation des cartes peut-être plus lente mais cela permet d'envisager des localisations des mbtiles différentes sur des terminaux avec ou sans carte SD. Peut-être que si les mbtiles sont très proches de la racine, leur localisation peut être plus rapide.
En tout cas, j'ai testé sans ce paramètre et ça fonctionne. Mais pour le moment je n'ai fait le test que sur un Androïd 8.

Qu'on me corrige si je dis des conneries.

@camillemonchicourt
Copy link
Member

Exact.
J'avais noté ça quelque part mais je ne sais plus où.
De mémoire, si l'appareil a une carte SD, il cherche d'abord le chemin relatif sur celle-ci. Si il n'y trouve pas le fichier ou que l'appareil n'a pas de carte SD, il cherche le dossier sur le stockage local, sinon il cherche le fichier sur tout le stockage.
Idem si le chemin n'est pas spécifié.
Dans ce cas en effet c'est plus long mais ça fonctionne.

@IP-V15
Copy link

IP-V15 commented May 2, 2022

Bonjour
Nous rencontrons le même problème sur un Samsung A52 sous Android 12 avec une sdcard.
Je ne sais pas comment changer le chemin d'accès aux cartes dans l'application.
Y'a t'il une solution simple pour résoudre le pb ?
Merci

@camillemonchicourt
Copy link
Member

Pouvez-vous préciser le problème rencontré et le contexte ?
Car plusieurs sont abordés dans ce ticket.

@IP-V15
Copy link

IP-V15 commented May 2, 2022

Le fond de carte ne s'affiche pas sur la version Octax version1.3.0.2290.

@IP-V15
Copy link

IP-V15 commented May 2, 2022

C'est sur le téléphone de Dominique CHAVY (PNRVerdon). Il doit animer avec Muriel KREBS la mise en oeuvre de Geonature Mobile le 10 mai prochain sur tous les portable des collègues des PNR de la région

@camillemonchicourt
Copy link
Member

Dans quel répertoire est-il stocké ?
Il s'affichait avant ? Dans ce cas, quel changement a entrainé le fait qu'il ne s'affiche plus ?
Quelle est la configuration globale d'Occtax-mobile sur votre serveur GeoNature ?

@IP-V15
Copy link

IP-V15 commented May 2, 2022

C'est la première installation du logiciel. Tous semble fonctionner (saisie d'une observation).
Seule le fond de carte ne s'affiche pas.
Nous avons suivi la dernière procédure transmise par Muriel à Dominique avec les adresses des deux serveurs.
Nous avons déposer les fonds d'abord dans le répertoire android/data/fr.geonature de la sdcard, puis nous avons essayé sur la mémoire du téléphone sans plus de succès.

@camillemonchicourt
Copy link
Member

Il faudrait voir ce qui est indiqué dans la configuration d'Occtax-mobile au niveau du serveur GeoNature pour y voir plus clair.

De notre on ne met jamais les fonds de carte dans le dossier de l'application, mais bien ailleurs.
Par exemple, on a créé un dossier dédié /Offline_maps/ à la racine du stockage interne ou de la carte SD et tout fonctionne bien sur les différentes versions d'Android.
Cela nous permet aussi d'utiliser ces fonds de carte avec d'autres applications comme Oruxmaps.

Mais pour que ça fonctionne bien, il faut indiquer cela dans le paramètre "base_path" dans la configuration d'Occtax-mobile au niveau du serveur GeoNature.

Par contre sur Android 11 et plus, il faut valider une autorisation pour autoriser l'application Occtax-mobile à aller chercher un fichier dans ce dossier.

A noter qu'une version 2 d'Occtax-mobile est sortie récemment avec beaucoup d'évolutions et notamment la fusion d'Occtax-mobile et Sync-mobile.
Donc si vous déployez des terminaux, il est fortement conseillé d'utiliser la nouvelle version, car sinon vous devrez mettre à jour manuellement en version 2 car il s'agit d'un changement conséquent.

@IP-V15
Copy link

IP-V15 commented May 2, 2022

En fait, nous n'avons pas du tout accès au paramétrage du serveur geonature. Du coup, c'est un peu compliqué.
Aussi, je vais essayé l'installation de la version 2 d'occtax-mobile demain. Je vous tiens au courant. Merci pour toutes ses informations.

@camillemonchicourt
Copy link
Member

Vous ne pouvez pas installer la V2 de Occtax-mobile, si le serveur GeoNature n'a pas été configuré pour cette version.
C'est à l'administrateur de votre GeoNature de gérer et préparer tout ça.

J'ai trouvé la configuration d'Occtax-mobile sur votre serveur Geonature (https://geonature.pnrpaca.fr/api/gn_commons/t_mobile_apps) :

[
  {
    "id_mobile_app": 1,
    "app_code": "OCCTAX",
    "url_apk": "https://geonature.pnrpaca.fr/api/static/mobile/occtax/occtax-1.3.0-generic-release.apk",
    "package": "fr.geonature.occtax",
    "version_code": "2290",
    "settings": {
      "area_observation_duration": 365,
      "map": {
        "base_path": "Android/data/fr.geonature.sync",
        "show_scale": true,
        "show_compass": true,
        "max_bounds": [
          [
            52.10650519075632,
            -13.271484375
          ],
          [
            36.10237644873644,
            17.6220703125
          ]
        ],
        "center": [
          47.225827,
          -1.55447
        ],
        "start_zoom": 10,
        "min_zoom": 8,
        "max_zoom": 19,
        "min_zoom_editing": 12,
        "layers": [
          {
            "label": "OSM France",
            "source": "demo_scan.mbtiles"
          },
          {
            "label": "Scan25",
            "source": "scan25.mbtiles"
          },
          {
            "label": "Périmètres PNR",
            "source": "pnr_paca.geojson"
          }
        ]
      },
      "nomenclature": {
        "information": [
          "METH_OBS",
          {
            "key": "ETA_BIO"
          },
          {
            "key": "METH_DETERMIN",
            "visible": true,
            "default": false
          },
          {
            "key": "STATUT_BIO",
            "visible": true,
            "default": false
          },
          {
            "key": "NATURALITE",
            "visible": true,
            "default": false
          },
          {
            "key": "PREUVE_EXIST",
            "visible": true,
            "default": false
          }
        ],
        "counting": [
          "STADE_VIE",
          "SEXE",
          "OBJ_DENBR",
          "TYP_DENBR"
        ]
      },
      "no_such_property": "no_such_value"
    }
  },
  {
    "id_mobile_app": 2,
    "app_code": "SYNC",
    "url_apk": "https://geonature.pnrpaca.fr/api/static/mobile/sync/sync-1.3.0-generic-release.apk",
    "package": "fr.geonature.sync",
    "version_code": "3150",
    "settings": {
      "geonature_url": "https://geonature.pnrpaca.fr",
      "taxhub_url": "https://geonature.pnrpaca.fr/taxhub",
      "uh_application_id": 3,
      "observers_list_id": 1,
      "taxa_list_id": 100,
      "code_area_type": "M1",
      "page_size": 100
    }
  }
]

Il faudrait que votre administrateur GeoNature modifie le paramètre "base_path": "Android/data/fr.geonature.sync" pour privilégier un chemin en dehors de Android/data/ et que tous les utilisateurs mettent leurs fonds de carte dans le même dossier.

Je vois qu'il y a aussi quelques ajustements à faire aussi dans la configuration pour modifier les champs affichées ou masqués.

Enfin, comme évoqué, je conseille de déployer la version 2 et non pas la 1.3.0 si vous déployez Occtax-mobile sur une flotte mobile. Pour cela, l'administrateur doit suivre les indications dans les notes de la version 2.0.0 : https://github.com/PnX-SI/gn_mobile_occtax/releases

@IP-V15
Copy link

IP-V15 commented May 2, 2022

Effectivement, Dominique à essayé et cela à planté...
je vais essayé de trouver qui est l'administrateur du serveur et lui demandé les modifs que vous indiquées.
Bonne soirée

@DonovanMaillard
Copy link
Collaborator

A priori obsolète. A voir si de tels soucis apparaissent de nouveau sur la V2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants