20. 彩屏充电仓功能

20.1. 监听彩屏充电仓事件

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 增加彩屏充电仓事件监听
final OnChargingCaseListener listener = new OnChargingCaseListener() {

    @Override
    public void onInit(BluetoothDevice device, int state) {
        //回调初始化状态
        //0 --- 成功
        //其他数值为错误码, 参考【错误码】章节
    }

    @Override
    public void onChargingCaseInfoChange(BluetoothDevice device, @ChargingCaseInfo.Function int func, ChargingCaseInfo info) {
        //回调彩屏仓功能变化
        switch (func) {
            case ChargingCaseInfo.FUNC_BRIGHTNESS: //屏幕亮度
                    info.getBrightness();
                    break;
                case ChargingCaseInfo.FUNC_FLASHLIGHT: //闪光灯开关
                    info.isFlashlightOn();
                    break;
                case ChargingCaseInfo.FUNC_SCREEN_SAVERS: //屏幕资源列表
                    info.getScreenSavers();
                    break;
                case ChargingCaseInfo.FUNC_CURRENT_SCREEN_SAVER: //当前屏保资源
                    info.getCurrentScreenSaver();
                    break;
                case ChargingCaseInfo.FUNC_CURRENT_BOOT_ANIM: //当前开机动画
                    info.getCurrentBootAnim();
                    break;
                case ChargingCaseInfo.FUNC_WALLPAPERS: //墙纸资源列表
                    info.getWallpapers();
                    break;
                case ChargingCaseInfo.FUNC_CURRENT_WALLPAPER: //当前墙纸资源
                    info.getCurrentWallpaper();
                    break;
            }
        }

        @Override
        public void onChargingCaseEvent(BluetoothDevice device, SettingFunction function) {
            //回调彩屏仓功能事件,也会已通过 onChargingCaseInfoChange 接口回调, 可以不处理
        }
    };
    chargingCaseOp.addOnChargingCaseListener(listener);
    //Step3. 当不需要监听时,记得释监听器
    //chargingCaseOp.removeListener(listener);

Important

  1. 初始化【ChargingCaseOpImpl】对象,会触发初始化流程;

  2. 若初始化失败,则根据【错误码】进行排查; 5. 错误码

  3. 若初始化成功,【ChargingCaseOpImpl】对象拥有基础信息对象【ChargingCaseInfo】;

  4. 用户可以在【ChargingCaseInfo】中查询到【屏幕信息】和【SDK信息】;

  5. ChargingCaseInfo

  6. ScreenInfo

  7. SDKMessage

20.1.1. 获取彩屏仓信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 获取彩屏仓缓存信息
chargingCaseOp.getChargingCaseInfo(RCSPController.getInstance().getUsingDevice());

Note

  1. ChargingCaseInfo

  2. 彩屏仓初始化成功后,才能获取到缓存值。彩屏仓初始化中或者初始化失败,获取的值为空。

20.1.2. ChargingCaseInfo

彩屏仓信息

public class ChargingCaseInfo implements Parcelable {
    /**
     * 屏幕保护程序
     */
    public static final int TYPE_SCREEN_SAVER = FunctionResource.FUNC_SCREEN_SAVERS;
    /**
     * 开机动画
     */
    public static final int TYPE_BOOT_ANIM = FunctionResource.FUNC_BOOT_ANIM;
    /**
     * 墙纸
     */
    public static final int TYPE_WALLPAPER = FunctionResource.FUNC_WALL_PAPER;


    /**
     * 屏幕亮度功能
     */
    public static final int FUNC_BRIGHTNESS = 1;
    /**
     * 闪灯功能
     */
    public static final int FUNC_FLASHLIGHT = 2;
    /**
     * 当前屏幕资源功能
     */
    public static final int FUNC_CURRENT_SCREEN_SAVER = 3;
    /**
     * 当前开机动画资源功能
     */
    public static final int FUNC_CURRENT_BOOT_ANIM = 4;
    /**
     * 墙纸列表功能
     */
    public static final int FUNC_WALLPAPERS = 5;
    /**
     * 当前墙纸资源功能
     */
    public static final int FUNC_CURRENT_WALLPAPER = 6;
    /**
     * 屏保列表功能
     */
    public static final int FUNC_SCREEN_SAVERS = 7;


