SmartWatch2开发——如何从手表端向手机端发消息
2013-12-11 21:35
645 查看
基本看完Sony提供的SmartWatch2的文档和Demo,仍然没有弄懂如何从手机向SmartWatch2主动发消息。
可以使用Notification从手机向SmartWatch 2主动发送消息,即:向Notification.Event.URI对应的ContentProvider中插入数据即可。虽然不是非常完美(我想发的是一个数据,比如文本、二进制流等等,而不是会让手表振动的Notification),但毕竟可以解决问题。
但如何从SmartWatch2向手机主动发送消息?没有Demo实现了这个功能,也没找到相关文档。只能通过反编译分析类似的应用,看看它们是如何实现的。
安装Find my phone
![](file:\\e:\img\find_my_phone.png)
![](http://static.oschina.net/uploads/space/2013/1211/193646_cgDW_578279.png)
SmartWatch2上启动Find my phone
![](file:\\e:\img\IMAG0214.jpg)
![](http://static.oschina.net/uploads/space/2013/1211/193738_FfzR_578279.jpg)
点击左边的图标,手机开始响铃
![](file:\\e:\img\IMAG0215.jpg)
![](http://static.oschina.net/uploads/space/2013/1211/212038_hFV9_578279.jpg)
手机响铃界面
![](file:\\e:\img\find_my_phone2.png)
![](http://static.oschina.net/uploads/space/2013/1211/212055_VAJ5_578279.png)
用jd打开得到的jar文件,发现没有混淆,分析起来非常方便。
![](file:\\e:\img\find_my_phone_classes.PNG)
![](http://static.oschina.net/uploads/space/2013/1211/212209_pJgu_578279.png)
时序图
![](file:\\e:\img\find_my_phone_seq.PNG)
![](http://static.oschina.net/uploads/space/2013/1211/212225_UqlK_578279.png)
第1-5步: [手表端] 启动ControConfirmNewMan等待用户操作
第6-11步:[手表端] 启动ControlAlertNewMan
第12步: [手机端] Activity运行,振动并响铃
以上三步跟上面的图片正好对应。
FindMyPhone跟前面分析的几个Demo基本结构是一样的。所以这里不再赘述。
Find my phone本质上是运行在手机上的,所以才可以执行上面的第12步
ControlConfirmNewman和ControlAlertNewman继承自Sony的Control API中的ControlExtension。Control API的文档提到,ControlExtension可以显示在SmartWatch 2,并控制SmartWatch 2
第9步发送的广播是上述时序的关键,由这个广播联系SmartWatch 2和手机端
综上,如何在SmartWatch 2和手机之间发送消息其实非常简单:
SmartWatch 2向手机发送消息
直接发送Control API支持的Intent广播即可,或者使用Notification
手机向SmartWatch 2发送消息
发送Intent启动ExtensionService,由ExtensionService处理即可
可以使用Notification从手机向SmartWatch 2主动发送消息,即:向Notification.Event.URI对应的ContentProvider中插入数据即可。虽然不是非常完美(我想发的是一个数据,比如文本、二进制流等等,而不是会让手表振动的Notification),但毕竟可以解决问题。
但如何从SmartWatch2向手机主动发送消息?没有Demo实现了这个功能,也没找到相关文档。只能通过反编译分析类似的应用,看看它们是如何实现的。
1. FindMyPhone简介
Find my phone是Sony开发的一款适用于SmartWatch2的app。下载并试用这个应用,发现它实现了SmartWatch2主动向手机端发送消息的功能。Find my phone使用场景很简单:用户忘了手机放在哪里,可以通过手表发起命令,让手机振动并响铃提醒。安装Find my phone
![](file:\\e:\img\find_my_phone.png)
![](http://static.oschina.net/uploads/space/2013/1211/193646_cgDW_578279.png)
SmartWatch2上启动Find my phone
![](file:\\e:\img\IMAG0214.jpg)
![](http://static.oschina.net/uploads/space/2013/1211/193738_FfzR_578279.jpg)
点击左边的图标,手机开始响铃
![](file:\\e:\img\IMAG0215.jpg)
![](http://static.oschina.net/uploads/space/2013/1211/212038_hFV9_578279.jpg)
手机响铃界面
![](file:\\e:\img\find_my_phone2.png)
![](http://static.oschina.net/uploads/space/2013/1211/212055_VAJ5_578279.png)
2. FindMyPhone分析
2.1 反编译FindMyPhone
E:\apk_decompile>adb -s CB5124U78T pull /sdcard/Download/FindPhoneExtension_v1.0 .3.apk . 2350 KB/s (139584 bytes in 0.057s) E:\apk_decompile>dex2jar-0.0.9.15\dex2jar.bat FindPhoneExtension_v1.0.3.apk this cmd is deprecated, use the d2j-dex2jar if possible dex2jar version: translator-0.0.9.15 dex2jar FindPhoneExtension_v1.0.3.apk -> FindPhoneExtension_v1.0.3_dex2jar.jar Done.
用jd打开得到的jar文件,发现没有混淆,分析起来非常方便。
2.2. 功能分析
主要类![](http://static.oschina.net/uploads/space/2013/1211/212209_pJgu_578279.png)
时序图
![](http://static.oschina.net/uploads/space/2013/1211/212225_UqlK_578279.png)
第1-5步: [手表端] 启动ControConfirmNewMan等待用户操作
第6-11步:[手表端] 启动ControlAlertNewMan
第12步: [手机端] Activity运行,振动并响铃
以上三步跟上面的图片正好对应。
FindMyPhone跟前面分析的几个Demo基本结构是一样的。所以这里不再赘述。
3. 总结
整体上,跟前面看的几个Demo没有什么区别。结合这个时序图,可以加深对以下几点的了解:Find my phone本质上是运行在手机上的,所以才可以执行上面的第12步
ControlConfirmNewman和ControlAlertNewman继承自Sony的Control API中的ControlExtension。Control API的文档提到,ControlExtension可以显示在SmartWatch 2,并控制SmartWatch 2
第9步发送的广播是上述时序的关键,由这个广播联系SmartWatch 2和手机端
综上,如何在SmartWatch 2和手机之间发送消息其实非常简单:
SmartWatch 2向手机发送消息
直接发送Control API支持的Intent广播即可,或者使用Notification
手机向SmartWatch 2发送消息
发送Intent启动ExtensionService,由ExtensionService处理即可
相关文章推荐
- iOS开发如何实现消息推送机制
- 这个开源项目展示了如何实现一个横跨各种Android平台的音乐播放器,包括手机,平板,汽车,手表,电视等。Google官方推出,跨平台开发必看项目。
- iOS开发如何实现消息推送机制
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- iOS开发如何实现消息推送机制
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- 区块链开发专题(P2P技术如何验证消息)
- iOS开发如何实现消息推送机制
- iOS开发如何实现消息推送机制
- android开发学习(四)——anr产生的原理&如何避免,android消息机制入门, 网络图片查看器
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- xcode6开发ios8app应用程序,如何进行APNs推送消息(获取device token)和集成激光推送教程
- iOS开发如何实现消息推送机制