google play services - Android Activity Recognition - Reconnecting following Disconnection -


with google play services' activity recognition, recommend if service disconnects (which might) should remove client:

http://developer.android.com/training/location/activity-recognition.html

in cases, location services may disconnect activity recognition client before call disconnect(). handle situation, implement ondisconnected(). in method, set request flag indicate request not in progress, , delete client

that's fine, gives no instructions how reconnect [safely]. i'm running foreground service needs maintain activity recognition @ times, following disconnection:

@override     public void ondisconnected() {          mrecognitionenabled = false;         mrequestinprogress = false;         mrecognitionclient = null;          //re-initialise activity recognition if service still running         if (sservicerunning) {                       triggeractivityrecognition();         }     } 

i reinstantiate client , reconnect:

private void triggeractivityrecognition() {      if (!mrequestinprogress ) {          mrequestinprogress = true;                   mrecognitionclient = new activityrecognitionclient(this, this, this);         mrecognitionclient.connect();     }     } 

but according of bug reports i'm getting, there's exception occurring follows:

java.lang.nullpointerexception @ com.google.android.gms.internal.bh.a(unknown source) @ com.google.android.gms.internal.k.f(unknown source) @ com.google.android.gms.internal.k$e.onserviceconnected(unknown source) @ com.google.android.gms.internal.l.a(unknown source) @ com.google.android.gms.internal.k.connect(unknown source) @ com.google.android.gms.location.activityrecognitionclient.connect(unknown source) @ com.myapp.myservice.triggeractivityrecognition(myservice.java:316) @ com.myapp.myservice.ondisconnected(myservice.java:407) @ com.google.android.gms.internal.k.a(unknown source) @ com.google.android.gms.internal.k$e.onservicedisconnected(unknown source) @ com.google.android.gms.internal.l$a$a.onservicedisconnected(unknown source) 

the disconnection occurs results in same stack trace every time.

so if being caused google play services, there can prevent or bug need log android?

this works me:

don't attempt reconnect ondisconnect(), instead nothing in ondisconnect()

public void ondisconnected() {  //do nothing here   } 

simply use client before, check if connected

if (!mrecognitionclient.isconnected()) {     // client disconnected, reconnect     mrecognitionclient.connect(); } 

the playservices seems reconnect nicely.


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -