2017-08-10 5 views
0

Ich entwickle native App auf Samsung Gear S2, die Daten von Sensoren (Beschleunigungsmesser) auf dem Gerät in lokalen Dateisystem aufzeichnen wollte.Wie schreibe ich Textdatei auf Tizen Gear S2 lokalen Dateisystem?

Ich versuche das Verzeichnis (/opt/usr/media/documents/text.txt), aber es erstellt nicht die Datei auf dem Gerät.

Ich habe das Privileg aktiviert: http://tizen.org/privilege/mediastorage. Code-Snippet unten:

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); 
} 

Was ist die Schreib Art und Weise zu tun? ODER Web-App funktioniert für diese Aufgabe? Dank

+1

Sie den Code in Ihrer Frage umfassen (nicht posten * Bilder * davon). Fügen Sie es in Ihre Frage ein, wählen Sie alles aus und drücken Sie 'Strg' +' k' für eine schnelle und einfache Art, es als Code zu formatieren. –

+0

Ok. Ich habe jetzt in Frage gestellt – ZEESHAN

Antwort

1

Endlich kann ich Datei in meinem Samsung Gear S2 Classic von Tizen Native App Entwicklung schreiben. Mit der Adresse: /opt/usr/media/text.txt. Und nutzte das Privileg http://tizen.org/privilege/mediastorage. Hier ist mein Codeausschnitt.


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. In Tizen Sie nicht Datei irgendwo auch mit http://tizen.org/privilege/mediastorage erstellen können. Versuchen Sie zunächst, Datei in app_get_shared_data_path() Ordner (/opt/usr/apps/<your_app_package_name>/shared/data) zu schreiben, auf die Ihre App definitiv Schreibzugriff hat (möglicherweise hat Ihre App keinen Schreibzugriff auf den Ordner /opt/usr/media/).
  2. Wie auch immer, Sie können keine Datei erstellen, wenn der gesamte Pfad (/opt/usr/media/documents) nicht existiert (auf meinem Gear S2 gibt es keinen Ordner "Dokumente" in diesem Pfad). Auch
0

diese Privilegien hinzufügen

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

Vielleicht können Sie den Pfad zu /opt/usr/media/text.txt ändern und überprüfen, ob die Datei oder nicht erstellt hat.

Web App funktioniert für diesen Zweck sehr gut tatsächlich, hier ist ein Beispielcode-Schnipsel:

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

Web API in diesem Fall arbeiten kann. Wenn Sie jedoch nicht in der Web App-Entwicklung wechseln möchten, können Sie es mit Preference API versuchen. Es bietet Ihnen die Möglichkeit, Sensordaten im Shared Memory zu speichern und daraus Daten abzurufen.

Sie können auch durch die folgenden Links gehen, um zu erfahren, wie Sie die Preference API im Detail verwenden.

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

Hoffe, es wird funktionieren.

Verwandte Themen