Android Open Source - SmartTools Device Connect Worker






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;
//  w w  w .  ja  v  a  2  s .com
import java.io.File;
import java.util.List;

import javax.swing.SwingWorker;

import com.android.ddmlib.IDevice;
import com.android.ddmlib.IShellOutputReceiver;
import com.android.ddmlib.InstallException;
import com.nj.simba.IDeviceInfo;
import com.nj.simba.app.SmartToolsApp;
import com.nj.simba.base.IDeviceReqListener;
import com.nj.simba.utils.Config;

public class DeviceConnectWorker extends SwingWorker<IDeviceInfo, String> implements IShellOutputReceiver, IDeviceReqListener{
    private boolean mIsApkInstalled = false;
    private IDevice mCurDevice = null;
    private int mRcvrMode = 0;
    private IDeviceInfo mDeviceInfo = null;
    private Object mLock = new Object();
    
    public DeviceConnectWorker(IDevice device) {
        mCurDevice = device;

        try {
            mCurDevice.createForward(Config.HOST_PORT, Config.DEVICE_PORT);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
    
    @Override
    protected IDeviceInfo doInBackground() throws Exception {
        mIsApkInstalled = false;
        
        try {
            mRcvrMode = 0;
            mCurDevice.executeShellCommand(Config.CMD_CHECK_SERVER, this); // block call
        } catch (Exception e) {
            e.printStackTrace();
        }

        synchronized (mLock) {
            mLock.wait();
        }
        
        System.out.println("DeviceConnectWorker: doInBackground end");
        return mDeviceInfo;
    }
    
    @Override
    protected void done() {
        System.out.println("DeviceConnectWorker: done");
        SmartToolsApp.getApp().connected(mDeviceInfo);
    }
    
    @Override
    protected void process(List<String> chunks) {
        System.out.println("DeviceConnectWorker: process");
        
        for (String string : chunks) {
            System.out.println(string);
        }
    }
    
    @Override
    public void addOutput(byte[] data, int start, int offset) {
        System.out.println("DeviceConnectWorker: addOutput");
        
        if ( mRcvrMode == 0 ) { // check server apk
            mIsApkInstalled = true;
        } else { // try start server
            // ignore output
        }
    }

    @Override
    public void flush() {
        if ( mRcvrMode == 0 && mIsApkInstalled == false ) {
            installApk();
        } else if ( mRcvrMode == 1)  { // try start server
            System.out.println("server started!");
            SmartToolsApp.getApp().sendMessage(new DeviceMessage(0, this));
            return;
        }
        
        mRcvrMode = 1;
        try {
            System.out.println("try start server!");
            mCurDevice.executeShellCommand(Config.CMD_START_SERVER, this); // block call
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

    private void installApk() {
        File apk = new File("apk/SmartToolsApk.apk");
        
        try {
            System.out.println(apk.getAbsolutePath());
            mCurDevice.installPackage(apk.getAbsolutePath(), false, new String[]{});
        } catch (InstallException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestBack(Object o) {
        mDeviceInfo = (IDeviceInfo) o;
        System.out.println("DeviceConnectWorker: app onRequestBack!");
        
        synchronized (mLock) {
            mLock.notify();
        }
    }
}




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