外部硬件信息

5

有没有可能检查计算机连接的外部硬件是什么?

获取每个硬件的状态是否在线或离线。


需要更多上下文信息。外部硬件指的是什么?通过什么连接?连接到什么设备——电脑还是安卓设备,正如标签所示? - Seva Alekseyev
@SevaAlekseyev 通过USB端口和串行端口连接到计算机的外部硬件 - Bucks
android-ndk 标签与您的问题有什么关系? - Alex Cohn
@AlexCohn 是的...这是可能的吗? - Bucks
请重新表述您的问题,使其更加明确,包括有关“打印机和读卡器”的新信息。今天很难理解您是否将Android设备作为外部硬件连接到计算机的示例之一,还是想了解连接到Android设备的外围设备是什么。请注意,我添加了android和usb-otg标签以改善您的问题曝光率。我认为答案可能来自于Android的Java系统API,与android-ndk无关。 - Alex Cohn
显示剩余4条评论
3个回答

2
你可能需要借助Linux内核来获取已连接到设备的设备列表,因此我认为只需执行一个简单的命令即可。
命令如下:
Process process = Runtime.getRuntime().exec("cat /proc/devices");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

或者您可以使用 udevinfo。我不太了解它的详细信息,但谷歌可以帮助您。


它仅显示系统中存在的硬件组件。 - Bucks

2

如果您使用的是蜂巢或更高版本,请使用USB管理器服务

    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
    HashMap<String, UsbDevice> devices = manager.getDeviceList();

0

要做到这一点,您需要使用Runtime.exec()运行外部程序。

有很多关于如何在Windows和Unix上实现此操作的示例,但是对于Android,我认为需要另一个命令。


我知道通过使用javax.usb,我们可以获取设备列表,但我没有找到任何获取硬件列表的示例。如果您知道相关信息,请告诉我。 - Bucks
javax.usb的网站来看,最好在Linux上运行(仅限Linux)。 - Peter Lawrey
不使用 Runtime.exec() 方法,如何获取已连接的硬件列表? - Bucks
1
据我所知,您可以获得的唯一硬件是NetworkInterfaces和显示器的特性(如大小和颜色深度)。Java旨在保持系统中立,并将平台特定操作留给外部程序。 - Peter Lawrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接