2. Small File Transfer

Small file transfer is primarily used for transferring files with relatively small data volumes.
Examples include: activity records, health statistics, contacts, etc.
Features include file list query, file read, file delete, file add, and file update

Important

  1. Each device object cannot perform small file operations and regular file operations simultaneously; operations must be queued.

  2. Small file transfer is not allowed during OTA processes.

2.1. File List Query

//WatchManager is a subclass of WatchOpImpl, must be configured in sdk 1.3
    WatchManager watchManager = WatchManager.getInstance();
    //Small file type: QueryFileTask.TYPE_BLOOD_OXYGEN, QueryFileTask.TYPE_SLEEP, QueryFileTask.TYPE_STEP, etc.
    byte type = QueryFileTask.TYPE_HEART_RATE;
    QueryFileTask.Param param = new QueryFileTask.Param(type);
QueryFileTask task = new QueryFileTask(watchManager, param);
task.setListener(new SimpleTaskListener() {
    @Override
    public void onBegin() {
        //Start transfer
    }

    @Override
    public void onFinish() {
        //Query successful
        List<QueryFileTask.File> list = task.getFiles();
    }

    @Override
    public void onError(int code, String msg) {
        //Query failed
    }
});
task.start();

2.2. Add New File

//WatchManager is a subclass of WatchOpImpl, must be configured in sdk 1.3
    WatchManager watchManager = WatchManager.getInstance();
    //Small file type: QueryFileTask.TYPE_BLOOD_OXYGEN, QueryFileTask.TYPE_SLEEP, QueryFileTask.TYPE_STEP, etc.
    byte type = QueryFileTask.TYPE_MESSAGE_SYNC;
    byte [] data = "data packet"
    AddFileTask.Param param = new AddFileTask.Param(type, data);
final AddFileTask task = new AddFileTask(mRcspOp, param);
task.setListener(new SimpleTaskListener() {

    @Override
    public void onBegin() {
        //Start transfer
    }

    @Override
    public void onError(int code, String msg) {
        //Exception
    }

    @Override
    public void onFinish() {
        //Addition complete
    }
});
task.start();

2.3. Read File

//WatchManager is a subclass of WatchOpImpl, must be configured in sdk 1.3
WatchManager watchManager = WatchManager.getInstance();
QueryFileTask.File file; //Obtained through file list query
byte type = file.type; //File type
short id = file.id; //File ID
int size = file.size; //Size of content to read
int offset = 0;//Starting position to read. Combined with size, partial reading can be achieved
ReadFileTask.Param param = new ReadFileTask.Param(type, id, size, offset);
ReadFileTask task = new ReadFileTask(watchManager, param);
task.setListener(new SimpleTaskListener() {

    @Override
    public void onBegin() {
        //Start transfer
    }

    @Override
    public void onError(int code, String msg) {
        //Exception
    }

    @Override
    public void onFinish() {
        //Reading complete
    }
});
task.start();

2.4. Update File

//WatchManager is a subclass of WatchOpImpl, must be configured in sdk 1.3
WatchManager watchManager = WatchManager.getInstance();
QueryFileTask.File file = null; //Obtained through file list query
byte type = file.type; //File type
short id = file.id; //File ID
    byte [] data  = "updated data";
UpdateFileTask.Param param = new UpdateFileTask.Param(type, id, data);
UpdateFileTask task = new UpdateFileTask(watchManager, param);
task.setListener(new SimpleTaskListener() {

    @Override
    public void onBegin() {
        //Start transfer
    }

    @Override
    public void onError(int code, String msg) {
        //Exception
    }

    @Override
    public void onFinish() {
        //Update complete
    }
});
task.start();

2.5. Delete File

//WatchManager is a subclass of WatchOpImpl, must be configured in sdk 1.3
WatchManager watchManager = WatchManager.getInstance();
QueryFileTask.File file = null; //Obtained through file list query
byte type = file.type; //File type
short id = file.id; //File ID
DeleteFileTask.Param param = new DeleteFileTask.Param(type, id);
DeleteFileTask task = new DeleteFileTask(watchManager, param);
task.setListener(new SimpleTaskListener() {

    @Override
    public void onBegin() {
        //Start
    }

    @Override
    public void onError(int code, String msg) {
        //Exception
    }

    @Override
    public void onFinish() {
        //Complete
    }
});
task.start();