2017-08-10 136 views
0

我正在开发三星Gear S2上的本地应用程序,该应用程序旨在将设备上的传感器(加速计)的数据记录到本地文件系统中。如何在Tizen Gear S2本地文件系统上编写文本文件?

我尝试目录(/opt/usr/media/documents/text.txt),但它没有在设备上创建文件。我已启用特权:http://tizen.org/privilege/mediastorage。 代码片断如下:

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

什么是写的方式做?或Web应用程序为这项任务工作? 感谢

+1

请在您问题的代码(不张贴*图片*它)。将其粘贴到您的问题中,选择所有内容并点击Ctrl + K键快速轻松地将其格式化为代码。 –

+0

好的。我已经贴上了问题 – ZEESHAN

回答

1

最后,我可以通过Tizen本地应用程序开发在我的Samsung Gear S2 Classic中编写文件。地址:/opt/usr/media/text.txt。并使用特权http://tizen.org/privilege/mediastorage。这是我的代码片段。


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. 在Tizen你甚至不能与http://tizen.org/privilege/mediastorage地方创建文件。尝试,首先,将文件写入app_get_shared_data_path()文件夹(/opt/usr/apps/<your_app_package_name>/shared/data),您的应用程序肯定有写入权限(可能是您的应用程序没有写入/opt/usr/media/文件夹)。
  2. 无论如何,如果所有路径(/opt/usr/media/documents)都不存在,则无法创建文件(在我的Gear S2上,该路径中没有“文档”文件夹)。
0

添加这些特权太

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

也许你可以将路径更改为/opt/usr/media/text.txt并检查文件创建或没有。

的Web应用程序适用于这一目的很好实际上,这里是一个示例代码段:

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可以在这种情况下工作。但是如果您不想切换Web应用程序开发,那么您可以使用Preference API来尝试。它将为您提供将传感器数据存储在共享内存中并从中检索数据的功能。

您也可以通过下面的链接了解如何使用Preference API的细节。

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

希望它会工作。

相关问题