美文网首页Android Framework
Android USB开发系列一

Android USB开发系列一

作者: CrazyYong | 来源:发表于2017-05-12 14:31 被阅读1942次

一、先大致了解下Android里关于USB的API,下图很清晰的表示了Android里面USB的树状(图随便画的表介意)

Paste_Image.png

另外还有一个常量<code>UsbConstant</code>定义了跟Linux内核中linux/usb/ch9.h文件定义对应的USB常量

二、获取USB设备步骤

①类似树状图,首先你需要获取UsbManager<code>UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);</code>
②注册广播,当USB插入或者拔出的时候会有广播通知,还要开启一个
<code>ACTION_USB_PERMISSION</code>的PendingIntent意图:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
        IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
        filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
        filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
        registerReceiver(mUsbReceiver, filter);

广播:

 private final BroadcastReceiver mUsbReceiver = new    BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.e( "action", action);
             if (ACTION_USB_PERMISSION.equals(action)) {
                Toast.makeText(MainActivity.this,"获取到权    限",Toast.LENGTH_SHORT).show();
            }else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
                askforpermission();
            } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
            }
        } };

③一般情况下我们会对设备进行过滤,只会获取自己想要的设备,获取的方式可以通过过滤UsbDevice实现,主要是通过设备的VendorId以及ProductId进行识别,之后对对应的设备进行权限的申请:

 HashMap<String, UsbDevice> map = usbManager.getDeviceList();
            Log.i("usb", "devicesize:"+String.valueOf(map.size()));

            for(UsbDevice device : map.values()){
                Log.e("device", "vid:"+device.getVendorId()+"   pid:"+device.getProductId()+"   "+device.getDeviceName());
                if(30021 == device.getVendorId() && 1183 == device.getProductId()){
                    usbDevice = device;
                }
            }
            if (usbDevice!=null) {

                if(usbManager.hasPermission(usbDevice))
                {
                    Toast.makeText(MainActivity.this,"已经获取到权限",Toast.LENGTH_SHORT).show();
                }else{
                    usbManager.requestPermission(usbDevice, pendingIntent);
                }
            }
        } catch (Exception e) {
        }
    }

相关文章

  • Android USB开发系列一

    一、先大致了解下Android里关于USB的API,下图很清晰的表示了Android里面USB的树状(图随便画的表...

  • Android USB开发(一)

    关于USB (Universal Serial Bus)的更多信息可以到Wikipedia学习,或者查看USB I...

  • Android 5.1.1 系统的 USB HOST 遇到开发B

    Android 5.1.1 系统的 USB HOST 遇到开发BUG 当通过USBHuB插入多个USB设备时,只能...

  • [Android]USB开发

    声明:主要参照文档:Android开发之USB数据通信安卓USB通信之权限管理 第一:请求权限和请求权限回调(通过...

  • Android USB 开发

    Android通过两种模式支持各种USB设备: USB accessory 和USB host。(Android ...

  • ubuntu操作系统真机调试android问题

    已经设置了打开usb调试,并且允许了usb安装以后。 使用ubuntu开发android时候遇到报错。 user ...

  • Android USB转串口通信

    一、引用 1、Git上最火的USB转串口通信2、Android之USB转串口通信3、安卓开发中的USB转串口通讯 ...

  • 不用USB数据线进行Android开发调试

    不管是过去Eclipse还是现在的Android Studio开发Android,运行或者调试时都会利用USB数据...

  • adb

    安装brew cask install android-platform-tools 开发者模式+usb调试模式 ...

  • 2019-02-18

    Android studio 连接小米手机真机失败的方法 第一步 开启开发者选项,打开usb调试,打开usb安装,...

网友评论

    本文标题:Android USB开发系列一

    本文链接:https://www.haomeiwen.com/subject/rixatxtx.html