2013-04-02 2 views
0

누군가 내 휴대용 AP 핫스팟에 연결/연결 해제 할 때 이벤트를 수신하려고합니다. 이 코드를 사용해보십시오.logcat in service로 다른 프로세스 추적

Process p; 
try 
{ 
    p = Runtime.getRuntime().exec("logcat -s hostapd:I"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    String line; 
    while ((line = br.readLine()) != null) 
    { 
    if (line.contains("AP-STA-CONNECTED") || line.contains("AP-STA-DISCONNECTED")) Log.e("mytag", line); 
    } 
} 
catch (IOException e) 
{ 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

그리고 내가 원하는 것처럼 작동합니다. 그러나 나는 그것을 내 봉사 활동에 참여 시켜서 내 활동과 병행하는 법을 모른다. 아니면 누군가가 휴대용 AP 핫스팟에 연결하거나 연결을 끊을 때를 식별하는 또 다른 방법이 있습니까?

답변

0

서비스는 별도의 스레드에 넣지 않는 한 활동과 병렬로 실행되지 않습니다.

서비스를 사용하거나 별도의 스레드를 사용하여이 코드를 병렬로 실행하지 않아도됩니다.

귀하의 경우에 나는 WiFiManager을 사용하여 SSID 정보를 얻는 것이 가장 좋을 것이라고 생각합니다.

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
if (wifiManager != null) { 
    WifiInfo wifi = wifiManager.getConnectionInfo(); 
    if (wifi != null) { 
     String ssid = wifi.getSSID(); 
}   
} 

앱 AP가,가, 의도를 다음과 같이 Broadcast Receiver 시도에 연결되어 모니터링됩니다. 코드 또는 Android Manifest로 등록 할 수 있습니다.

ConnectivityManager.CONNECTIVITY_ACTION 

어떻게 모든 것이 작동할까요? 이 연결 변경 브로드 캐스트를 수신 할 때마다 BroadcastReceiver에서 AP 이름을 확인합니다.

+0

답장을 보내 주셔서 감사합니다.하지만 내 앱이 고급 기능을 사용하여 시스템 무선 랜 핫스팟을 제어하도록 설계되었으므로 누군가 내 핫스팟에 연결할 때를 알고 싶습니다. 스레드를 사용하려고합니다. – JensenCdr