如何在Tizen Gear S2本地文件系统上编写文本文件?

时间:2017-08-10 08:02:17

标签: c native tizen wearables

我在Samsung 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应用程序为此任务工作? 感谢

3 个答案:

答案 0 :(得分:0)

  1. 在Tizen中即使使用 <div *nfIf="condition;else notcondition"> <router-outlet></router-outlet> </div> <ng-template #notcondition> <router-outlet></router-outlet> </ng-template> 也无法在某处创建文件。首先尝试将文件写入您的应用程序绝对具有写访问权限的http://tizen.org/privilege/mediastorage文件夹(app_get_shared_data_path())(可能是您的应用程序无权写入/opt/usr/apps/<your_app_package_name>/shared/data文件夹)。
  2. 无论如何,如果文件的所有路径(/opt/usr/media/)都不存在,则无法创建文件(在我的Gear S2上,该路径上没有“documents”文件夹)。

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

在这种情况下,Web API可能会起作用。但是,如果您不想切换Web App Development,那么您可以尝试使用Preference API。它将为您提供将传感器数据存储在共享内存中并从中检索数据的功能。

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

  1. Ref. Link 1
  2. Ref. Link 2
  3. 希望它能够发挥作用。