我正在尝试将 USB 调谐卡连接到 android 设备(版本 19)。
目前我正在使用 UsbDeviceConnection.requestWait() 读取数据,然后是 16kb 的 UsbRequest.queue。一切正常。
如果调谐器没有输入,USB 将不会接收任何数据。在这种情况下, requestWait() 将永远阻塞。我尝试使用 UsbRequest.close 和 UsbRequest.cancel 但没有用。
我查看了链接“ http://code.google.com/p/android/issues/detail?id=39522 ”,它提到了同样的问题,但需要编写一个新的 JNI 接口。
我的要求是我应该能够摆脱等待并且不想尝试编写新的 JNI 接口(按照上面的帖子)。请建议。
我正在开发一个 Android 应用程序,它从一些自定义硬件传输串行数据。我正在使用 mik3y 的usb-serial-for-android库以 OTG 模式通过 USB 获取串行数据,经过一些调整后工作正常。
\n\n然而,对于通过 USB 接口的每笔交易,UsbRequestJNI都会记录一条init和close消息。这使得 LogCat 每秒被数千条日志消息淹没(注意时间戳):
02-17 09:30:21.590 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.590 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.594 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.594 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.598 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.598 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.602 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.602 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.606 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.606 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.610 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.610 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 init\n02-17 09:30:21.614 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 close\n02-17 09:30:21.614 2332-2349/com.dummydomain.app D/UsbRequestJNI\xef\xb9\x95 …Run Code Online (Sandbox Code Playgroud) 我正在努力如何从连接的USB麦克风捕获音频流.我曾尝试使用MediaCapturewith MediaRecorder.AudioSource.MIC作为源,但录音质量对我来说并不是很有用,你无法确定音频源是USB还是内置设备麦克风.我需要的是使用USB音频功能,但到目前为止我无法取得任何进展.
使用第三方库对我来说太过分了,因为我只需要从麦克风接收音频数据流,其余的处理工作已经完成并正常工作,只有音频源是问题.
生成一个连接的USB设备列表 UsbConstants.USB_CLASS_AUDIO
private static final String ACTION_USB_PERMISSION = PACKAGE_NAME + ".USB_PERMISSION";
private UsbManager mUsbManAndroid;
private Map<String, UsbDevice> mAndroidDeviceMap;
private PendingIntent mPermissionIntent;
private ArrayList<UsbDeviceListItem> getUSBDevicesList() {
// Enumerate USB devices
mAndroidDeviceMap = mUsbManAndroid.getDeviceList();
ArrayList<UsbDeviceListItem> usbDevicesList = new ArrayList<>();
for (String key : mAndroidDeviceMap.keySet()) {
UsbDevice device = mAndroidDeviceMap.get(key);
// Check the device class
if (device.getDeviceClass() == UsbConstants.USB_CLASS_AUDIO) {
usbDevicesList.add(usbDeviceToListItem(key, device));
} else if (device.getDeviceClass() == UsbConstants.USB_CLASS_PER_INTERFACE) {
UsbInterface interface;
for …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用android主机api进行USB存储。我对此有很多怀疑。
使用主机api可以实现所有功能。我想查看USB的内容,如果可能的话,请查看正常的文件操作。我没有找到关于此的任何文档帮助。
我可以使用UsbDeviceConnection类API声明ClaimInterface,但是我无法理解bulkTransfer的工作原理,因此,如果有人可以指导我或提供一些参考,我将自己尝试一下。
我也尝试阅读USB规范,我了解bulkTransfer如何在USB级别上工作,但无法关联使用bulkTransfer而不是File Descriptor使用UsbEndpoint进行android / java文件操作的方式。
提前致谢 !!
我正在开发一个使用 OTG USB 设备的应用程序。
我使用的设备是一个 USB 条形码扫描仪,它被 android 检测为键盘。
但是我检测到每次插入或拔出OTG设备时,都会通过调用Activity onCreate()方法重新启动App。
这给我带来了很多问题,因为我无法检测为什么调用 onCreate() 方法。
当 otg 设备插入/拔出时,是否有任何 Intent 或任何可以被触发和被捕获的东西?
提前致谢。
所以我有一个使用 startLockTask 命令固定到设备的应用程序,它有几个限制,因此用户无法逃离应用程序或更改设备的设置。
但是,用户应该能够通过 USB 将文件从设备传输到计算机,但是当设备连接到“新”PC 时,USB 权限对话框:由于 LockTask 模式,不会显示允许访问设备数据.
有没有办法在我的应用程序前面打开那个对话框?
在 Android 9 之前,我可以通过使用 root、系统化我的应用程序和使用下一个 USB 类来绕过 android usb 主机权限确认对话框/sf/answers/1076468291/ /sf/answers/1377729461/
但它不适用于最新的 Android 版本 - 9
它抛出 java.lang.NoSuchMethodError: No interface method grantDevicePermission(Landroid/hardware/usb/UsbDevice;I)V in class Landroid/hardware/usb/IUsbManager; or its super classes (declaration of 'android.hardware.usb.IUsbManager' appears in /system/framework/framework.jar)
fun setUsbPermissionRoot(device: UsbDevice) : Boolean {
if (BuildConfig.DEBUG) Log.i(TAG, "trying set permission")
try {
val pm = App.context.packageManager
val ai = pm.getApplicationInfo(App.context.packageName, 0)
ai?.let {
val b = ServiceManager.getService(Context.USB_SERVICE)
val service = IUsbManager.Stub.asInterface(b)
service.grantDevicePermission(device, it.uid)
try {
service.setDevicePackage(device, App.context.packageName, it.uid)
} catch (e: …Run Code Online (Sandbox Code Playgroud) 就在昨天,我的adb工作正常,我正在平稳地开发我的应用程序...今天我将我的xperia z3更新为棒棒糖(从索尼自动更新)......并且adb停止检测设备(在mac os yosemite上).
到目前为止我检查的内容:1)我安装了最新版本的android sdk 2)我尝试了adb kill-server和adb start-server 3)我在设备上启用了双重检查开发者模式4)我仔细检查了USB连接是在大容量存储模式下
什么都行不通!请帮忙.
我正在开发一个库存管理应用程序,并希望使用 kitkat 平板电脑作为最终用户设备。我使用 USB 条形码阅读器,效果很好。
我的问题是,一旦插入条形码读取器,它就会被识别为真正的键盘,并且我无法再访问虚拟键盘。这对我来说是一个大问题,因为我只使用条形码阅读器来读取条形码,并且需要旁边的软键盘......
但是当我使用棉花糖时,条形码阅读器和虚拟键盘就可以正常工作了。但奇巧和棒棒糖却不能正常工作。
有什么办法可以同时启用虚拟键盘和真实键盘吗?我真的需要这方面的帮助......
谢谢 !
Android 10我在&上使用 Futronic 指纹 USB 设备时遇到问题11。代码
intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)
Run Code Online (Sandbox Code Playgroud)
当我按权限对话框上的“确定”按钮时,总是返回 false。我有一台旧的 Android 5 设备,运行正常。
这是来自他们的 SDK 的代码(UsbDeviceDataExchangeImpl.java),作为 Android Studio 的模块包含在内
intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)
Run Code Online (Sandbox Code Playgroud)
Android 10外部11USB 设备是否有任何额外的权限设置?
谢谢。
android ×11
android-usb ×11
usb ×4
java ×2
usb-otg ×2
adb ×1
audio ×1
fingerprint ×1
kiosk-mode ×1
mtp ×1
root ×1
usbserial ×1