Android平台中MCE USB裝置支援

來源:互聯網
上載者:User

    應用程式需要對MCE Usb裝置進行操作。首先使用UsbManager的getDeviceList介面擷取USB裝置列表時,引發PackageManager.PERMISSION_DENIED異常。 應用程式的確已經在AndroidManifest.xml中聲明了所需的許可權,所以從Framework層找問題的原因。

    首先看out目錄下/system/etc/permissions,發現缺少android.hardware.usb.host.xml。在device.mk中

PRODUCT_COPY_FILES += \        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml


    為節約時間不重新編譯了,將該檔案push到裝置中,發現異常依舊。查看其他裝置的許可權檔案,發現系統開放的裝置存取權限都被寫在了這個檔案中:system/etc/permissions/handheld_core_hardware.xml。照樣添加:

<feature name="android.hardware.usb.host" />


    這次再次開啟應用程式,已經不再報PackageManager.PERMISSION_DENIED的異常,但是usb裝置無法工作。應該是核心原因。開啟核心開關對MCE、LIRC的支援:

CONFIG_LIRC=yCONFIG_IR_LIRC_CODEC=yCONFIG_IR_MCEUSB=yCONFIG_LIRC_STAGING=y


    現在裝置已經可以被識別為一個mce裝置了,但是無法匹配獲得usb_device_id。看匹配演算法,發現mce裝置要通過查表擷取。kernel/drivers/media/rc/mceusb.c中mceusb_dev_table的匹配表沒有該裝置的廠商號。添加即可:

static struct usb_device_id mceusb_dev_table[] = {         ......        /* Formosa Industrial Computing / Beanbag Emulation Device */        { USB_DEVICE(VENDOR_FORMOSA, 0xe018) },       { USB_DEVICE(VENDOR_FORMOSA, 0xe042) },        /* Formosa21 / eHome Infrared Receiver */        { USB_DEVICE(VENDOR_FORMOSA, 0xe03a) },        /* Formosa Industrial Computing AIM IR605/A */        ... ...}

通過以上作業, mce相關裝置就已經添加好了,可以在apk中操作。

    


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.