title: LocationManager requestLocationUpdates() in GPS Android
body: <p>I have developed an application as a service that handles basic HTTP requests. When the phone receives a HTTP Post request like: <code>http ://IP:port/gps/on</code>, it should register to the GPS listener like the following:</p>
  
  <pre><code> lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,200,0,locationListener); 
  </code></pre>
  
  <p>But, as this code is present inside the handler, I am getting the below error:</p>
  
  <pre><code>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.&lt;init&gt;(Handler.java:121)
  06-18 12:34:58.614: E/AndroidRuntime(21211):    at android.location.LocationManager$ListenerTransport$1.&lt;init&gt;(LocationManager.java:183)
  06-18 12:34:58.614: E/AndroidRuntime(21211):    at android.location.LocationManager$ListenerTransport.&lt;init&gt;(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) 
  </code></pre>
  
  <p>Can you please let me know if I have to use handler/ Looper for this? And any example of how to do this. Thanks in advance!</p>
  
  <p>Code to register GPS is called by a class that handles HTTP requests:</p>
  
  <pre><code>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; 
  }
  </code></pre>