android - Waking Device When Destination Reached -


the program below used vibrating phone when destination reached.this works when screen on doesnt when device idle(screen off) suggestion works while screen off appreciated.i novice in android development sorry if question stupid.`

package com.sset.jibin.wakemethere;    import android.app.activity;  import android.app.alarmmanager;  import android.app.pendingintent;  import android.content.context;  import android.content.intent;  import android.content.sharedpreferences;  import android.location.location;  import android.os.bundle;  import android.os.systemclock;  import android.os.vibrator;  import android.util.log;  import android.view.view;  import android.widget.button;  import android.widget.textview;    import com.google.android.gms.common.connectionresult;  import com.google.android.gms.common.googleplayservicesutil;  import com.google.android.gms.common.api.googleapiclient;  import com.google.android.gms.common.api.pendingresult;  import com.google.android.gms.common.api.status;  import com.google.android.gms.location.locationlistener;  import com.google.android.gms.location.locationrequest;  import com.google.android.gms.location.locationservices;    import java.text.dateformat;  import java.util.date;    public class locationactivity extends activity implements          locationlistener,          googleapiclient.connectioncallbacks,          googleapiclient.onconnectionfailedlistener {        private static final string tag = "locationactivity";      private static final long interval = 1000 * 10;      private static final long fastest_interval = 1000 * 5;      button btnfusedlocation;      textview tvlocation;      locationrequest mlocationrequest;      googleapiclient mgoogleapiclient;      location mcurrentlocation;      string mlastupdatetime;        protected void createlocationrequest() {          mlocationrequest = new locationrequest();          mlocationrequest.setinterval(interval);          mlocationrequest.setfastestinterval(fastest_interval);          mlocationrequest.setpriority(locationrequest.priority_high_accuracy);      }        @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          log.d(tag, "oncreate ...............................");          //show error dialog if goolgleplayservices not available          if (!isgoogleplayservicesavailable()) {              finish();          }          createlocationrequest();          mgoogleapiclient = new googleapiclient.builder(this)                  .addapi(locationservices.api)                  .addconnectioncallbacks(this)                  .addonconnectionfailedlistener(this)                  .build();            setcontentview(r.layout.activity_location);          tvlocation = (textview) findviewbyid(r.id.tvlocation);            btnfusedlocation = (button) findviewbyid(r.id.btnshowlocation);          btnfusedlocation.setonclicklistener(new view.onclicklistener() {              @override              public void onclick(view arg0) {                  updateui();              }          });        }        @override      public void onstart() {          super.onstart();          log.d(tag, "onstart fired ..............");          mgoogleapiclient.connect();      }        @override      public void onstop() {          super.onstop();          log.d(tag, "onstop fired ..............");          mgoogleapiclient.disconnect();          log.d(tag, "isconnected ...............: " + mgoogleapiclient.isconnected());      }        private boolean isgoogleplayservicesavailable() {          int status = googleplayservicesutil.isgoogleplayservicesavailable(this);          if (connectionresult.success == status) {              return true;          } else {              googleplayservicesutil.geterrordialog(status, this, 0).show();              return false;          }      }        @override      public void onconnected(bundle bundle) {          log.d(tag, "onconnected - isconnected ...............: " + mgoogleapiclient.isconnected());          startlocationupdates();      }        protected void startlocationupdates() {          pendingresult<status> pendingresult = locationservices.fusedlocationapi.requestlocationupdates(                  mgoogleapiclient, mlocationrequest, this);          log.d(tag, "location update started ..............: ");      }        @override      public void onconnectionsuspended(int i) {        }        @override      public void onconnectionfailed(connectionresult connectionresult) {          log.d(tag, "connection failed: " + connectionresult.tostring());      }        @override      public void onlocationchanged(location location) {          log.d(tag, "firing onlocationchanged..............................................");          mcurrentlocation = location;          mlastupdatetime = dateformat.gettimeinstance().format(new date());          updateui();      }        private void updateui() {          log.d(tag, "ui update initiated .............");          if (null != mcurrentlocation) {              double l = mcurrentlocation.getlatitude();              double le = mcurrentlocation.getlongitude();              string lat = string.valueof(l);              string lng = string.valueof(le);              tvlocation.settext("at time: " + mlastupdatetime + "\n" +                      "latitude: " + lat + "\n" +                      "longitude: " + lng + "\n" +                      "accuracy: " + mcurrentlocation.getaccuracy() + "\n" +                      "provider: " + mcurrentlocation.getprovider());                       mapsactivity ma = new mapsactivity();                    location loc1 = new location("");              loc1.setlatitude(l);              loc1.setlongitude(le);              log.d("=====>", "t5");              sharedpreferences preff = getsharedpreferences("ll", 0);               string lal = preff.getstring("la", null);               string lnl = preff.getstring("ln", null);              log.d("=====>", "t5.1");              log.d("=====>", lal);              log.d("=====>", lnl);                  double la = double.parsedouble(lal);              double ln = double.parsedouble(lnl);              location loc2 = new location("");              loc2.setlatitude(la);              loc2.setlongitude(ln);              log.d("=====>", "t6");              float distanceinmeters = loc1.distanceto(loc2);                log.d("=====>", "t7");                if (distanceinmeters < 20) {                  log.d("=====>", "found");                                                 vibrator v = (vibrator) this.getsystemservice(context.vibrator_service);                  // vibrate 500 milliseconds                  v.vibrate(500);                }                        } else {              log.d(tag, "location null ...............");          }      }        @override      protected void onpause() {          super.onpause();          stoplocationupdates();      }        protected void stoplocationupdates() {          locationservices.fusedlocationapi.removelocationupdates(                  mgoogleapiclient, this);          log.d(tag, "location update stopped .......................");      }        @override      public void onresume() {          super.onresume();          if (mgoogleapiclient.isconnected()) {              startlocationupdates();              log.d(tag, "location update resumed .....................");          }      }  }

`

you have move location logic service. run if application leave user or screen off.


Popular posts from this blog