關於android組播通訊只能收到本機消息的問題

本文出處:http://blog.csdn.net/qq_27512671/article/details/77935210

答案是Android爲了減少耗電,默認是不接收組播消息的。想要接收,必須把這個開關打開。
打開方法:

private fun openMulticastLock() {
    wifiManager = getSystemService(Context.WIFI_SERVICE) as WifiManager
    multicastLock = wifiManager.createMulticastLock("multicast.test")
    multicastLock.acquire()
}


然後再次之後判斷一下打開狀態在進行後續的操作

if (multicastLock.isHeld) {
    TODO("加入組播")
}

另外組播地址範圍也要寫正確:

224.0.0.0~224.0.0.255爲預留的組播地址(永久組地址),地址224.0.0.0保留不做分配,其它地址供路由協議使用;
224.0.1.0~224.0.1.255是公用組播地址,可以用於Internet;
224.0.2.0~238.255.255.255爲用戶可用的組播地址(臨時組地址),全網範圍內有效;
239.0.0.0~239.255.255.255爲本地管理組播地址,僅在特定的本地範圍內有效。

另外考慮到Android爲客官節省電量的願望,當不需要組播通訊時,要把這個鎖鎖上。

if (multicastLock.isHeld) {
    multicastLock.release()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章