Package com.suwish.pc.phone

Source Code of com.suwish.pc.phone.PhoneManager

package com.suwish.pc.phone;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.android.ddmlib.IDevice;
import com.suwish.pc.Setting;
import com.suwish.pc.adb.Adb;
import com.suwish.pc.adb.AdbManager;
import com.suwish.pc.adb.Command;
import com.suwish.pc.ddms.DdmsManager;
import com.suwish.pc.event.AdbEvent;
import com.suwish.pc.event.PhoneEvent;
import com.suwish.pc.event.PhoneListener;
import com.suwish.pc.ui.preference.PreferenceManager;
import com.suwish.pc.util.StringUtils;

/**
*
* <b>PhoneManager</b>顾名思义,就是对{@link Phone}的管理,{@link Phone}是对
* Android电话设备的抽象,向上提供用户界面使用,向下封装设备的连接和通信方式。
* 目前设计的通信方式有三种,ADB、USB-SOCKET、DDMS。</p>
*
* 三种通信方各有优缺点.
*
* @author Min
* @version 0.1 此版本基本消除<code>PhoneManager</code>的所有作用,而仅仅作为一个
* 系统的调用核心使用,并取消{@link Phone}设计之初的目的,本版本所有操作和事件完全依赖于
* DDMS完成。下一个版本将使用USB-SOCKET和ADB配合的方式,并将{@link IDevice}和ADB都纳入
* {@link Phone}对象管理。因此当前版本关于<code>Phone</code>的方法和操作都可视为无效和
* 不提倡的。鉴于此,所有的的操作都归入相应的Manager完成,<code>PhoneManager</code>仅仅
* 负责管理这些Manager和提供一些工具方法。
*/
public final class PhoneManager {

  private static PhoneManager manager = null;
 
  private AdbManager adbManager = null;
 
  private DdmsManager ddmsManager = null;
  private PreferenceManager perferenceManager = null;
 
  private List<Phone> phones = new ArrayList<Phone>();
  private List<PhoneListener> listeners = new ArrayList<PhoneListener>();
  /**
   *
   * 单例
   * @return
   */
  public static synchronized PhoneManager getInstance(){
    return manager == null ? (manager = new PhoneManager()) : manager;
  }
 
  public synchronized AdbManager getAdbManager(){
    return adbManager == null ? (adbManager = new AdbManager(this)) : adbManager;
  }
  public synchronized PreferenceManager getPerferenceManager(){
    return perferenceManager == null ? perferenceManager = new PreferenceManager() : perferenceManager;
  }
  public DdmsManager getDdmsManager(){
    return ddmsManager;
  }
 
  public void initEvt(){
   
  }
 
  private PhoneManager(){
    init();
  }
 
  private void init(){
    ddmsManager = new DdmsManager();
    ddmsManager.startDdmsAndWaitTimeOut();
  }
//  public Adb createAdb(){}
  /**
   *
   * @deprecated
   */
  void firePhoneConnect(PhoneEvent event){
    for(PhoneListener l : listeners){
//      if(!l.acceptEvent(event)) continue;
      l.phoneConnect(event);
    }
  }
  /**
   *
   * @deprecated
   *
   */
  void firePhoneDisconnect(PhoneEvent event){
    for(PhoneListener l : listeners){
//      if(!l.acceptEvent(event)) continue;
      l.phoneDisconnection(event);
    }
  }
  /**
   *
   * @param phone
   * @deprecated
   */
  public void closeConnect(Phone phone){
   
  }
  /**
   * 退出系统,在此将销毁一些系统资源。
   *
   */
  public void exitSystem(){
    ddmsManager.stopDdmsManager();
    Setting.saveConfiguration();
    System.exit(0);
  }
  /**
   *
   * @param serialNumber
   * @return
   * @throws IOException
   */
  public static Process callShell(String serialNumber) throws IOException{
    return AdbManager.execCommand(new Command(AdbManager.ADB_PATH, " -s " + serialNumber + " shell"));
  }
  public static String execCommand(String command) throws IOException{
    return AdbManager.queryResult(new Command(AdbManager.ADB_PATH, command), true);
   
  }
  /**
   *
   * @param serialNumber
   * @return
   * @deprecated
   */
  public Phone connectBySerialNumber(String serialNumber){
    return null;
  }
  /**
   *
   * @param adb
   * @return
   * @deprecated
   */
  public Phone getPhone(Adb adb){
    if(StringUtils.isEmpty(adb.getSeroalNo())) return null;
    for(Phone phone : phones){
      if(phone.getAdb().getSeroalNo().equals(adb.getSeroalNo())) return phone;
    }
    return null;
  }
  /**
   *
   * @param serialNumber
   * @return
   * @deprecated
   */
  public Phone getPhone(String serialNumber){
    if(StringUtils.isEmpty(serialNumber)) return null;
    for(Phone phone : phones){
      if(serialNumber.equals(phone.getSerialNumber())) return phone;
    }
    return null;
  }
  /**
   *
   * @param l
   * @deprecated
   */
  public void addConnectListener(PhoneListener l){
    if(listeners.contains(l)) return;
    listeners.add(l);
  }
  /**
   *
   * @param l
   * @return
   * @deprecated
   */
  public boolean removeConnectListener(PhoneListener l){
    return listeners.remove(l);
  }
}
TOP

Related Classes of com.suwish.pc.phone.PhoneManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.