android - Coludn't get the data to server when i turned off the GPS once. It's not sending even after GPS turned on -


i need create application track location using background , , send data server. program send data when reboot device because have launch service on boot complete( android.intent.action.boot_completed).

i don't data server when turned off , turned on gps. when reboot device it's working.it should send data server mobile data if gps turned off. can 1 me please?

whenever turned off , turned on should work without reboot device. how can i?

gpstracker.java

 public class gpstracker extends service {  private static final string tag = "boomboomtestgps";  private locationmanager mlocationmanager = null; private static final int location_interval = 1000 * 60 * 10; private static final float location_distance = 10f; private class locationlistener implements android.location.locationlistener{     location mlastlocation;     public locationlistener(string provider)     {         log.e(tag, "locationlistener " + provider);         mlastlocation = new location(provider);     }      public string currentdate()     {         string datetext = (string)dateformat.format("yyyy-mm-dd hh:mm:ss", (new date()).gettime());         return datetext;     }    // method imei number using context passed class     public string getimeinumber(){         telephonymanager tm = (telephonymanager) getsystemservice(context.telephony_service);         // imei         string imei = tm.getdeviceid();         return imei;     }  @override     public void onlocationchanged(final location location) {         log.e(tag, "onlocationchangedc: " + location);          thread thread =  new thread(new runnable() {             private socket socket;              public void run() {                 try {                     socket = new socket("220.247.223.119", 8888);                     try {                         outputstream target = socket.getoutputstream();                         string sendvalue= getimeinumber()+", "+string.valueof(location.getlatitude())+", "+string.valueof(location.getlongitude()+", "+currentdate());                         target.write(sendvalue.getbytes());                         target.flush();                          log.e("socketconnectionhandler", "s: send");                          socket.close();                         log.e("socketconnectionhandler", "s: closed.");                     } catch (exception e) {                         log.e("socketconnectionhandler", "s: error", e);                     }                  } catch(exception e){                     e.printstacktrace();                 }             }         });         thread.start();          mlastlocation.set(location);      }     @override     public void onproviderdisabled(string provider) {         log.e(tag, "onproviderdisabled: " + provider);        }     @override     public void onproviderenabled(string provider) {         log.e(tag, "onproviderenabled: " + provider);      }     @override     public void onstatuschanged(string provider, int status, bundle extras) {         log.e(tag, "onstatuschanged: " + provider);      }  }  locationlistener[] mlocationlisteners = new locationlistener[] {         new locationlistener(locationmanager.gps_provider),         new locationlistener(locationmanager.network_provider) }; @override public ibinder onbind(intent arg0) {     return null; } @override public int onstartcommand(intent intent, int flags, int startid) {     log.e(tag, "onstartcommand");     initializelocationmanager();      return start_sticky; } @override public void oncreate() {     log.e(tag, "oncreate");     initializelocationmanager();     try {         mlocationmanager.requestlocationupdates(                 locationmanager.network_provider, location_interval, location_distance,                 mlocationlisteners[1]);     } catch (java.lang.securityexception ex) {         log.i(tag, "fail request location update, ignore", ex);     } catch (illegalargumentexception ex) {         log.d(tag, "network provider not exist, " + ex.getmessage());     }     try {         mlocationmanager.requestlocationupdates(                 locationmanager.gps_provider, location_interval, location_distance,                 mlocationlisteners[0]);     } catch (java.lang.securityexception ex) {         log.i(tag, "fail request location update, ignore", ex);     } catch (illegalargumentexception ex) {         log.d(tag, "gps provider not exist " + ex.getmessage());     } } @override public void ondestroy() {     log.e(tag, "ondestroy");     super.ondestroy();     if (mlocationmanager != null) {         (int = 0; < mlocationlisteners.length; i++) {             try {                 mlocationmanager.removeupdates(mlocationlisteners[i]);             } catch (exception ex) {                 log.i(tag, "fail remove location listners, ignore", ex);             }         }     } }  private void initializelocationmanager() {     log.e(tag, "initializelocationmanager");     if (mlocationmanager == null) {         mlocationmanager = (locationmanager) getapplicationcontext().getsystemservice(context.location_service);     } } } 

and here androidmanifest.xml

<manifest package="com.geo.locationtracker" android:versioncode="1" android:versionname="1.0" xmlns:android="http://schemas.android.com/apk/res/android">  <uses-sdk     android:minsdkversion="8"     android:targetsdkversion="17" />    android:targetsdkversion="17" />  <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.read_phone_state"/> <uses-permission android:name="android.permission.receive_boot_completed" /> <uses-permission android:name="android.permission.internet"/>  <uses-permission android:name="android.permission.access_gps" /> <uses-permission android:name="android.permission.access_assisted_gps" /> <uses-permission android:name="android.permission.access_location" /> <uses-permission android:name="android.permission.wake_lock"/> <application     android:allowbackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/apptheme" >      <service android:name=".locationservice" android:icon="@drawable/ic_launcher" android:label="@string/service_name"> </service>      <receiver android:name=".gpsreceiver">   <intent-filter>       <action android:name="android.intent.action.boot_completed" />       <action android:name="android.intent.action.phone_state" />     <category android:name="android.intent.category.default"/>      <action android:name="android.intent.action.package_install" />      <action android:name="android.intent.action.package_added" />  </intent-filter>   

here gps receiver.java

 public class gpsreceiver extends broadcastreceiver {  @override public void onreceive(context context, intent intent) {     if(intent.getaction().equals("android.intent.action.boot_completed"))     {      intent intent1 = new intent(context,gpsservice.class);      //context.startservice(new intent(context,gitservice.class));         intent1.setflags(0x10000000);         context.startservice(intent1);     } } } 

it seems you're creating array of multiple location listeners i'm not sure needed overall can't spot why wouldn't work once gps toggled off/on.

if on pastebin page here, http://pastebin.com/u/scotthelme , have 4 files prefix "gps tracker" contain code need.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -