Android Open Source - SmartTools Device Msg Channel






From Project

Back to project page SmartTools.

License

The source code is released under:

GNU General Public License

If you think the Android project SmartTools listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.nj.simba.connect;
//from  w  w w  .ja  v  a 2 s.  c  o m
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.zip.GZIPInputStream;
import com.nj.simba.IDeviceInfo;
import com.nj.simba.base.IDeviceReqListener;
import com.nj.simba.utils.Config;


public class DeviceMsgChannel extends Thread {
    private BlockingQueue<DeviceMessage> mQueue = null;

  public DeviceMsgChannel() {
      mQueue = new ArrayBlockingQueue<DeviceMessage>(10);
  }
  
  @Override
    public void run() {
      while(true) {
          DeviceMessage msg = null;
            try {
                msg = mQueue.take();
                
                if ( msg.what == MSG_QUIT ) {
                    mQueue.clear();
                    break;
                }
                
                process(msg);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
      }
      
      System.out.println("msg looper quit!");
    }
  
  public void sendReqMsg(DeviceMessage msg) {
      try {
            mQueue.put(msg);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
  }

  private void process(DeviceMessage msg) {
      final IDeviceReqListener listener = msg.who;
      final int what = msg.what;
      
      System.out.println("process:" + msg.what);
      
        new Thread(new Runnable() {
            
            @Override
            public void run() {
                listener.onRequestBack(doProcess(what));
            }
        }).start();
    }

    protected Object doProcess(int what) {
        Object obj = null;
        
        switch(what) {
        case MSG_GET_APPS:
            obj = requestApps();
            break;
        case MSG_GET_PROPS:
            break;
        default:
            break;
        }
        
        return obj;
    }
  
  /**
   * talk with device get the list of packages on device
   * 
   * @return
   */
  public IDeviceInfo requestApps() {
      IDeviceInfo deviceInfo = null;

    try {
      Socket sokcet = new Socket("localhost", Config.HOST_PORT);
      boolean isConnected = sokcet.isConnected();
      System.out.println("isConnected:" + isConnected);

      OutputStream out = sokcet.getOutputStream();
      InputStream in = sokcet.getInputStream();
      DataOutputStream dos = new DataOutputStream(out);
      DataInputStream dis = new DataInputStream(in);

      /** 1??send CMD **/
      dos.writeUTF("CMD");

      /** 2??recv DAT **/
      GZIPInputStream gis = new GZIPInputStream(in);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      byte[] data = new byte[1024];    
      int len = 0;
      
      while((len = gis.read(data) )!= -1) {
          baos.write(data, 0, len);
      }
      
      deviceInfo = IDeviceInfo.creator(baos.toByteArray());

      /** 3??send ACK **/
      dos.writeUTF("ACK");
      sokcet.close();
    } catch (Exception e) {
      e.printStackTrace();
    }

    return deviceInfo;
  }

  public static final int MSG_GET_APPS  = 0;
  public static final int MSG_GET_PROPS = 1;
  public static final int MSG_QUIT      = -1;
}




Java Source Code List

com.nj.simba.BatteryReceiver.java
com.nj.simba.DaemonController.java
com.nj.simba.DeviceInfo.java
com.nj.simba.DviceInfoCollector.java
com.nj.simba.IDeviceInfo.java
com.nj.simba.PackageReceiver.java
com.nj.simba.SdcardStatuChangeReceiver.java
com.nj.simba.SmartToolService.java
com.nj.simba.app.MainFrame.java
com.nj.simba.app.SmartToolsApp.java
com.nj.simba.app.ToolbarPanel.java
com.nj.simba.base.IDeviceListener.java
com.nj.simba.base.IDeviceReqListener.java
com.nj.simba.connect.DeviceCmdWorker.java
com.nj.simba.connect.DeviceConnectWorker.java
com.nj.simba.connect.DeviceMessage.java
com.nj.simba.connect.DeviceMsgChannel.java
com.nj.simba.ctrls.FilerListRender.java
com.nj.simba.ctrls.ImageBtn.java
com.nj.simba.ctrls.LeftPanel.java
com.nj.simba.ctrls.MetroCoolBtn.java
com.nj.simba.ctrls.MyProgessBar.java
com.nj.simba.ctrls.SubPanel.java
com.nj.simba.ctrls.TabPanel.java
com.nj.simba.ctrls.ThemeButton.java
com.nj.simba.ctrls.ThemeLabel.java
com.nj.simba.ctrls.ToolbarBtn.java
com.nj.simba.cts.CtsResultReset.java
com.nj.simba.page.appmgr.AppTableRender.java
com.nj.simba.page.appmgr.DeviceAppTableModel.java
com.nj.simba.page.appmgr.PageAppMgr.java
com.nj.simba.page.device.DeviceListRender.java
com.nj.simba.page.device.DevicePanel.java
com.nj.simba.page.device.PageMyDevice.java
com.nj.simba.page.filer.FileTableRender.java
com.nj.simba.page.filer.PageFiler.java
com.nj.simba.page.logcat.ILogCatBufferChangeListener.java
com.nj.simba.page.logcat.LogCatMessageList.java
com.nj.simba.page.logcat.LogCatMessageParser.java
com.nj.simba.page.logcat.LogCatMessage.java
com.nj.simba.page.logcat.LogCatPidToNameMapper.java
com.nj.simba.page.logcat.LogCatReceiverFactory.java
com.nj.simba.page.logcat.LogCatReceiver.java
com.nj.simba.page.logcat.PageLogcat.java
com.nj.simba.utils.Config.java
com.nj.simba.utils.FileSyncHelper.java
com.nj.simba.utils.I2CTest.java
com.nj.simba.utils.IProgressMonitor.java
com.nj.simba.utils.SyncProgressHelper.java
com.nj.simba.utils.SyncProgressMonitor.java
com.nj.simba.utils.Utils.java