Android:如何以编程方式连接/断开OTG

Android:如何以编程方式连接/断开OTG,android,linux-kernel,usb,usb-otg,Android,Linux Kernel,Usb,Usb Otg,我想在android设备中以编程方式连接和断开USB OTG(笔驱动器、硬盘驱动器等) 对于USB,我使用以下路径在连接到PC时绑定/解除绑定USB /sys/bus/usb/drivers/usb/bind or unbind 同样,我想为OTG做这件事。如果你在设备上有root访问权限,你可以使用我找到的一些方法。在应用程序中,您需要调用以下内容: String[] commandConfigValue0 = { "su", "-c", "echo 0 > /sys/bus/usb/

我想在android设备中以编程方式连接和断开USB OTG(笔驱动器、硬盘驱动器等)

对于USB,我使用以下路径在连接到PC时绑定/解除绑定USB

/sys/bus/usb/drivers/usb/bind or unbind

同样,我想为OTG做这件事。

如果你在设备上有root访问权限,你可以使用我找到的一些方法。在应用程序中,您需要调用以下内容:

String[] commandConfigValue0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };
String[] commandConfigValue0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };   
String[] commandConfigValue1 = { "su", "-c", "echo 1 > /sys/bus/usb/drivers/usb/usb1/bConfigurationValue", };
String[] commandAuthorized0 = { "su", "-c", "echo 0 > /sys/bus/usb/drivers/usb/usb1/authorized", };
String[] commandAuthorized1 = { "su", "-c", "echo 1 > /sys/bus/usb/drivers/usb/usb1/authorized", };
Process p;
    try {
        p = Runtime.getRuntime().exec(commandAuthorized0);
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        Log.d("MainActivity", "From unbind: " + in.toString());

        // I don't think "rebinding" works here but if you listen for the usb disconnect you can then call this second runtime command to bind the internal usbhub
        Thread.sleep(3000);

        p = Runtime.getRuntime().exec(commandAuthorized1);
        in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        Log.d("MainActivity", "From bind: " + in.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
我已经研究了一些我拥有的没有根目录的新设备,它们也有/sys/bus/usb/drivers/usb/usb2,可能有带有/sys/bus/usb/drivers/usb/usb3的设备。因此,根据您希望应用程序在哪些设备上运行,您可能需要通过几个电话

如果您希望在没有根访问权限的情况下执行此操作。我仍在努力寻找解决方案


祝你好运

OTG通常由硬件支持。OTG意味着设备可以是从设备也可以是主设备。例如,图像通过USB连接两个平板电脑。