【问题标题】:How to write text file on Tizen Gear S2 local file system?如何在 Tizen Gear S2 本地文件系统上写入文本文件?
【发布时间】:2017-08-10 08:02:16
【问题描述】:

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

我尝试了目录(/opt/usr/media/documents/text.txt),但它没有在设备上创建文件。

我已启用特权:http://tizen.org/privilege/mediastorage。 代码如下:sn-p:

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 应用程序适用于此任务? 谢谢

【问题讨论】:

  • 请在您的问题中包含代码(不要发布它的图片)。将其粘贴到您的问题中,选择所有问题并点击Ctrl+k,以快速轻松地将其格式化为代码。
  • 好的。我现在已经粘贴了问题

标签: c native tizen wearables


【解决方案1】:

我终于可以通过 Tizen Native App Development 在我的 Samsung Gear S2 Classic 中写入文件了。带地址:/opt/usr/media/text.txt。并使用特权http://tizen.org/privilege/mediastorage。这是我的代码 sn-p。


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

【讨论】:

    【解决方案2】:
    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 上,该路径没有“文档”文件夹)。

    【讨论】:

      【解决方案3】:

      也添加这些权限

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

      也许您可以将路径更改为/opt/usr/media/text.txt 并检查文件是否已创建。

      Web 应用程序实际上可以很好地用于此目的,这里有一个示例代码 sn-p :

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

      【讨论】:

        【解决方案4】:

        Web API 可能在这种情况下工作。但是如果你不想转入 Web App Development,那么你可以试试Preference API。它可以让您将传感器数据存储在共享内存中并从中检索数据。

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

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

        希望它会起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-01-28
          • 1970-01-01
          • 1970-01-01
          • 2017-06-08
          • 1970-01-01
          • 2016-02-24
          • 2012-05-30
          相关资源
          最近更新 更多