基本看完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處理便可