如何检测USB设备的Andr​​oid [英] How to detect USB device in Android

查看:140
本文介绍了如何检测USB设备的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有USB主机的Andr​​oid设备为我需要连接USB设备。检测到USB设备主机I以下code写的。

I have USB host android device for that I need to connect USB device. to detect usb device to host I written following code.

public class ReadData extends Activity {

    UsbManager usbManager;
    PendingIntent mPermissionIntent;
    UsbDevice usbDevice;
    Intent intent;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read_data);

        usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);


        final String ACTION_USB_PERMISSION =
                "com.example.udevice.USB_PERMISSION";        

        IntentFilter filter = new                    IntentFilter("android.hardware.usb.action.USB_ACCESSORY_ATTACHED");
        registerReceiver(mUsbReceiver, filter);
    }


    private static final String ACTION_USB_PERMISSION =
            "com.example.udevice.USB_PERMISSION";
        private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

            public void onReceive(Context context, Intent intent) {



                String action = intent.getAction();
                if (ACTION_USB_PERMISSION.equals(action)) {
                    synchronized (this) {

                         usbDevice = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                         usbManager.requestPermission(usbDevice, mPermissionIntent);

                        if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                            if(usbDevice != null){
                              //call method to set up device communication


                               int deviceId = usbDevice.getDeviceId();
                               int productId = usbDevice.getProductId();              


                               Log.i("device id", "****"+deviceId);
                               Log.i("product id", "****"+productId);

                           }else{
                               Log.i("device id", "No USB device");
                           }

                        } 
                        else {
                            Log.d("shiv", "permission denied for device ");
                        }
                    }
                }
            }
        };

和清单是象下面这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.udevice"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-feature android:name="android.hardware.usb.host" />
    <uses-sdk
        android:minSdkVersion="12"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".ReadData"
            android:label="@string/title_activity_heat_con" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>
            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />
        </activity>
    </application>

</manifest>

device_filter.xml

device_filter.xml

 <resources>
        <usb-device vendor-id="67b" 
            product-id="2303"/>
    </resources>

在上面的XML文件中我添加的设备属性。我期待,每当USB设备连接到主机设备的广播意图。但它没有发生。有什么不对上述code。

in above xml file I added device attributes. I am expecting a broadcast intent whenever USB device connected to host device. but it is not happening. What is wrong with above code.

谢谢 希夫

推荐答案

我想你需要添加:

<intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>

据这里描述

这篇关于如何检测USB设备的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