기본 HTTP 요청을 처리하는 서비스로 애플리케이션을 개발했습니다. 전화가 같은 HTTP POST 요청을 수신 할 때이 코드는 핸들러 내부에, 나는 아래의 오류를 얻고있다 존재로,GPS Android의 LocationManager requestLocationUpdates()
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,200,0,locationListener);
:하지만 http ://IP:port/gps/on
, 다음과 같은 GPS 수신기에 등록해야
8.614: E/AndroidRuntime(21211): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
06-18 12:34:58.614: E/AndroidRuntime(21211): at android.os.Handler.<init>(Handler.java:121)
06-18 12:34:58.614: E/AndroidRuntime(21211): at android.location.LocationManager$ListenerTransport$1.<init>(LocationManager.java:183)
06-18 12:34:58.614: E/AndroidRuntime(21211): at android.location.LocationManager$ListenerTransport.<init>(LocationManager.java:183)
06-18 12:34:58.614: E/AndroidRuntime(21211): at android.location.LocationManager._requestLocationUpdates(LocationManager.java:661)
06-18 12:34:58.614: E/AndroidRuntime(21211): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:486)
06-18 12:34:58.614: E/AndroidRuntime(21211): at com.example.devicecommunication.ConnectService$HttpFileHandler.registerGPS(ConnectService.java:4281)
06-18 12:34:58.614: E/AndroidRuntime(21211): at com.example.devicecommunication.ConnectService$HttpFileHandler.handle(ConnectService.java:700)
06-18 12:34:58.614: E/AndroidRuntime(21211): at org.apache.http.protocol.HttpService.doService(HttpService.java:243)
06-18 12:34:58.614: E/AndroidRuntime(21211): at org.apache.http.protocol.HttpService.handleRequest(HttpService.java:187)
06-18 12:34:58.614: E/AndroidRuntime(21211): at com.example.devicecommunication.ConnectService$WorkerThread.run(ConnectService.java:4987)
처리기/루퍼를 사용해야하는지 알려주십시오. 그리고 이것을하는 방법에 대한 예. 미리 감사드립니다!
public String registerGPS(){
String gps= "";
if(!gpsSensor){
if(isGpsOn(appContext))
{
Log.d("GPS on","Using GPS Provider here");
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,200,0,locationListener);
gps = "***********GPS Provider registered here *********************";
}
else
{
Log.d("GPS off","using NETWORK Provider here");
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,200,0,locationListener);
gps = "***********Network provider registered here *********************";
}
}
gpsSensor = true;
return gps;
}
어디에서 전화 하시겠습니까? 이 사용법은 UI 스레드를 사용해야하고 백그라운드에서 작업을 수행하지 않아도된다는 것을 의미합니다. – Rarw
더 많은 코드를 볼 필요가 있습니다. 어디에서 requestLocationUpdates를 가져 왔는지, 핸들러 또는 일종의 것으로 추측합니다. 더 많은 코드를 표시하십시오. – Siddharth
@Rarw 안녕하세요, 답장을 보내 주셔서 감사합니다. 모든 요청을 처리하는 클래스를 만드는 스레드가 있습니다. POST 처리기에서 수신기와 함께 GPS에 등록해야합니다. 이것은 나의 요구 사항이다. – user1741274