2017-08-10 5 views
0

Je développe une application native sur Samsung Gear S2 qui avait l'intention d'enregistrer des données de capteurs (accéléromètre) sur l'appareil dans un système de fichiers local.Comment écrire un fichier texte sur le système de fichiers local Tizen Gear S2?

J'essaie le répertoire (/opt/usr/media/documents/text.txt) mais il ne crée pas le fichier sur le périphérique. J'ai activé le privilège http://tizen.org/privilege/mediastorage. Extrait de code ci-dessous:

static char* write_file(const char* buf) 
{ 
    FILE *fp; 
    fp = fopen("/opt/usr/media/documents/text.txt","w"); 
    fputs(buf,fp); 
    fclose(fp); 
} 

static void btn_write_cb(void *data, Evas_Object *obj, void *event_info) 
{ 
    appdata_s *ad = data; 
    buf="string to write"; 
    write_file(buf); 
} 

Quelle est la façon d'écrire à faire? OU l'application Web fonctionne pour cette tâche? Merci

+1

S'il vous plaît inclure le code dans votre question (ne pas publier des photos * * de celui-ci). Collez-le dans votre question, sélectionnez-le tout et appuyez sur Ctrl + k pour un moyen rapide et facile de le formater en code. –

+0

Ok. J'ai collé en question maintenant – ZEESHAN

Répondre

1

Enfin, je suis capable d'écrire des fichiers dans mon Samsung Gear S2 Classic par Tizen Native App Development. Avec l'adresse: /opt/usr/media/text.txt. Et utilisé le privilège http://tizen.org/privilege/mediastorage. Voici mon extrait de code.


static void 
app_get_data(const char *res_file_in, char *res_path_out, int res_path_max) 
{ 
    char *res_path = NULL; 
    res_path= "/opt/usr/media/"; 
    if (res_path) 
    { 
     snprintf(res_path_out, res_path_max, "%s%s", res_path, res_file_in); 
     //free(res_path); //Disabling this statement works for me. 
    } 
} 

static char* 
write_file(const char* filepath, const char* buf) 
{ 
    FILE *fp; 
    fp = fopen(filepath, "w"); 
    fputs(buf, fp); 
    fclose(fp); 
} 

static void 
btn_write_cb(void *data, Evas_Object *obj, void *event_info) 
{ 
    appdata_s *ad = data; 
    char *buf = NULL; 
    buf="Hello"; 
    char filepath[PATH_MAX] = { 0, }; 
    app_get_data("text.txt", filepath, PATH_MAX); 
    write_file(filepath, buf); 
} 
0
  1. En Tizen Vous ne pouvez pas créer un fichier quelque part, même avec http://tizen.org/privilege/mediastorage. Essayez, dans un premier temps, d'écrire le fichier au dossier app_get_shared_data_path() (/opt/usr/apps/<your_app_package_name>/shared/data) auquel Votre application a définitivement un accès en écriture (peut-être Votre application n'a pas accès en écriture au dossier /opt/usr/media/).
  2. De toute façon, vous ne pouvez pas créer de fichier si tous les chemins (/opt/usr/media/documents) n'y existent pas (sur mon Gear S2 il n'y a pas de dossier "documents" sur ce chemin).
0

Ajouter ces privilèges trop

<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/> 
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/> 

Peut-être que vous pouvez changer le chemin /opt/usr/media/text.txt et vérifier si le fichier a créé ou non.

application Web fonctionne à cet effet assez bien fait, voici un extrait de code exemple:

function fileStorage() { 
    var documentsDir, newFile; 

    function onOpenSuccess(fs) { 
     fs.write("This is gonna written into the file"); 
     fs.close(); 
    } 

    try { 
     tizen.filesystem.resolve('internal0', function(result) { 
      documentsDir = result; 
      newFile = documentsDir.createFile('filename.txt'); 
      if (newFile) { 
       newFile.openStream('rw', onOpenSuccess, null, 'UTF-8'); 
      } 
     }); 
    } catch (e) { 
     console.log(e); 
    } 
} 
0

API Web peut fonctionner dans ce cas. Mais si vous ne voulez pas basculer dans le développement d'applications Web, vous pouvez essayer avec Preference API. Il vous donnera la possibilité de stocker des données de capteur dans la mémoire partagée et d'en récupérer des données.

Vous pouvez également parcourir les liens ci-dessous pour savoir comment utiliser l'API de préférences en détails.

  1. Ref. Link 1
  2. Ref. Link 2

Je espère que ça va marcher.