「javausb监听」监听Java

博主:adminadmin 2023-01-23 15:24:08 322

今天给各位分享javausb监听的知识,其中也会对监听Java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

androidusblistener能在service里吗

写了几年Android App,公司领导突然叫我在源码中修改USB连接后不能从PC端传数据到设备,这个之前没怎么接触过源码,咱也不知道,咱也不敢问呢,然后百度一搜,多倒是多,直接贴一大篇源码,得了吧,我能看懂那么多源码,我还搁这百度呢,好了开始我的小白学习之旅:

         首先要找到USB的连接,那肯定要找USB插拔的监听了,这个监听肯定要在系统启动的时候就要开始监听,好,第一步先到SystemServer看看呗(路径:\frameworks\base\services\java\com\android\server\SystemServer.java),果然在这里找到了,UsbService,就是这个东西,开启了服务来监听USB

        既然都找到了USB监听,那咱也不能视而不见,直接进UsbService(路径:\frameworks\base\services\usb\java\com\android\server\usb\UsbService.java)看看,我这里就不直接贴全部代码了,那么多代码贴出来也没啥用,我们直接找重点,找到了这个回调setCurrentFunction这个地方应该就是设置模式的地方了吧,因为我的功能是只能充电,不进行文件传输,所以我直接把模式改成了UsbManager.USB_FUNCTION_NONE,

function = UsbManager.USB_FUNCTION_NONE;

然后运行,哎,特么直接在PC端不显示盘符了,说明就是修改这里了,当然,如果需要其他默认模式也可以改,我这里是因为功能需要,直接暴力解决

 那么到这里,领导提出的功能就算解决了,不能进行文件传输,以为到这就结束了?我插上USB后,发现特么通知栏有USB的选择通知,点击还能弹出选择充电 和MTP的弹窗,fuck,虽然点击了不能修改模式(我直接暴力设置了只充电,所以点击其他没反应),但是作为一名优(low)秀(b)的程序员,一定要严谨,我们需要把通知栏的USB选择通知去掉,然后我跟着USBService的回调看,发现是调用了UsbDeviceManager的setCurrentFunctions方法,那就让我们走UsbDeviceManager(路径:\frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java)

        在UsbDeviceManager中的setCurrentFunctions方法中,我们看到显示判了空,然后handler发送了一个消息

 那么我们直接到处理消息的handleMessage看看呗

 咦,发现了什么,updateUsbNotification();方法,看名字,这应该就是更新USB通知栏,那我特么直接去掉,然后编译,果然,就是这个东西,通知栏已经没有了USB的通知,OJBK了,那我本次的任务的就完成了。

由于我刚接触系统层源码,可能还处于比较菜的地步,如果有错误的地方,麻烦大佬指点下,感谢感谢........

如何用java写一个程序,可以监听键盘口条码枪扫完的数据

1.计算机随便在干什么,说明你需要写一个java常驻的service,这个比较简单,可以参考

2.对于扫描枪一般会有一个com端口提供数据的,参考其提供的手册,进行com或者usb端口的监听即可

java如何实现usb口插拔事件的监测,最好有源代码

java 要访问 usb 设备,通常要自己写c/c++代码,然后再用 java 访问这些组件,以达到控制usb设备的目的。但现在有一个开源组件 libusb 帮我们做好了访问usb设备的封装(包括windows、linux等平台)。我们用 java 访问usb 设备时,可以通过访问 libusb 组件提供的接口即可。要了解这个组件的 java 部分的 Demo、API等,可以访问这里:

使用这个组件最重要的意义在于:

首先,你不再需要在 win、linux 等平台上写 c/c++ 等 native 组件,甚至,你不需要知道 jni 怎么写;

其次,使用这个组件,你可以访问所有的 usb 设备,当然,前提条件是你必须知道 usb 设备的相关指令(我当前就用这个组件,直接发usb能接受的命令,去控制我的指纹仪来工作)

最后,如果你的 usb 设备没有驱动程序,比如,你的 usb 设备是自己研制出来的,还没来得及为各种平台写驱动程序,你可以用这个组件提供驱动程序

从: 下载 libusb-win32-bin-1.2.2.0.zip

从 下载 ch.ntb.usb-0.5.9.jar 和 LibusbJava_dll_0.2.4.0.zip

安装 libusb-win32:

1)、解压 libusb-win32-bin-1.2.2.0.zip;

2)、把目录:\bin\x86 下的 libusb0_x86.dll 复制到 windows/system32 目录下,并改名为:libusb0.dll;

3)、把目录:\bin\x86 下的 libusb0.sys 复制到 windows/system32/drivers 目录下

4)、运行 install-filter-win.exe ,从中选择安装你要访问的 usb 设备

5)、运行 testlibusb-win.exe,有正确的提示信息。如下图:

注意:如果你运行第4)步时,出现无法安装libusb0服务、无法找到文件等错误,或者运行第5)步时,界面中“Driver version:”后面的版本号是,-1.-1 -1 ...这些情况,说明你的安装不正常。原因可能是因为你的usb设备是新安装的,且你没有重启计算机。你重启一下计算机,再进行上述步骤,应该就可以了。

把 LibusbJava.dll 复制到 windows/system32 目录下

这时,到达 ch.ntb.usb-0.5.9.jar 所在的目录,运行: java -jar ch.ntb.usb-0.5.9.jar,这样就会出来一个java swing做的窗口,如下图。

当右键点击倒数第二级的节点的时候,又会弹出新的窗口,在这个弹出窗口里,你可以直接发送一些16进制的代码给 usb 设备。但值得注意的是,这个窗口的代码写得有问题,其对16进制的代码转换为真正要发送的代码时,转换的是错误的代码。这个错误可以自己下载源码,更正即可。错误的类及方法是:

TestApp.java 中的方法:byte[] parseByteArray(String s);更正的代码可以参考如下代码:

Java代码

重新编译后,替换掉这个类,即可。

byte[] parseByteArray(String s) {

String[] hexs = s.split(" ");

byte[] bytes = new byte[hexs.length];

if(hexs.length 0){

int i = 0;

for(String hex : hexs){

String s1 = hex.substring(2);

bytes[i] = (byte)(Integer.parseInt(s1, 16));

i++;

}

}

return bytes;

}

java怎么检测USB的程序

检测一个JAVA程序的运行时间方法:

long startTime = System.currentTimeMillis();//获取当前时间

//doSomeThing(); //要运行的java程序

long endTime = System.currentTimeMillis();

System.out.println("程序运行时间:"+(endTime-startTime)+"ms");

JAVA程序如何加入监听器

1、如果你的是纯java的应用,那么可以通过给事件增加一个事件监听器的方式来加入相应的监听器

2、如果你写的是Web应用的java程序,那么你可以去通过去实现一个servlet的监听器接口来实现自己的监听器,在写完自己的监听器之后,你还要把监听器配置到你的web.xml文件中,这事在服务器加载你的web应用项目的时候,就会自动的加载该监听器从而进行相应的初始化操作了。

javausb监听的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于监听Java、javausb监听的信息别忘了在本站进行查找喔。