当前位置: 首页 > 知识库问答 >
问题:

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

巫坚白
2023-03-14
/sys/bus/usb/drivers/usb/bind or unbind

以同样的方式,我想为OTG做这件事。

共有1个答案

公羊涛
2023-03-14

如果您对设备有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/usb/usb/drivers/usb/usb/usb2。可能还有一些设备具有/sys/bus/usb/drivers/usb/usb3。因此,根据您希望应用程序运行的设备,您可能需要运行多个调用。

如果您希望在没有root访问权限的情况下执行此操作。我还在努力寻找解决办法!

 类似资料:
  • 问题内容: 如何以编程方式为特定类启用断言,而不是指定命令行参数“ -ea”? 问题答案: 这是对@bala好的答案的评论,但时间太长。 如果仅启用断言,则调用您的主类-您的主类将在启用断言之前加载,因此您可能需要一个不直接引用代码中其他内容的加载器。它可以设置断言,然后通过反射加载其余代码。 如果在加载类时未启用断言,则应立即将其“编译出”,这样您就无法打开和关闭它们。如果要切换它们,则根本不需

  • 我实际上是在编程一些东西,不让用户访问Android原生wifi连接页面,所以我在我的Android应用程序中编程。它扫描可用的无线网络,将其显示在列表视图中,然后单击要连接的网络。 事实上,除了我的连接功能之外,一切都很好,这使得我的应用程序崩溃,所以如果你有任何想法...下面是代码(这是用户输入网络通行证后调用的函数)和堆栈跟踪: 堆栈跟踪:

  • 问题内容: 如何在jdbc中检查oracle数据库的打开连接? 注意:不能用于此目的。 问题答案: 通常,连接池还将使用Connection.isClosed()方法来检查连接是否仍然有效。问题在于,并非所有的JDBC驱动程序都会正确处理此调用。因此,我假设有一些简单的检查语句,就像RealHowTo所说的那样。对于Oracle,他已经提到了“ SELECT 1 FROM Dual”,它对于Ora

  • 我正在尝试通过利用AWS的websocket api网关在我的网站上实现用户之间的消息传递。我看到的每个指南/文档都说要使用wscat测试到网关的连接。我现在可以连接到api网关并使用wscat在客户机之间发送消息,但我正努力通过ts代码使它以编程方式工作。 我想做的是在用户登录后对websocket api网关进行api调用,这样他们就可以在任何时候发送消息。我的后端使用无服务器,前端使用Ang

  • 我有一个充满自定义视图的应用程序。当我尝试以编程方式创建FAB时,它会抛出一个错误 原因:java.lang.IllegalArgumentException:您需要在设计库中使用theme.AppCompat主题(或后代)。

  • 使用故事板非常简单。您只需将操作拖到“退出”。但是我应该如何从我的代码中调用它呢?