<?xml version="1.0" encoding="UTF-8"?>
<TaskerData sr="" dvi="1" tv="6.7.6-beta">
  <Task sr="task923">
    <cdate>1788364809322</cdate>
    <edate>1788364809322</edate>
    <id>923</id>
    <nme>ZOE CONNECT v16.3</nme>
    <pri>100</pri>
    <Action sr="act0" ve="7">
      <code>474</code>
      <Str sr="arg0" ve="3">import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

tasker.setVariable("ZOE_LIVE_STOP","0");
tasker.setVariable("ZOE_LIVE_STATE","Connecting");
tasker.setVariable("ZOE_LIVE_ERROR","");

Object oldStop=tasker.getJavaVariable("zOE_STOP_READER");
if(oldStop!=null)try{((boolean[])oldStop)[0]=true;}catch(Exception e){}
Object oldSocket=tasker.getJavaVariable("zOE_SOCKET");
if(oldSocket!=null)try{oldSocket.close();}catch(Exception e){}

tasker.setJavaVariable("zOE_SOCKET",null);
tasker.setJavaVariable("zOE_RX",null);
tasker.setJavaVariable("zOE_STOP_READER",null);

BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter();
if(adapter==null)throw new Exception("Bluetooth indisponible");

BluetoothDevice device=adapter.getRemoteDevice("10:21:3E:4F:6B:47");
adapter.cancelDiscovery();

BluetoothSocket socket=device.createRfcommSocketToServiceRecord(
 UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));

try{
 socket.connect();
 InputStream in=socket.getInputStream();
 OutputStream out=socket.getOutputStream();

 tasker.setJavaVariable("zOE_SOCKET",socket);

 final InputStream rin=in;
 final StringBuffer sharedRx=new StringBuffer();
 final boolean[] stopReader=new boolean[]{false};

 tasker.setJavaVariable("zOE_RX",sharedRx);
 tasker.setJavaVariable("zOE_STOP_READER",stopReader);

 Thread reader=new Thread(new Runnable(){
  public void run(){
   byte[] buf=new byte[512];
   try{
    while(!stopReader[0]){
     int n=rin.read(buf);
     if(n&lt;0)break;
     if(n&gt;0)synchronized(sharedRx){
      sharedRx.append(new String(buf,0,n,"US-ASCII"));
      if(sharedRx.length()&gt;50000)sharedRx.delete(0,20000);
     }
    }
   }catch(Exception e){}
  }
 });
 reader.setDaemon(true);
 tasker.setJavaVariable("zOE_READER",reader);
 reader.start();

 String cr=String.valueOf((char)13);

 out.write(("ATZ"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(2200);
 out.write(("ATE0"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(400);
 out.write(("ATL0"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(300);
 out.write(("ATS0"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(300);
 out.write(("ATH0"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(300);
 out.write(("ATSP7"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(600);
 out.write(("ATSHDADBF1"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(300);
 out.write(("ATFCSH18DADBF1"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(300);
 out.write(("ATCRA18DAF1DB"+cr).getBytes("US-ASCII"));out.flush();Thread.sleep(500);

 tasker.setVariable("ZOE_LIVE_CONNECTED","1");
 tasker.setVariable("ZOE_LIVE_STATE","Connected");
 tasker.setVariable("ZOE_LIVE_ERROR","");
}catch(Exception e){
 try{Object f=tasker.getJavaVariable("zOE_STOP_READER");if(f!=null)((boolean[])f)[0]=true;}catch(Exception x){}
 try{socket.close();}catch(Exception x){}
 tasker.setJavaVariable("zOE_SOCKET",null);
 tasker.setJavaVariable("zOE_RX",null);
 tasker.setJavaVariable("zOE_STOP_READER",null);
 tasker.setJavaVariable("zOE_READER",null);
 tasker.setVariable("ZOE_LIVE_CONNECTED","0");
 tasker.setVariable("ZOE_LIVE_STATE","Connect failed");
 tasker.setVariable("ZOE_LIVE_ERROR",
  e.getClass().getName()+": "+String.valueOf(e.getMessage()));
 throw e;
}</Str>
      <Str sr="arg1" ve="3"></Str>
      <Str sr="arg2" ve="3"></Str>
      <Int sr="arg3" val="0"/>
    </Action>
  </Task>
</TaskerData>
