# 蓝小飞智能音箱开发者模式指引

# 说明

为了使开发者可以在音箱上运行自己开发的应用,iFLYOS 提供了蓝小飞智能音箱以完成更高级的音箱定制功能。

如按照此指引操作,且查看了相关文档后,开发过程中仍遇到接入问题,可以通过iFLYOS工单或论坛咨询,我们会在12小时内响应回复。

iFLYOS工单:http://support.iflyos.cn/hc/request/new/ (opens new window)

iFLYOS论坛:http://support.iflyos.cn/hc/community/topic/ (opens new window)

如需更高效的技术支持,可选择购买为期2个月的 iFLYOS 技术支持包 (opens new window),购买了技术支持包的用户,可享受以下服务:

  1. 开通工单绿色通道;
  2. 问题咨询2小时内回复响应;
  3. VIP技术支持,优先回复解决开发中遇到的接入问题;
  4. 开通新需求评估通道,2个工作日内回复评估结论。

# 前期准备

# 了解iFLYOS设备接入

在进行二次开发之前,建议你先了解一下iFLYOS设备接入,避免因不了解系统造成设备不可用。

iFLYOS官网地址:https://www.iflyos.cn/ (opens new window)

iFLYOS设备接入参考文档:https://doc.iflyos.cn/device/ (opens new window)

# 在设备接入控制台创建一个设备

步骤参考: https://doc.iflyos.cn/device/console.html (opens new window)

注意

  1. 创建产品类型时,建议选择EVS网络协议,以便获得更多能力;

  2. 为了保证你的设备在小飞在线 App (opens new window)中可正常添加和配网,请确保:

​ a)在【设备控制台-设备能力】中开启蓝牙配网。

​ b)在【设备控制台-真机测试】中配置手机号白名单。

# 温馨提示

在使用开发者模式之前,请确认已知晓以下事项:

  1. 【升级固件】为保证能够使用我们最新的功能和更稳定的体验,请将音箱OTA更新至最新固件版本。完成配网后在APP设备管理页面点击检查更新即可。

  2. 进入过开发者模式并更改了 clientId 的设备,除了硬件问题将不享受其他保修服务。

  3. 由于音乐服务与设备的 clientIddeviceId 挂钩,修改 clientId 后的音箱将无法使用该音箱自带的一年免费音乐服务。

  4. iFLYOS 的极客版音箱皆采用了在线更新固件能力,每天定时检查并自动更新。当你需要使用开发者模式,我们建议你更改clientId ,以免在线更新覆盖了你的开发成果。

    注意:更改clientid可能导致无法进行保修,所以请谨慎使用开发者模式。

# 进入开发者模式

将音箱的电源线USB口插至电脑,等待音箱开机启动。建议使用一个独立供电,并且电流在1.5A 以上的USB HUB 接入,避免出现供电不足导致的不稳定现象。

# 可以做什么

通过开发者模式,你可以使用 adb工具(点击下载) (opens new window) 执行 adb shell 命令连接到音箱,修改唤醒词及提示音效。

# 更换配置文件

  1. 配置文件名为 iFLYOS.json,可通过以下命令,将取配置文件拉取到本地。

    adb pull /data/iflyos/iFLYOS.json <保存本地路径>
    

    配置文件参数解释:

    参数 说明
    deviceID 设备的唯一ID,每个设备具备不同的deviceId,此ID用于OS的鉴权,请勿更改。如有出货需求可通过平台 (opens new window)选择您的设备解决方案,并填写您的联系方式,我们商务同事会联系您。
    clientID 设备的clientID,从设备接入平台 (opens new window)中获取
    clientSecret 设备的clientSecret,从设备接入平台 (opens new window)中获取
    otaSecret 设备的OTA密钥,从设备接入平台 (opens new window)中获取
    caeResPath 唤醒词文件的存放路径
  2. 完成修改后,可通过以下命令, 将修改后的配置文件推送至设备目录。

    adb push <配置文件路径> /data/iflyos/iFLYOS.json
    

    然后执行adb shell sync命令即可生效,注意 iFLYOS.json文件不要存放在有中文名称的本地路径下,否则有可能会导致 adb push 失效。

  3. 更换配置文件后,系统会优先应用配置文件中的参数,此时原有的授权信息会失效,需要重新授权绑定音箱。

注意

更换client_id完成,设备重启后,你需要为设备重新配置网络。在小飞在线 App (opens new window)中添加设备,选择相应产品,按照APP流程指引为音箱配置一个可用的 WLAN 网络。即可通过蓝小飞智能音箱体验你自己创建的设备的相关功能。

# 将自己的设备加入白名单

当你把设备更改成自己的ClientID后,需要在设备管理后台的“产品发布 - 设备ID”选项,把device id添加至白名单,设备才能完成鉴权操作。

# 更换自定义唤醒词

在蓝小飞智能音箱中,我们支持了自定义唤醒词的更换。

# 生成唤醒词资源

请访问自定义唤醒词平台 (opens new window)选择“平台通用唤醒词”生成你的专属唤醒词,后续只需在设备手动替换即可。

# 修改唤醒词资源

  1. 将生成好的唤醒词,push到/usr/share/iflyos/ivw/xiaofeixiaofei.bin路径下,即可替换默认唤醒词;
  2. 替换完成后,执行adb shell sync 命令再重启音箱即可。

# 更换唤醒词后注意事项

1

蓝小飞智能音箱可作为IP结合产品,将磁片放置在蓝小飞智能音箱上,将会优先使用唤醒词“小飞小飞”。如果开发者已手动更换唤醒词,可拿下磁片或修改自己设备的clientID,即可体验更新后的默认唤醒词。

从产品设计上,蓝小飞智能音箱可以通过更换磁片(玩偶)输出对应的IP内容、定制唤醒词、对话人格、隐藏技能等。此能力无法通过开发者模式进行更改,有意向进行IP合作的用户/客户可以通过iFLYOS官网 (opens new window)联系商务进行洽谈。

# 更换开机欢迎音效

你可以在 TTS合成页面 (opens new window) 选择对应的发音人,生成专属开机欢迎语,推送至设备即可替换。

  1. 下载设备音频

    adb pull /usr/share/iflyos/ring <保存本地路径>
    
  2. 替换音频

    根据文件名寻找要替换的音频文件,将新的音频改名成与pull下来的文件同名

  3. 推送音频

    adb push <资源文件路径> /usr/share/iflyos/ring
    
  4. 注意

    • 完成替换后需执行adb shell sync命令生效;
    • 注意音频文件需转换为m4a格式;
    • 替换ring目录下的音频后,需保持音频文件名前后一致。

# EVS代码文件说明

EVS 实现了云端协议的基础功能,同时实现了比较复杂的设备逻辑(如灯效、音效焦点管理等),开发者可参考以下逻辑,在此基础上做二次开发。只需将拉取下来的文件进行修改,然后推送回设备即可在设备上体验。

文件目录:/usr/share/iflyos/iotjs/js

文件 说明
evsAlertPlayer.js 闹钟播放控制逻辑
evsAudioMgr.js 音频焦点控制逻辑
evsAudioPlayer.js 内容播放控制逻辑
evsAuthorizeMgr.js 用户授权管理逻辑
evsCapAlarm.js 本地闹钟端能力实现
evsCapAudioPlayer.js 音频播放端能力实现
evsCapInterceptor.js 拦截器端能力实现
evsCapRecognizer.js 语音识别端能力实现
evsCapSpeaker.js 本地播放器管理
evsCapSystem.js 音箱系统控制管理能力实现
evsClient.js 管理设备与服务端的连接,以及指令的接收和派发工作
evsContextMgr.js 设备Context的维护
evsMediaPlayer.js 本地播放器控制的基础实现
evsModuleConfig.js 配网逻辑管理,包括wifi配置以及授权的过程控制
evsModuleInteraction.js 用户交互逻辑管理,包括用户唤醒,用户按键,网络中断恢复等逻辑
evsModuleLed.js 灯效管理
evsModuleStartup.js 设备上电启动过程的逻辑管理,处理是否第一次启动,是否有授权,是否有网络等问题
evsPlayerHandler.js 音频播放控制逻辑的基础实现
evsSoundPlayer.js 本地TTS播放控制逻辑
main.js 入口程序

文件目录:/usr/share/iflyos/iotjs/js/platform/MTK8516

文件 说明
evsBleControl.js 配网时的蓝牙控制逻辑
evsButtonControl.js 按键控制逻辑
evsEffectPlayer.js 本地音效播放控制逻辑
evsWifiControl.js 配置wifi网络逻辑

# 常见问题

# 授权时显示无效应用

解决方法: 请确定以下事项:

  1. 请在设备接入控制台-设备能力处,已打开蓝牙配网;
  2. 请在设备接入控制台-真机测试处,在白名单中输入用于登录小飞在线的手机号。

# 蓝牙配网时无法配网成功

解决方法:请在设备接入控制台-设备能力处,打开蓝牙配网。