抑制UsbRequestJNI / ALOGD日志消息

时间:2015-02-17 10:05:52

标签: java android usbserial android-usb

我正在开发一款Android应用,它可以从一些自定义硬件中传输串行数据。我使用mik3y的usb-serial-for-android库在OTG模式下通过USB获取串行数据,经过一些调整后工作正常。

但是,对于USB接口上的每个事务,UsbRequestJNI都会记录initclose消息。这会使LogCat每秒淹没数千条日志消息(请注意时间戳):

02-17 09:30:21.590    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.590    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.594    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.594    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.598    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.598    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.602    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.602    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.606    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.606    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.610    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.610    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.614    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.614    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init

我知道我可以在IDE中过滤掉这些内容,但我想阻止它们,以免他们在调试器带宽中咀嚼。

根据我的收集,UsbRequestJNI是操作系统提供的JNI库,因此我无法编辑源代码。那么我如何告诉它在仍然运行调试版本时停止记录这些调试消息,以便我可以看到其他相关的调试信息?

谷歌搜索只生成this,这基本上是同样的问题,但没有适用于此处的解决方案。

(我的开发设备运行的是Android 4.3,我在Android Studio 1.0.1上开发)

更新:对于UsbRequest只需found the source,相关的行是ALOGD状态(第45和71行)。所以我想问题就变成了:我如何压制ALOGD消息?

更新2 :我已根据this answer尝试setprop log.tag.UsbRequestJNI SUPPRESS,但令人沮丧的是它对我的设备没有影响。

2 个答案:

答案 0 :(得分:2)

用mik3y的usb-serial-for-android软件包自己点击这个。我能够通过禁用异步读取来解决它。改变这一行:

mEnableAsyncReads = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1);

阅读:

mEnableAsyncReads = false;

此时有一些针对mik3y代码的打开请求,也许这些已经在一个分叉中修复了?见https://github.com/mik3y/usb-serial-for-android/network

答案 1 :(得分:0)

对于后代来说,这些消息似乎来自UsbRequest的initialize()和close()方法,因此,通过重用UsbRequest对象而不是创建新对象,大多数情况下都可以解决此问题,并且还可能会稍微提高性能。