1

USB経由で接続されているときに、ADBを使用してJavaアプリケーションからタブレットにファイルをプッシュしています。デバイスが 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

タブレットが接続されているかどうかにかかわらず、このコードを修正するにはどうすればよいですか?

助けてくれてありがとう。

アンディ

4

1 に答える 1

6

Eclipse プラグインでも使用される ddmlib.jar を使用して、デバイスの接続/切断イベントを監視できます。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();
    }
}
于 2013-07-01T05:58:48.500 に答える