    /**
     * 默认屏幕宽度
     */
    public static final int SCREEN_WIDTH = 320;
    /**
     * 默认屏幕高度
     */
    public static final int SCREEN_HEIGHT = 172;


    /**
     * 设备地址
     * <p>
     * 唯一标识
     * </p>
     */
    private final String address;
    /**
     * 屏幕亮度
     */
    private int brightness;
    /**
     * 手电筒状态
     */
    private boolean isFlashlightOn;
    /**
     * 屏幕信息
     */
    private ScreenInfo screenInfo;
    /**
     * SDK信息
     */
    private SDKMessage sdkMessage;
    /**
     * 当前屏幕保护程序信息
     */
    private ResourceInfo currentScreenSaver;
    /**
     * 当前开机动画信息
     */
    private ResourceInfo currentBootAnim;
    /**
     * 当前壁纸信息
     */
    private ResourceInfo currentWallpaper;
    /**
     * 已存在的墙纸
     */
    @NonNull
    private final List<ResourceInfo> wallpapers;
    /**
     * 已存在的墙纸
     */
    @NonNull
    private final List<ResourceInfo> screenSavers;
}

20.2. 获取设备屏幕信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取设备屏幕信息的接口
chargingCaseOp.readScreenInfo(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<ScreenInfo>() {
    @Override
    public void onSuccess(BluetoothDevice device, ScreenInfo message) {
        //回调操作成功 和 结果
        //message -- 屏幕信息
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. ScreenInfo

  2. 彩屏仓初始化流程,会主动同步【屏幕信息】。用户可以查询 ChargingCaseInfo 信息来获取到【屏幕信息】。

20.2.1. ScreenInfo

屏幕信息

public class ScreenInfo extends SettingFunction {
     /**
      * 圆形
      */
     public static final int SHAPE_CIRCULAR = 1;
     /**
      * 矩形
      */
     public static final int SHAPE_RECTANGLE = 2;
     /**
      * 圆角矩形
      */
     public static final int SHAPE_ROUNDED_RECTANGLE = 3;

     /**
      * 形状
      */
     private int shape;
     /**
      * 边角半径
      */
     private int radius;
     /**
      * 背景颜色(ARGB)
      */
     private int color;
     /**
      * 屏幕宽度
      */
     private int width;
     /**
      * 屏幕高度
      */
     private int height;
}

20.3. 获取SDK信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取设备屏幕信息的接口
chargingCaseOp.readSDKMessage(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<SDKMessage>() {
    @Override
    public void onSuccess(BluetoothDevice device, SDKMessage message) {
        //回调操作成功 和 结果
        //message -- SDK信息
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
        //error.getSubCode() --- 错误码
        //error.getMessage() --- 错误描述
    }
});

Note

  1. SDKMessage

  2. 彩屏仓初始化流程,会主动同步【SDK信息】。用户可以查询 ChargingCaseInfo 信息来获取到【SDK信息】。

20.3.1. SDKMessage

SDK信息

public class SDKMessage extends SettingFunction {

     /* ----------------------------------------
      * 项目代码
      * ----------------------------------------- */
     /**
      * 充电仓
      */
     public static final int PROJECT_CHARGING_CASE = 0x0001;

     /* ----------------------------------------
      * 产品代码
      * ----------------------------------------- */
     /**
      * 彩屏仓
      */
     public static final int PRODUCT_COLOR_SCREEN = 0x0001;

     /* ----------------------------------------
      * 芯片代码
      * ----------------------------------------- */
     /**
      * 701N芯片
      */
     public static final int CHIP_701N = 0x0001;
     /**
      * 707N芯片
      */
     public static final int CHIP_707N = 0X0002;


     /**
      * 项目
      */
     private int project;
     /**
      * 产品
      */
     private int product;
     /**
      * 芯片
      */
     private int chip;
     /**
      * 配置信息
      */
     private SDKConfigure configure;
 }

20.3.2. SDKConfigure

SDK功能配置

public class SDKConfigure implements Parcelable {

    /**
     * 是否支持GIF
     */
    private boolean isSupportGif;
}

20.4. 屏幕亮度控制

20.4.1. 获取屏幕亮度

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取屏幕亮度的接口
chargingCaseOp.getBrightness(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<Integer>() {
    @Override
    public void onSuccess(BluetoothDevice device, Integer message) {
        //回调操作成功 和 结果
        //message -- 亮度, 范围:0 - 100%
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.4.2. 设置屏幕亮度

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用设置屏幕亮度的接口
//brightness -- 亮度, 范围:0 - 100%
chargingCaseOp.setBrightness(RCSPController.getInstance().getUsingDevice(), brightness, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.5. 闪光灯控制

20.5.1. 获取闪光灯状态

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取闪光灯状态的接口
chargingCaseOp.getFlashlightState(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.5.2. 设置闪光灯状态

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用设置闪光灯的接口
//isOn -- 开关
chargingCaseOp.setFlashlightState(RCSPController.getInstance().getUsingDevice(), isOn, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
        //message -- 开关状态
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.6. 屏幕保护程序控制功能

20.6.1. 浏览屏幕保护程序资源

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 选择需要浏览的存储器
final BluetoothDevice device = RCSPController.getInstance().getUsingDevice();
List<SDCardBean> onlineStorages = chargingCaseOp.getOnlineStorages(device); //获取在线存储器列表
if (onlineStorages.isEmpty()) return; //没有存储器。操作失败
SDCardBean target = null;
for (SDCardBean storage : onlineStorages) {
    //优先查找Flash 和 Flash2
    if (storage.getIndex() == SDCardBean.INDEX_FLASH || storage.getIndex() == SDCardBean.INDEX_FLASH2) {
        target = storage;
        break;
    }
}
if (target == null) {
    target = onlineStorages.get(0);
}
//Step3. 调用浏览屏幕保护程序的接口
//获取存储器句柄
int devHandler = target.getDevHandler();
chargingCaseOp.browseScreenSavers(device, devHandler, new OnRcspActionCallback<List<RegFile>>() {
    @Override
    public void onSuccess(BluetoothDevice device, List<RegFile> message) {
        //回调操作成功
        //message --- 资源列表
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
        //error.getSubCode() --- 错误码
        //error.getMessage() --- 错误描述
    }
});

Note

  1. RegFile

  2. 彩屏仓初始化的时候,会自动同步一次资源列表。后续出现【创建屏保资源】或者【删除屏保资源】的操作,可以手动同步。

20.6.2. 获取当前屏幕保护程序信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取当前屏幕保护程序信息的接口
chargingCaseOp.getCurrentScreenSaver(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<ResourceInfo>() {
    @Override
    public void onSuccess(BluetoothDevice device, ResourceInfo message) {
        //回调操作成功 和 结果
        //message -- 资源信息
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. 结果为 ResourceInfo

20.6.3. 设置当前屏幕保护程序

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 选择需要浏览的存储器
final BluetoothDevice device = RCSPController.getInstance().getUsingDevice();
List<SDCardBean> onlineStorages = chargingCaseOp.getOnlineStorages(device); //获取在线存储器列表
if (onlineStorages.isEmpty()) return; //没有存储器。操作失败
SDCardBean target = null;
for (SDCardBean storage : onlineStorages) {
    //优先查找Flash 和 Flash2
    if (storage.getIndex() == SDCardBean.INDEX_FLASH || storage.getIndex() == SDCardBean.INDEX_FLASH2) {
        target = storage;
        break;
     }
 }
if (target == null) {
    target = onlineStorages.get(0);
}
//Step3. 调用设置当前屏幕保护程序的接口
int devHandle = target.getDevHandler(); //存储器句柄
String filePath = "设备存在的屏保路径";
chargingCaseOp.setCurrentScreenSaver(RCSPController.getInstance().getUsingDevice(), devHandle, filePath, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. SDCardBean

20.6.4. ResourceInfo

资源信息

public class ResourceInfo implements Parcelable {

    /**
     * 屏幕保护程序名称前缀
     */
    public static final String SCREEN_NAME_PREFIX = "VIE";
    /**
     * 自定义屏幕保护程序名称
     */
    public static final String CUSTOM_SCREEN_NAME = "VIE_CST";
    /**
     * 开机动画名称前缀
     */
    public static final String ANIM_NAME_PREFIX = "ANI";
    /**
     * 壁纸名称前缀
     */
    public static final String WALLPAPER_NAME_PREFIX = "csbg";
    /**
     * 自定义壁纸名称
     */
    public static final String CUSTOM_WALLPAPER_NAME = "csbg_x";

    /**
     * 存储器句柄
     */
    private int devHandle;
    /**
     * 簇号
     */
    private int cluster;
    /**
     * crc校验码
     */
    private short crc;
    /**
     * 文件路径
     */
    private String filePath;
}

20.7. 开机动画

20.7.1. 获取开机动画信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取当前开机动画信息的接口
chargingCaseOp.getCurrentBootAnim(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<ResourceInfo>() {
    @Override
    public void onSuccess(BluetoothDevice device, ResourceInfo message) {
        //回调操作成功 和 结果
        //message -- 资源信息
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. 结果为 ResourceInfo

20.7.2. 设置当前开机动画

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 选择需要浏览的存储器
final BluetoothDevice device = RCSPController.getInstance().getUsingDevice();
List<SDCardBean> onlineStorages = chargingCaseOp.getOnlineStorages(device); //获取在线存储器列表
if (onlineStorages.isEmpty()) return; //没有存储器。操作失败
SDCardBean target = null;
for (SDCardBean storage : onlineStorages) {
    //优先查找Flash 和 Flash2
    if (storage.getIndex() == SDCardBean.INDEX_FLASH || storage.getIndex() == SDCardBean.INDEX_FLASH2) {
        target = storage;
        break;
    }
}
if (target == null) {
    target = onlineStorages.get(0);
}
//Step3. 调用设置当前开机动画的接口
int devHandle = target.getDevHandler(); //存储器句柄
String filePath = "设备存在的开机动画路径";
chargingCaseOp.setCurrentScreenSaver(RCSPController.getInstance().getUsingDevice(), devHandle, filePath, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. SDCardBean

20.8. 同步天气信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用设置当前屏幕保护程序信息的接口
//weather -- 天气信息
Weather weather = new Weather(new byte[0]);
chargingCaseOp.syncWeatherInfo(RCSPController.getInstance().getUsingDevice(), weather, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. Weather

20.8.1. Weather

天气信息

public class Weather extends BaseInfo {

    /**
     * 省份
     */
    private String province;
    /**
     * 城市
     */
    private String city;
    /**
     * 天气
     * <p>
     * 参考{@link com.jieli.bluetooth.constant.WeatherCode}
     * </p>
     */
    private int weather;
    /**
     * 温度
     */
    private int temperature;
    /**
     * 湿度。单位: %
     */
    private int humidity;
    /**
     * 风向
     * <p>
     * 参考 {@link com.jieli.bluetooth.constant.DirectionCode}
     * </p>
     */
    private int windDirection;
    /**
     * 风力
     */
    private int windPower;
    /**
     * 更新时间
     */
    private long time;
}

20.9. 消息推送

20.9.1. 推送消息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用推送消息接口
//messageInfo -- 消息信息
MessageInfo messageInfo = new MessageInfo();
chargingCaseOp.pushMessageInfo(RCSPController.getInstance().getUsingDevice(), messageInfo, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.9.2. 删除消息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用删除消息接口
//messageInfo -- 消息信息
//删除消息时,主要是看【包名】 + 【时间戳】
MessageInfo messageInfo = new MessageInfo();
chargingCaseOp.removeMessageInfo(RCSPController.getInstance().getUsingDevice(), messageInfo, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

Note

  1. MessageInfo

  2. 删除消息,只需要携带【包名】和【时间戳】。设备端会根据这两个字段删除对应的消息。

20.9.3. MessageInfo

消息信息

public class MessageInfo implements IDataOp {

    /**
     * 默认图标
     */
    public static final int FLAG_DEFAULT = 0;
    /**
     * 短信图标
     */
    public static final int FLAG_SMS = 1;
    /**
     * 微信图标
     */
    public static final int FLAG_WECHAT = 2;
    /**
     * QQ图标
     */
    public static final int FLAG_QQ = 3;
    /**
     * 钉钉图标
     */
    public static final int FLAG_DING_TALK = 4;


    /**
     * 应用包名
     */
    private String appPackageName;
    /**
     * 应用图标
     */
    private int flag;
    /**
     * 标题
     */
    private String title;
    /**
     * 内容
     */
    private String content;
    /**
     * 时间戳
     */
    private long timestamp;
}

20.10. 墙纸控制功能

20.10.1. 浏览墙纸资源

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 选择需要浏览的存储器
final BluetoothDevice device = RCSPController.getInstance().getUsingDevice();
List<SDCardBean> onlineStorages = chargingCaseOp.getOnlineStorages(device); //获取在线存储器列表
if (onlineStorages.isEmpty()) return; //没有存储器。操作失败
SDCardBean target = null;
for (SDCardBean storage : onlineStorages) {
    //优先查找Flash 和 Flash2
    if (storage.getIndex() == SDCardBean.INDEX_FLASH || storage.getIndex() == SDCardBean.INDEX_FLASH2) {
        target = storage;
        break;
    }
}
if (target == null) {
    target = onlineStorages.get(0);
}
//Step3. 调用浏览墙纸资源的接口
//获取存储器句柄
int devHandler = target.getDevHandler();
chargingCaseOp.browseWallPapers(device, devHandler, new OnRcspActionCallback<List<RegFile>>() {
    @Override
    public void onSuccess(BluetoothDevice device, List<RegFile> message) {
        //回调操作成功
        //message --- 资源列表
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
        //error.getSubCode() --- 错误码
        //error.getMessage() --- 错误描述
    }
});

Note

  1. RegFile

  2. 彩屏仓初始化的时候,会自动同步一次资源列表。后续出现【创建墙纸资源】或者【删除墙纸资源】的操作,可以手动同步。

20.10.2. 获取当前墙纸信息

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 调用获取当前屏幕保护程序信息的接口
chargingCaseOp.getCurrentWallPaper(RCSPController.getInstance().getUsingDevice(), new OnRcspActionCallback<ResourceInfo>() {
    @Override
    public void onSuccess(BluetoothDevice device, ResourceInfo message) {
        //回调操作成功 和 结果
        //message -- 资源信息
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.10.3. 设置当前墙纸

//Step1. 创建彩屏充电仓实现类
ChargingCaseOpImpl chargingCaseOp = ChargingCaseOpImpl.instance(RCSPController.getInstance().getRcspOp());
//Step2. 选择需要浏览的存储器
final BluetoothDevice device = RCSPController.getInstance().getUsingDevice();
List<SDCardBean> onlineStorages = chargingCaseOp.getOnlineStorages(device); //获取在线存储器列表
if (onlineStorages.isEmpty()) return; //没有存储器。操作失败
SDCardBean target = null;
for (SDCardBean storage : onlineStorages) {
    //优先查找Flash 和 Flash2
    if (storage.getIndex() == SDCardBean.INDEX_FLASH || storage.getIndex() == SDCardBean.INDEX_FLASH2) {
        target = storage;
        break;
    }
}
if (target == null) {
    target = onlineStorages.get(0);
}
//Step3. 调用设置当前屏幕保护程序的接口
//获取存储器句柄
int devHandler = target.getDevHandler();
String filePath = "设备存在的屏保路径";
chargingCaseOp.setCurrentScreenSaver(RCSPController.getInstance().getUsingDevice(), devHandler, filePath, new OnRcspActionCallback<Boolean>() {
    @Override
    public void onSuccess(BluetoothDevice device, Boolean message) {
        //回调操作成功 和 结果
    }

    @Override
    public void onError(BluetoothDevice device, BaseError error) {
        //回调操作失败 和 错误信息
    }
});

20.11. 传输资源流程图

../../_images/transfer_resource_flow.png

Important

  1. 资源传输成功后,需要根据资源功能进行设置激活才会生效。比如:设置当前屏幕保护程序

  2. 必须保证资源的完整性