我正在开发一款Android应用程序,我希望与通过USB连接的设备进行通信。该设备始终提供数据。使用android linux shell上的programm可以看到这些数据。
我的目标是在我的应用中查看这些数据,之后通过服务将这些数据传递给其他应用。
所以我的问题是:我可以“打开”从我的Android应用程序到USB端口的连接,以便我继续接收我的应用程序中的数据,这些数据是由USB设备发送的吗?如果是,代码将如何?
*编辑
感谢您的回答,应用程序本身不再在命令行上运行。所以它不再是可执行文件,而是由我的Android应用程序加载的共享库。 它之前做过,但我希望能够在我的应用程序中使用NDK方法启动连接,以便能够在我的应用程序本身中查看数据。所以我试着看看连接是否已经打开。
我已经为我的代码添加了一些功能,所以我可以看看usb-connection是否已打开并且我拥有该usb设备的权限。
UsbManager.hasPermission(device)
返回true,因为我正在使用itent过滤器。
UsbManager.openDevice(device)
返回一个UsbDeviceConnection,所以我似乎有权使用该设备。
到目前为止,我无法通过usb-device接收到总线连接,当然还要获取该设备的数据输入。
由于我的本机代码已经有一段时间(真实) - 方法,当实际数据通过我的usb-device发送时,我只想使用回调将数据发送到我的应用程序,我想在我的c代码中完成工作。
我的应用程序应该做的唯一工作是打开总线连接一次,然后准备从c代码回调。
这可能吗?
答案 0 :(得分:0)
如果您有在命令行上运行的应用程序,您实际上可以在应用程序中运行命令行。有关详细信息,请查看Process课程和ProcessBuilder文档。给出的例子如下
运行/ system / bin / ping ping android.com:
Process process = new ProcessBuilder()
.command("/system/bin/ping", "android.com")
.redirectErrorStream(true)
.start();
try {
InputStream in = process.getInputStream();
OutputStream out = process.getOutputStream();
readStream(in);
finally {
process.destroy();
}
}