2013-06-29 2 views
1

USB를 통해 연결된 경우 Java 응용 프로그램에서 태블릿으로 파일을 푸시하기 위해 ADB를 사용하고 있습니다. 장치가 ADB에 의해 USB를 통해 연결되었는지 여부를 감지 할 수 있기를 원합니다. 내가에서 파일을 밀어 사용하고있는 코드는 다음과 같습니다ADB가 안드로이드 장치를 감지했는지 확인하는 방법은 무엇입니까?

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 
나는 타블렛이 연결되어 있거나되어 있지 않은 경우 해결이 코드를 수정하는 방법

?

도움 주셔서 감사합니다. 또한 Eclipse 플러그인에 의해 사용되는 ddmlib.jar를 사용하여

앤디

+0

'adb devices'의 출력을 확인하고 있습니까? –

+0

자바 용어로 내가 어떻게 돌아 왔는지 확실하지 않았습니다. 어떤 장치가 java로 돌아갈 것입니까? 2 가지 이슈, 연결된 장치 또는 2 개의 장치가 연결된 것으로 봅니다. (ADB 만 한 번에 하나의 장치로 푸시 할 것입니다) – andy

답변

6

, 당신은 장치/분리 이벤트를 연결 모니터링 할 수 있습니다. 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를 추가하여 언제든지 얼마나 많은 장치가 연결되어 있는지 추적합니다. 하나 이상의 안드로이드 장치가 감지되면 ADB는 동기화되지 않습니다 (또는 적어도 아직 해결하지 못했습니다). – andy

+0

이 lib를 사용하여 전화를 걸고 SMS를 보내는 방법. –

관련 문제