Kii BLOG

通过Kii Sync实现文件夹同步

(一)、概述

通过Kii Sync SDK可以实现文件夹的同步,那么什么情况下需要文件夹同步这个功能呢?比如说多种设备间的同步,我拍了很多照片,我想在PC、手机或者平板上都能共享,这时就需要文件夹同步这个功能,再比如我手机上有很多重要的文件,有一天我手机丢了或者坏掉了,如果我已经对这些文件实施了文件夹同步,那么我就可以在新的手机上把这些文件找回来。

 

 

(二)、实现方法

可以通过下面的链接下载到文件夹同步的示例代码:

SyncFolder

后面的分析说明都是参照上面的示例代码进行的。

 

1、如何在应用中集成Kii Sync SDK

  • 通过你的app管理中的“Downloads”链接下载filesync-sdk
  • 在Eclipse中导入filesync-sdk并将该工程作为Library
  • 在你的工程中把filesync-sdk加入到你的libray中
  • 在AndroidManifest.xml中添加以下权限:
    <!-- permission -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  •  添加res/raw/kiifs_config然后编辑如下内容:
    site = CN
    app.id = YOUR_APP_ID
    app.key = YOUR_APP_KEY

 

2、开始同步

可以使用用户名、邮箱地址或者手机号码进行同步,本示例app中使用的是用户名加密码的方式进行的同步,同步的函数为:

KiiFS.sync(Context context, java.io.File dir, java.lang.String username, java.lang.String password, ProgressCallback callback)

使用示例如下:

try {
    KiiFS.sync(
        context,
        new File("/mnt/sdcard/SyncBox"),
        "___username___",
        "___password___",
        new ProgressCallback() {
             @Override
               public void onProgressUpdate(ProgressInfo value) {
                  // TODO: update the view of progress.
             }
        });
} catch (Exception e){
    // TODO: show error message to user.
}

Sync方法是阻塞式API,所以需要在单独的线程里调用该sync方法,同时通过“ProgressCallback”获取同步进度,更详细代码实现过程请参考示例app。

 

3、reset方法的作用

如果修改同步的文件夹,那么在同步之前必须要执行reset操作,否则新的文件夹的同步不会成功,具体代码如下:

try {
    KiiFS.reset()
} catch (Exception e) {
    // TODO: show error message to user.
}

 

(三)、示例app的测试

我们准备在电脑上的模拟器和一部手机进行测试,首先把示例app生成的apk安装到一部手机上,然后通过Eclipse启动pc上的模拟器并执行示例app,其操作界面如下图所示:

S31106-172325

 

可以通过输入框输入位于SD卡上的文件夹名称来切换同步目录,如果修改同步目录,那么同步之前一定要执行Reset操作才能同步成功。

下面以同步SD卡上的“SyncBox”目录为例进行说明。

 

1、模拟器端的操作:

首先通过Eclips的DDMS创建“SyncBox”目录,并向该文件夹导入要同步的文件或文件夹,DDMS操作界面如下图所示:

DDMS

 

如果在导入文件过程中报错,可能是因为超时设置的问题,可以通过Eclipse菜单的“Window->Preferences->Android->DDMS”中的“ADB connection time out”进行设置。建立完要同步的文件夹后,执行“Sync”操作,此时通过进度条可以看到同步的进度,正常情况下,同步会成功完成。

 

2、手机端的同步

在手机端同样创建要同步的文件夹,执行同步,同步完成后,你会发现在PC模拟器中同步的文件,已经成功下载到手机端。

 

无论是在手机端还是在PC模拟器端,对同步文件夹里的文件进行添加、删除或者编辑等操作之后执行同步,其修改结果都会更新到另外一端执行同步后的设备上。

 

3、reset测试

修改要同步的文件夹,不执行“Reset”操作而是直接同步,会发现同步失败,之后执行“Reset”操作,发现又可以成功同步了。

 

4、测试中遇到的问题:

有时你可能需要把在PC模拟器上的同步文件夹通过DDMS导出来,而导出过程中可能会出现“failed to pull a selection”问题,此时除了设置“ADB connection time out”外,可能需要将Eclipse跟模拟器重新启动一下就可以了。

 

(四)、总结

从以上对Kii Sync文件夹的同步可以看出,Kii Sync操作起来十分简单方便,只需要调用几个函数就可以完成整个同步过程。

 

 

发表评论