안드로이드 잡담-HTC 등 휴대전화로 UDP 방송 메시지를 받지 못하는 솔루션

1476 단어 android
최근 안드로이드 휴대전화에서 UDP 메시지를 보낼 때 HTC 등 모델(테스트용 HTC new one)은 방송 메시지를 받지 못하고, 다른samsung,huawei,xiaomi,nexus 등은 문제가 없다.
그래서 HTC가 시스템을 최적화해서 꺼버렸을 거라고 추측했다.휴대전화가 UDP 방송 기능을 켜면 전기가 소모될 뿐만 아니라 시스템 자원을 차지하기 때문이다.몇몇 휴대전화 업체들은 기본적으로 이 기능을 껐을 수도 있지만,
핸드폰으로 UDP 메시지를 보내려면 먼저 신청해야 이 기능을 사용할 수 있다.
솔루션:
1. oncreate () 방법에서 WifiManager를 실례화합니다.MulticastLock 객체 lock
WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock= manager.createMulticastLock("localWifi");

2. 방송 송신, 메시지 수신을 호출하기 전에 lock를 호출한다.acquire () 방법
3. 사용한 후 즉시 lock를 호출합니다.release () 자원을 방출하고 lock를 여러 번 호출하는 것을 거부합니다.acquire () 방법, 프로그램이 붕괴될 수 있습니다
예를 들면 다음과 같습니다.
Caused by: java.lang.UnsupportedOperationException: Exceeded maximum number of wifi locks

또한 가입 권한이 필요합니다
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

이렇게 하면 HTC new one은 라디오 메시지를 보내고 받을 수 있다
 
참조:
http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
http://blog.csdn.net/lvron/article/details/6606755

좋은 웹페이지 즐겨찾기