2013-06-29 60 views
1

我使用ADB將通過USB連接的文件從我的Java應用程序推送到平板電腦。我希望能夠通過ADB檢測設備是否連接。我使用的跨越推動文件的代碼是:如何判斷亞行是否檢測到Android設備?

public void wiredsync(){ 
     try { 
      abdsourcesync = buildpath; 
      adbtabletsync = "/mnt/sdcard/test"; 
      System.out.println("Starting Sync via adb with command " + "adb" + " push "+ buildpath + " " + adbtabletsync); 
        Process process = Runtime.getRuntime().exec("adb" + " push "+ buildpath + " " + adbtabletsync); 
        InputStreamReader reader = new InputStreamReader(process.getInputStream()); 
        Scanner scanner = new Scanner(reader); 
        scanner.close(); 
       } catch(IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
    }//end wiredsync 

如何修改這個代碼工作了,如果平板電腦連接或沒有?

感謝您的幫助。

安迪

+0

正在檢查'adb devices'的輸出不適合你嗎? –

+0

我不確定這將如何返回我以Java語言表達的內容? adb設備會返回到java?我將它看作2個問題,沒有連接設備或連接2個設備(因爲我認爲ADB一次只能推送到一個設備) – andy

回答

6

通過使用ddmlib.jar,這也被Eclipse插件,您可以監視設備連接/斷開事件。 ddmlib通常位於Android SDK的tools/lib目錄中。但是沒有關於如何使用它的官方文件。以下是代碼示例。您必須包含ddmlib.jar並根據您的環境更改adb位置。

import java.io.IOException; 

import com.android.ddmlib.AndroidDebugBridge; 
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener; 
import com.android.ddmlib.IDevice; 

public class Main { 

    public static void main(String[] args) throws IOException { 
     AndroidDebugBridge.init(false); 

     AndroidDebugBridge debugBridge = AndroidDebugBridge.createBridge("D:\\android-sdk\\platform-tools\\adb.exe", true); 
     if (debugBridge == null) { 
      System.err.println("Invalid ADB location."); 
      System.exit(1); 
     } 

     AndroidDebugBridge.addDeviceChangeListener(new IDeviceChangeListener() { 

      @Override 
      public void deviceChanged(IDevice device, int arg1) { 
       // not implement 
      } 

      @Override 
      public void deviceConnected(IDevice device) { 
       System.out.println(String.format("%s connected", device.getSerialNumber())); 
      } 

      @Override 
      public void deviceDisconnected(IDevice device) { 
       System.out.println(String.format("%s disconnected", device.getSerialNumber())); 

      } 

     }); 

     System.out.println("Press enter to exit."); 
     System.in.read(); 
    } 
} 
+0

非常感謝您的支持。我會在明天試試代碼! – andy

+0

非常感謝你。我只是添加了一個Int來跟蹤有多少設備連接在任何時間,如果檢測到多個Android設備(或者至少我還沒有工作過),ADB不會同步。 – andy

+0

如何使用這個庫調用和短信。 – 2015-02-09 14:10:13

相關問題