先获取一下/dev的列表, 然后得到插播事件后,
在获取一下当前的/dev列表,然后做一下比较
linux系统会自动识别USB接口为串口磁盘sda(通常为sda1,可通过fdisk -l命令查询),挂载就可用。 例:新建挂载目录mkdir /mnt/usb,挂载mount /dev/sda1 /mnt/usb,用完卸载挂起点unmount /dev/sda1 /mnt/usb。
这篇文章主要介绍了Android中查看USB连接的外接设备信息的代码实例,需要的朋友可以参考下
1,USB存储设备(如:U盘,移动硬盘):
//USB存储设备 插拔监听与 SD卡插拔监听一致。
代码如下:
private USBBroadCastReceiver
mBroadcastReceiver;
IntentFilter iFilter = new IntentFilter();
iFilteraddAction(IntentACTION_MEDIA_EJECT);
iFilteraddAction(IntentACTION_MEDIA_MOUNTED);
iFilteraddAction(IntentACTION_MEDIA_REMOVED);
iFilteraddAction(IntentACTION_MEDIA_UNMOUNTED);
iFilteraddDataScheme("file");
mBroadcastReceiver = new
USBBroadCastReceiver();
registerReceiver(mBroadcastReceiver,
iFilter);
private class USBBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
String action = intentgetAction();
if
(actionequals(IntentACTION_MEDIA_EJECT)) {
//USB设备移除,更新UI
} else if
(actionequals(IntentACTION_MEDIA_MOUNTED)) {
//USB设备挂载,更新UI
}
}
}
//获得挂载的USB设备的存储空间使用情况
public static String getUSBStorage(Context context){
// USB Storage
//storage/udisk为USB设备在Android设备上的挂载路径不同厂商的Android设备路径不同。
//这样写同样适合于SD卡挂载。
File path = new File("/storage/udisk");
StatFs stat = new StatFs(pathgetPath());
long blockSize =
statgetBlockSize();
long totalBlocks = statgetBlockCount();
long availableBlocks = statgetAvailableBlocks();
String usedSize =
FormatterformatFileSize(context, (totalBlocks-availableBlocks)
blockSize);
String availableSize = FormatterformatFileSize(context,
availableBlocks blockSize);
return usedSize + " / " +
availableSize;//空间:已使用/可用的
}
2,USB外接输入设备(如:键盘,鼠标,扫描q)
复制代码
代码如下:
try {
//获得外接USB输入设备的信息
Process p=RuntimegetRuntime()exec("cat
/proc/bus/input/devices");
BufferedReader in = new BufferedReader(new
InputStreamReader(pgetInputStream()));
String line = null;
while((line = inreadLine())!= null){
String deviceInfo =
linetrim();
//对获取的每行的设备信息进行过滤,获得自己想要的。
}
} catch (Exception e) {
// TODO: handle
exception
eprintStackTrace();
}
另:设备信息也可以通过 adb
shell 进入执行 cat /proc/bus/input/devices看到。
USB外接输入设备信息打印如下:
复制代码
代码如下:
I: Bus=0003 Vendor=11c0 Product=0030
Version=0110
N: Name="ACRUX USB Keyboard"
P:
Phys=usb-0000:00:040-13/input1
S:
Sysfs=/devices/pci0000:00/0000:00:040/usb1/1-1/1-13/1-13:11/input/input3
U:
Uniq=
H: Handlers=mouse1 event3
B: PROP=0
B: EV=17
B: KEY=70000 0 0
0 0 0 0 0 0
B: REL=103
B: MSC=10
I: Bus=0003 Vendor=11c0
Product=0030 Version=0110 这行信息会在Android设备与USB设备数据交互的是否使用到。
关于USB外接设备如何与Android设备数据数据交互的代码书写可以参考:
>
使用SystemIODriveInfo类,很容易检测可插拔(Removable)设备信息,其中包括USB设备(U盘)。
using SystemIO;// 获取所有可插拔设备信息
DriveInfo[] drives = DriveInfoGetDrives();
foreach (DriveInfo di in drives)
{
// 判断设备是否就绪
if (diIsReady && diDriveType == DriveTypeRemovable)
{
ConsoleWriteLine("{0}已就绪", diName);
}
}
利用c语言调用系统命令fdisk 然后使用grep匹配结果,并将结果反馈回c,利用c判断是否有U盘挂载,检测到有在使用c调用系统函数mount 挂载U盘到指定目录下 这个方法可以尝试一下
使用WMI中的Win32_PnPSignedDriver类
Win32_PnPSignedDriver的详细信息:>
只需要打开命令行窗口(Win+R,输入cmdexe回车),将以下命令粘贴进去,回车,即可看到U盘历史纪录。
在系统桌面同时按下快捷键win加R打开运行,然后在运行文本框中输入dxdiag命令,然后点击确定。
CMD命令全称为command,意思是命令提示符,用户们可以通过此程序来运行一些命令对电脑系统进行设置等,用户们能够使用管理员权限对电脑快速的设置使用等。
以上就是关于如何在Linux下得到硬盘及usb信息 分享全部的内容,包括:如何在Linux下得到硬盘及usb信息 分享、如何查看USB方式连接Android设备的外接设备信息、C#如何捕获USB设备(U盘等)插入与拔出电脑的消息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)