java - How to switch between activities with the same bluetooth connection address, how to do that? -


i have 3 activities:

devicelistactivity: lists out paired device list , after clicking on 1 paired device switches mainactivity.

mainactivity: receives bluetooth address , initiates connection bluetoothsocket , starts thread receive text arduino, after switch thread mainactivity addactivity2 same connection. have same program mainactivity in addactivity2 too.

main issue: want stop running thread of mainactivity while switching mainactivity addactivity2 , start thread of addactivity2. how ??

*big issue facing: switching between 2 activities (mainactivity , addactivity2) same address. issue lies in threads.

here's devicelistactivity

public class devicelistactivity extends activity {      private static final string tag = "devicelistactivity";     private static final boolean d = true;      // string send on mainactivity     public static string extra_device_address = "device_address";      private bluetoothadapter mbtadapter;     private arrayadapter<string> mpaireddevicesarrayadapter;     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.device_list);     }      protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.device_list);     }      public void onresume() {         super.onresume();         checkbtstate();          textview1 = (textview) findviewbyid(r.id.connecting);         textview1.settextsize(40);         textview1.settext(" ");          // initialize array adapter paired devices         mpaireddevicesarrayadapter = new arrayadapter<string>(this, r.layout.device_name);          // find , set listview paired devices         listview pairedlistview = (listview) findviewbyid(r.id.paired_devices);         pairedlistview.setadapter(mpaireddevicesarrayadapter);         pairedlistview.setonitemclicklistener(mdeviceclicklistener);          // local bluetooth adapter         mbtadapter = bluetoothadapter.getdefaultadapter();          // set of paired devices , append 'paireddevices'         set<bluetoothdevice> paireddevices = mbtadapter.getbondeddevices();          // add previosuly paired devices array         if (paireddevices.size() > 0) {             findviewbyid(r.id.title_paired_devices).setvisibility(view.visible);//make title viewable             (bluetoothdevice device : paireddevices) {                 mpaireddevicesarrayadapter.add(device.getname() + "\n" + device.getaddress());             }         } else {             string nodevices = getresources().gettext(r.string.none_paired).tostring();             mpaireddevicesarrayadapter.add(nodevices);         }     }      // set on-click listener list (nicked - unsure)     private adapterview.onitemclicklistener mdeviceclicklistener = new adapterview.onitemclicklistener() {         public void onitemclick(adapterview<?> av, view v, int arg2, long arg3) {              textview1.settext("connecting...");             // device mac address, last 17 chars in view             string info = ((textview) v).gettext().tostring();             string address = info.substring(info.length() - 17);              // make intent start next activity while taking mac address.             intent = new intent(devicelistactivity.this, mainactivity.class);             i.putextra(extra_device_address, address);             startactivity(i);         }     };      private void checkbtstate() {         // check device has bluetooth , turned on         mbtadapter=bluetoothadapter.getdefaultadapter(); // check out works!!!         if(mbtadapter==null) {             toast.maketext(getbasecontext(), "device not support bluetooth", toast.length_short).show();         } else {             if (mbtadapter.isenabled()) {                 log.d(tag, "...bluetooth on...");             } else {                 //prompt user turn on bluetooth                 intent enablebtintent = new intent(bluetoothadapter.action_request_enable);                 startactivityforresult(enablebtintent, 1);              }         }     } } 

here's mainactivity, receives string arduino

protected void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate)       bluetoothin = new handler() {             public void handlemessage(android.os.message msg) {                 if (msg.what == handlerstate) {                                     //if message want                     string readmessage = (string) msg.obj;                         // msg.arg1 = bytes connect thread                     recdatastring.append(readmessage);                          //keep appending string until ~                     int endoflineindex = recdatastring.indexof("~");                    // determine end-of-line                     if (endoflineindex > 0) {                                           // make sure there data before ~                         string datainprint = recdatastring.substring(0, endoflineindex);    // extract string                         txtstring.settext("data received = " + datainprint);                         int datalength = datainprint.length();                          //get length of data received                         txtstringlength.settext("string length = " + string.valueof(datalength));                          if (recdatastring.charat(0) == '#')                             //if starts # know looking                         {                             string sensor0 = recdatastring.substring(1, 5);             //get sensor value string between indices 1-5                               sensorview0.settext(" humidity = " + sensor0 + "%");    //update textviews sensor values                            }                         recdatastring.delete(0, recdatastring.length());                    //clear string data                         // strincom =" ";                         datainprint = " ";                     }                 }             }         };          btadapter = bluetoothadapter.getdefaultadapter();       // bluetooth adapter         checkbtstate();     }      private bluetoothsocket createbluetoothsocket(bluetoothdevice device) throws ioexception {          return  device.createrfcommsockettoservicerecord(btmoduleuuid);         //creates secure outgoing connecetion bt device using uuid     }      @override     synchronized public void onresume() {         super.onresume();         //get mac address devicelistactivity via intent         intent intent = getintent();          //get mac address devicelistactivty via         address = intent.getstringextra(devicelistactivity.extra_device_address);          //create device , set mac address         bluetoothdevice device = btadapter.getremotedevice(address);          try {             btsocket = createbluetoothsocket(device);         } catch (ioexception e) {             toast.maketext(getapplicationcontext(), "socket creation failed", toast.length_long).show();         }         // establish bluetooth socket connection.         try         {             btsocket.connect();         } catch (ioexception e) {             try             {                 btsocket.close();             } catch (ioexception e2)             {                 //insert code deal             }         }          mconnectedthread = new connectedthread(btsocket);         mconnectedthread.start();     } } 

inner thread class receives string inside mainactivity

 class connectedthread extends thread {     private final inputstream mminstream;     private final outputstream mmoutstream;      //creation of connect thread     public connectedthread(bluetoothsocket socket) {         inputstream tmpin = null;         outputstream tmpout = null;          try {             //create i/o streams connection             tmpin = socket.getinputstream();             tmpout = socket.getoutputstream();         } catch (ioexception e) { }          mminstream = tmpin;         mmoutstream = tmpout;     }      public void run() {         byte[] buffer = new byte[256];         int bytes;          // keep looping listen received messages         while (true) {             try {                 bytes = mminstream.read(buffer);            //read bytes input buffer                 string readmessage = new string(buffer, 0, bytes);                 // send obtained bytes ui activity via handler                 bluetoothin.obtainmessage(handlerstate, bytes, -1, readmessage).sendtotarget();             } catch (ioexception e) {                 break;             }         }     }     //write method     public void write(string input) {         byte[] msgbuffer = input.getbytes();           //converts entered string bytes         try {             mmoutstream.write(msgbuffer);                //write bytes on bt connection via outstream         } catch (ioexception e) {             //if cannot write, close application             toast.maketext(getbasecontext(), "connection failure", toast.length_long).show();             finish();          }     } } 

another activity same mainactivity

protected void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate)       bluetoothin = new handler() {             public void handlemessage(android.os.message msg) {                 if (msg.what == handlerstate) {                                     //if message want                     string readmessage = (string) msg.obj;                         // msg.arg1 = bytes connect thread                     recdatastring.append(readmessage);                          //keep appending string until ~                     int endoflineindex = recdatastring.indexof("~");                    // determine end-of-line                     if (endoflineindex > 0) {                                           // make sure there data before ~                         string datainprint = recdatastring.substring(0, endoflineindex);    // extract string                         txtstring.settext("data received = " + datainprint);                         int datalength = datainprint.length();                          //get length of data received                         txtstringlength.settext("string length = " + string.valueof(datalength));                          if (recdatastring.charat(0) == '#')                             //if starts # know looking                         {                             string sensor0 = recdatastring.substring(1, 5);             //get sensor value string between indices 1-5                               sensorview0.settext(" humidity = " + sensor0 + "%");    //update textviews sensor values                            }                         recdatastring.delete(0, recdatastring.length());                    //clear string data                         // strincom =" ";                         datainprint = " ";                     }                 }             }         };      runonuithread(new runnable() {              @override         synchronized  public void run() {                  btadapter = bluetoothadapter.getdefaultadapter();       // bluetooth adapter                 checkbtstate();                 toast.maketext(getapplicationcontext(),mainactivity.address2,toast.length_short).show();                 device=btadapter.getremotedevice(mainactivity.address2);              }         });          btadapter = bluetoothadapter.getdefaultadapter();       // bluetooth adapter         checkbtstate();     }      private bluetoothsocket createbluetoothsocket(bluetoothdevice device) throws ioexception {          return  device.createrfcommsockettoservicerecord(btmoduleuuid);         //creates secure outgoing connecetion bt device using uuid     }      @override     synchronized public void onresume() {         super.onresume();         //get mac address devicelistactivity via intent         intent intent = getintent();          //get mac address devicelistactivty via         address = intent.getstringextra(devicelistactivity.extra_device_address);          //create device , set mac address         bluetoothdevice device = btadapter.getremotedevice(address);          try {             btsocket = createbluetoothsocket(device);         } catch (ioexception e) {             toast.maketext(getapplicationcontext(), "socket creation failed", toast.length_long).show();         }         // establish bluetooth socket connection.         try         {             btsocket.connect();         } catch (ioexception e) {             try             {                 btsocket.close();             } catch (ioexception e2)             {                 //insert code deal             }         }          mconnectedthread = new connectedthread(btsocket);         mconnectedthread.start();     } } 


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -