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
Post a Comment