Android IntentService bluetooth radio -


i'm using estimote sdk monitor bluetooth pings when entering , exiting regions. working correctly when had scanning , notification code in activity, app no longer in foreground stopped. i'm trying set service bluetooth scanning carries on in background until click button stop it. have activity , service classes below when try debug app not starting scanning process, message:

i/estimotesdk: com.estimote.sdk.service.beaconservice.oncreate:305 creating service d/bluetoothadapter: 811314615: getstate() :  mservice = null. returning state_off 

for reason don't think service starting properly, i'm trying figure out why. using intentservice correctly, know stops when work done, scanning process loop shouldn't finish unless explicitly tell component. using correct type of service?

here's code:

// mainactivity.java  import android.app.notification; import android.app.notificationmanager; import android.app.pendingintent; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.content.intentfilter; import android.os.bundle; import android.support.design.widget.floatingactionbutton; import android.support.design.widget.snackbar; import android.support.v4.content.localbroadcastmanager; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.view; import android.view.menu; import android.view.menuitem; import android.widget.toast;   public class mainactivity extends appcompatactivity {      // bool deal 2 listen requests (not implemented yet)     private static boolean listening = false;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);         setsupportactionbar(toolbar);          floatingactionbutton fab = (floatingactionbutton) findviewbyid(r.id.fab);          broadcastreceiver mmessagereceiver = new broadcastreceiver() {             @override             public void onreceive(context context, intent intent) {                 // data included in intent                 string message = intent.getstringextra("message");                 if (message.equals("entered_region"))                 {                     shownotification("welcome..","to access lab!");                 }                 else if(message.equals("exited_region"))                 {                     shownotification("you've left lab..", "goodbye!");                 }             }         };           localbroadcastmanager.getinstance(this).registerreceiver(mmessagereceiver,             new intentfilter("listen"));           // long click listener enabling background monitoring         fab.setonlongclicklistener(new view.onlongclicklistener() {             @override             public boolean onlongclick(view view) {                  intent myintent = new intent(mainactivity.this, backgroundservice.class);                 startservice(myintent);                  toast.maketext(mainactivity.this, "service starting..", toast.length_short).show();         //         snackbar.make(view, "bluetooth authentication on", snackbar.length_long)        //                 .setaction("action", null).show();                 return true;             }         });           // click listener disable background monitoring         fab.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                  intent stopintent = new intent(mainactivity.this, backgroundservice.class);                 stopservice(stopintent);                 toast.maketext(mainactivity.this, "service ended..", toast.length_short).show();        //          snackbar.make(view, "bluetooth authentication turned off", snackbar.length_long)       //                  .setaction("action", null).show();             }         });      }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.menu_main, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.     int id = item.getitemid();          //noinspection simplifiableifstatement         if (id == r.id.action_settings) {             return true;         }          return super.onoptionsitemselected(item);     }      public void shownotification(string title, string message) {         intent notifyintent = new intent(this, mainactivity.class);         notifyintent.setflags(intent.flag_activity_single_top);         pendingintent pendingintent = pendingintent.getactivities(this, 0,             new intent[] { notifyintent }, pendingintent.flag_update_current);         notification notification = new notification.builder(this)             .setsmallicon(android.r.drawable.ic_dialog_info)             .setcontenttitle(title)             .setcontenttext(message)             .setautocancel(true)             .setcontentintent(pendingintent)             .build();     notification.defaults |= notification.default_sound;     notificationmanager notificationmanager =             (notificationmanager) getsystemservice(context.notification_service);     notificationmanager.notify(1, notification); } 

.

//backgroundservice.java import com.estimote.sdk.beacon; import com.estimote.sdk.beaconmanager; import com.estimote.sdk.region; import com.estimote.sdk.systemrequirementschecker;  import java.util.list; import java.util.uuid;   public class backgroundservice extends intentservice {      private beaconmanager beaconmanager;     private region region;      // default empty constructor     public backgroundservice()     {         super("backgroundservice");     }      @override     protected void onhandleintent(intent workintent)     {         beaconmanager.setmonitoringlistener(new beaconmanager.monitoringlistener() {             @override             public void onenteredregion(region region, list<beacon> list)             {                 intent localintent = new intent("listen");                 localintent.putextra("message", "entered_region");                 localbroadcastmanager.getinstance(getapplicationcontext()).sendbroadcast(localintent);             }              @override             public void onexitedregion(region region)             {                 intent localintent = new intent("listen");                 localintent.putextra("message", "exited_region");                 localbroadcastmanager.getinstance(getapplicationcontext()).sendbroadcast(localintent);             }         });     }       @override     public void oncreate()     {         super.oncreate();          beaconmanager = new beaconmanager(getapplicationcontext());         region = new region("ranged region",             uuid.fromstring("b9407f30-f5f8-466e-aff9-25556b57fe6d"), 32905, 62058);          beaconmanager.connect(new beaconmanager.servicereadycallback() {             @override             public void onserviceready() {                 beaconmanager.startmonitoring(region);             }         });     }       @override     public void ondestroy()     {     //    beaconmanager.disconnect();         super.ondestroy();         stopself();     } } 


Comments