基本看完Sony提供的SmartWatch2的文档和Demo,仍然没有弄懂如何从手机向SmartWatch2主动发消息。app
能够使用Notification从手机向SmartWatch 2主动发送消息,即:向Notification.Event.URI对应的ContentProvider中插入数据便可。虽然不是很是完美(我想发的是一个数据,好比文本、二进制流等等,而不是会让手表振动的Notification),但毕竟能够解决问题。ide
但如何从SmartWatch2向手机主动发送消息?没有Demo实现了这个功能,也没找到相关文档。只能经过反编译分析相似的应用,看看它们是如何实现的。this
Find my phone是Sony开发的一款适用于SmartWatch2的app。下载并试用这个应用,发现它实现了SmartWatch2主动向手机端发送消息的功能。Find my phone使用场景很简单:用户忘了手机放在哪里,能够经过手表发起命令,让手机振动并响铃提醒。.net
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文件,发现没有混淆,分析起来很是方便。code
主要类blog
时序图继承
以上三步跟上面的图片正好对应。 FindMyPhone跟前面分析的几个Demo基本结构是同样的。因此这里再也不赘述。图片
总体上,跟前面看的几个Demo没有什么区别。结合这个时序图,能够加深对如下几点的了解:开发
综上,如何在SmartWatch 2和手机之间发送消息其实很是简单:文档
SmartWatch 2向手机发送消息
直接发送Control API支持的Intent广播便可,或者使用Notification
手机向SmartWatch 2发送消息 发送Intent启动ExtensionService,由ExtensionService处理便可