java - Android Wear Step Counter crashing app -


i writing app read heart rate , step count using android wear device. heart rate sensor works step count causing issue. however, on commenting listener step counter , registering null in onresume() app works heart rate sensor. i'm not getting log regarding otherwise have posted here. here's code i'm using

import android.app.activity; import android.content.context; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.bundle; import android.support.wearable.view.watchviewstub; import android.util.log; import android.widget.textview;  import com.google.android.gms.common.api.googleapiclient; import com.google.android.gms.common.api.pendingresult; import com.google.android.gms.common.api.resultcallback; import com.google.android.gms.wearable.node; import com.google.android.gms.wearable.nodeapi; import com.google.android.gms.wearable.wearable;  import java.nio.bytebuffer; import java.util.list;  public class mainactivity extends activity {      private sensormanager msensormanager;     private textview mtextviewheart, mtextviewstep;     private sensor mheartratesensor, mstepcountersensor;     private googleapiclient mgoogleapiclient;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          watchviewstub stub = (watchviewstub) findviewbyid(r.id.watch_view_stub);         stub.setonlayoutinflatedlistener(new watchviewstub.onlayoutinflatedlistener() {             @override             public void onlayoutinflated(watchviewstub stub) {                 mtextviewheart = (textview) stub.findviewbyid(r.id.value_heart);                 mtextviewstep = (textview) stub.findviewbyid(r.id.value_step);             }         });          msensormanager = (sensormanager) getsystemservice(context.sensor_service);         mheartratesensor = msensormanager.getdefaultsensor(sensor.type_heart_rate);         mstepcountersensor = msensormanager.getdefaultsensor(sensor.type_step_counter);          mgoogleapiclient = new googleapiclient.builder(this).addapi(wearable.api).build();         mgoogleapiclient.connect();     }      @override     protected void onresume() {         super.onresume();         msensormanager.registerlistener(heartlistener, mheartratesensor, sensormanager.sensor_delay_normal);         msensormanager.registerlistener(steplistener, mstepcountersensor, sensormanager.sensor_delay_fastest);     }      @override     protected void onpause() {         super.onpause();         msensormanager.unregisterlistener(heartlistener, mheartratesensor);     }      sensoreventlistener heartlistener = new sensoreventlistener() {         @override         public void onsensorchanged(sensorevent event) {             if (event.sensor.gettype() == sensor.type_heart_rate) {                 if (event.values.length > 0) {                     if (event.values[0] > 0.0f) {                         mtextviewheart.setbackgroundresource(android.r.color.holo_green_light);                         mtextviewheart.settext(float.tostring(event.values[0]));                         sendtohandheld(math.round(event.values[0]), sensor.type_heart_rate);                     }                 }             }         }          @override         public void onaccuracychanged(sensor sensor, int accuracy) {          }     };      sensoreventlistener steplistener = new sensoreventlistener() {         @override         public void onsensorchanged(sensorevent event) {              if (event.sensor.gettype() == sensor.type_step_counter) {                 if (event.values.length > 0) {                     mtextviewstep.setbackgroundresource(android.r.color.holo_green_light);                     mtextviewstep.settext(float.tostring(event.values[0]));                     sendtohandheld(math.round(event.values[0]), sensor.type_step_counter);                 }             }         }          @override         public void onaccuracychanged(sensor sensor, int accuracy) {          }     };      private void sendtohandheld(final int val, final int type) {         final pendingresult<nodeapi.getconnectednodesresult> nodes = wearable.nodeapi.getconnectednodes(mgoogleapiclient);         nodes.setresultcallback(new resultcallback<nodeapi.getconnectednodesresult>() {             @override             public void onresult(nodeapi.getconnectednodesresult result) {                 final list<node> nodes = result.getnodes();                 if (nodes != null) {                     (int = 0; < nodes.size(); i++) {                         final node node = nodes.get(i);                         wearable.messageapi.sendmessage(mgoogleapiclient, node.getid(), "/" + type, bytebuffer.allocate(4).putint(val).array());                         log.d("sending", type + ":" + val);                     }                 }             }         });     } } 

update

got log somehow

06-15 11:46:02.342    3355-3355/com.hsc.fit e/androidruntime﹕ fatal exception: main     process: com.hsc.fit, pid: 3355     java.lang.nullpointerexception: attempt invoke virtual method 'void android.widget.textview.setbackgroundresource(int)' on null object reference             @ com.hsc.fit.mainactivity$3.onsensorchanged(mainactivity.java:92)             @ android.hardware.systemsensormanager$sensoreventqueue.dispatchsensorevent(systemsensormanager.java:405)             @ android.os.messagequeue.nativepollonce(native method)             @ android.os.messagequeue.next(messagequeue.java:143)             @ android.os.looper.loop(looper.java:122)             @ android.app.activitythread.main(activitythread.java:5221)             @ java.lang.reflect.method.invoke(native method)             @ java.lang.reflect.method.invoke(method.java:372)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:899)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:694) 

fixed it. watchviewstub's setonlayoutinflatedlistener() called after onresume(), , sensor gets registered in onresume(). since text view used in listener of sensor, , wasn't assigned refrence yet, getting nullpointerexception. moved sensor registertion inside watchviewstub's listener , works now.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -