±¾²å¼þ¿ÉÒÔʹÓð²×¿ÔÉú¿ª·¢µ÷ÓÃ,¾ßÌå·½·¨ÈçÏÂ
1.ÏÂÔØapk²å¼þ
2.·Åµ½ÏîÄ¿assetÎļþ¼ÐÏÂ

3.AndroidManifest.xmlÎļþÖÐÌí¼ÓȨÏÞ
<uses-permission android:name="android.permission.INTERNET" ></uses>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" ></uses>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" ></uses>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses>
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" ></uses>
<!-- ÉùÃ÷ȨÏÞ -->
<uses-permission android:name="android.permission.BIND_WALLPAPER" ></uses>
<uses-feature android:name="android.hardware.usb.accessory" ></uses>
<uses-permission android:name="android.permission.USB_PERMISSION" ></uses> <!-- Ìí¼ÓUSBȨÏÞ -->
<uses-feature android:name="android.hardware.usb.host" ></uses>
<!-- Request legacy Bluetooth permissions on older devices. -->
<uses-permission android:name="android.permission.BLUETOOTH" ></uses>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" ></uses>
<!-- Needed only if your app looks for Bluetooth devices.
You must add an attribute to this permission, or declare the
ACCESS_FINE_LOCATION permission, depending on the results when you
check location usage in your app. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" ></uses>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" ></uses>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" ></uses>
<!-- Needed only if your app makes the device discoverable to Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" ></uses>
<!-- Needed only if your app communicates with already-paired Bluetooth
devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" ></uses>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" ></uses>
¾ßÌå˵Ã÷ÈçÏ£º
1. <uses-permission android:name="android.permission.INTERNET" ></uses>£ºÉùÃ÷Ó¦ÓÃÐèÒª·ÃÎÊ»¥ÁªÍøµÄȨÏÞ¡£
2. <uses-permission android:name="android.permission.FOREGROUND_SERVICE" ></uses>£ºÔÊÐíÓ¦ÓÃÔÚǰ̨ÔËÐзþÎñ¡£
3. <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" ></uses>£ºÇëÇóºöÂÔµç³ØÓÅ»¯µÄȨÏÞ£¬ÒÔ±ãÓ¦ÓÃÔÚºǫ́ÔËÐÐʱ²»»á±»ÏµÍ³µç³ØÓÅ»¯¹¦ÄÜËùÏÞÖÆ¡£
4. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses>£ºÔÊÐíÓ¦ÓÃÔÚÆäËûÓ¦ÓõĴ°¿ÚÖ®ÉÏÏÔʾϵͳ¼¶µÄ´°¿Ú¡£
5. <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" ></uses>£ºÔÊÐíÓ¦ÓÃʹÓÃÄÚ²¿ÏµÍ³´°¿Ú£¬Í¨³£ÓÃÓÚ´´½¨ÏµÍ³¼¶±ðµÄUI×é¼þ£¬µ«ÐèҪעÒâµÄÊÇ£¬´ËȨÏÞ²¢²»Êǹٷ½¹«¿ªµÄȨÏÞ£¬ÆÕͨӦÓò»½¨ÒéʹÓã¬ÐèÈ·±£ÆäºÏ·¨ÐÔ¡£
6. <uses-permission android:name="android.permission.BIND_WALLPAPER" ></uses>£ºÔÊÐíÓ¦Óðó¶¨Îª±ÚÖ½·þÎñ¡£
7. <uses-feature android:name="android.hardware.usb.accessory" ></uses>£ºÉùÃ÷Ó¦ÓÃÐèÒª·ÃÎÊUSBÅä¼þµÄ¹¦ÄÜ¡£
8. <uses-permission android:name="android.permission.USB_PERMISSION" ></uses>£ºÇëÇóUSBÉ豸µÄȨÏÞ¡£
9. <uses-feature android:name="android.hardware.usb.host" ></uses>£ºÉùÃ÷Ó¦ÓÃÐèÒª×÷ΪUSBÖ÷»úµÄ¹¦ÄÜ£¬¿ÉÒÔÁ¬½Ó²¢¿ØÖÆÍâ½ÓUSBÉ豸¡£
10.<uses-permission android:name="android.permission.BLUETOOTH" ></uses>£ºÔÊÐíÓ¦ÓýøÐлù±¾µÄÀ¶ÑÀ²Ù×÷¡£
11.<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" ></uses>£ºÔÊÐíÓ¦ÓÃÅäÖÃÀ¶ÑÀÉèÖú͹ÜÀíÀ¶ÑÀÉ豸¡£
12.<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" ></uses>£ºÔÊÐíÓ¦ÓÃÁ¬½Óµ½À¶ÑÀÉ豸¡£
13.<uses-permission android:name="android.permission.BLUETOOTH_SCAN" ></uses>£ºÔÊÐíÓ¦ÓÃɨÃèÖÜΧµÄÀ¶ÑÀÉ豸¡£
14.<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" ></uses>£ºÔÊÐíÓ¦ÓÃʹÉ豸¿É±»ÆäËûÀ¶ÑÀÉ豸·¢ÏÖ¡£
15.<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses>£ºÔÊÐíÓ¦Ó÷ÃÎÊ´óÖÂλÖÃÐÅÏ¢£¬ÓÃÓÚ·¢ÏÖÀ¶ÑÀÉ豸¡£
16.<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses>£ºÔÊÐíÓ¦Ó÷ÃÎʾ«È·Î»ÖÃÐÅÏ¢£¬Í¬ÑùÓÃÓÚ·¢ÏÖÀ¶ÑÀÉ豸¡£
4.°ÑÕâ¸öxmlÎļþÌí¼Óµ½xmlÎļþ¼ÐÖÐaccessory_filter.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-accessory manufacturer="aiwork" model="hid" version="2.0" />
</resources>

5.ÔÚAndroidManifest.xml ÖÐ mainActivityÖÐÌí¼ÓÒÔÏ´úÂë
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter" />
</activity> <!-- ×¢²áUSBÉ豸Á¬½ÓºÍ¶Ï¿ªµÄ¹ã²¥½ÓÊÕÆ÷ -->
¾ßÌå˵Ã÷ÈçÏ£º
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter" />
</activity>
1. <activity android:name=".MainActivity" android:exported="true">: ÉùÃ÷Ò»¸öÃûΪMainActivityµÄ»î¶¯£¨Activity£©£¬android:name=".MainActivity"Ö¸¶¨Á˻µÄÀàÃû£¬.MainActivity±íʾ¸Ã»î¶¯Î»ÓÚÓ¦Óõĸù°üÖС£android:exported="true"±íʾ¸Ã»î¶¯¿ÉÒÔ±»ÆäËûÓ¦ÓÃÆô¶¯¡£
2. <intent-filter>: ÓÃÓÚ¶¨Òå¸Ã»î¶¯¿ÉÒÔÏìÓ¦µÄIntent¡£Ã¿¸ö<intent-filter>¿ÉÒÔ°üº¬<action>¡¢<category>ºÍ<data>µÈ×ÓÔªËØ£¬ÓÃÒÔÖ¸¶¨»î¶¯Äܹ»´¦ÀíµÄIntentÀàÐÍ¡£
o µÚÒ»¸ö<intent-filter>:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Õâ¸öintent-filter¶¨ÒåÁ˸û×÷ΪӦÓõÄÈë¿Úµã¡£<action android:name="android.intent.action.MAIN" />±íʾ¸Ã»î¶¯ÊÇÓ¦ÓõÄÖ÷Òª»î¶¯¡£<category android:name="android.intent.category.LAUNCHER" />±íʾ¸Ã»î¶¯¿ÉÒÔÔÚÓ¦ÓÃÆô¶¯Æ÷ÖÐÆô¶¯£¬¼´Ëü»á³öÏÖÔÚÓ¦ÓõĿì½Ý·½Ê½»òͼ±êÉÏ£¬ÈÃÓû§¿ÉÒÔµã»÷Æô¶¯Ó¦Óá£
o µÚ¶þ¸ö<intent-filter>:
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
Õâ¸öintent-filter¶¨ÒåÁ˸û¿ÉÒÔÏìÓ¦USBÅä¼þÁ¬½ÓµÄIntent¡£<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />±íʾ¸Ã»î¶¯»áÔÚUSBÅä¼þÁ¬½Óµ½É豸ʱ±»´¥·¢¡£
3. <meta-data>: ÓÃÓÚΪ¸Ã»î¶¯Ìṩ¶îÍâµÄÐÅÏ¢¡£ÔÚÕâ¸öÀý×ÓÖУ¬<meta-data>ÓÃÓÚÖ¸¶¨USBÅä¼þµÄ¹ýÂËÆ÷ÅäÖÃÎļþ¡£
o <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/accessory_filter" />: Õâ¸ömeta-data±êǩָ¶¨Á˵±USBÅä¼þÁ¬½Óʱ£¬ÏµÍ³»á¸ù¾Ý@xml/accessory_filterÎļþÖеÄÅäÖÃÀ´¾ö¶¨ÊÇ·ñ½«¸ÃIntent·¢Ë͸øMainActivity¡£@xml/accessory_filterÊÇÒ»¸öXML×ÊÔ´Îļþ£¬¶¨ÒåÁËÓ¦ÓÿÉÒÔ¼æÈݵÄUSBÅä¼þµÄÊôÐÔ£¨ÈçÖÆÔìÉÌ¡¢²úÆ·IDµÈ£©£¬µ±É豸¼ì²âµ½·ûºÏÕâЩÊôÐÔµÄUSBÅä¼þÁ¬½Óʱ£¬»á½«USB_ACCESSORY_ATTACHEDµÄIntent·¢Ë͸øMainActivity¡£
×ܽ᣺Õâ¶Î´úÂëÉùÃ÷ÁËÒ»¸öÃûΪMainActivityµÄ»î¶¯£¬²¢½«ÆäÉèÖÃΪӦÓõÄÈë¿Úµã£¬Ê¹Æä¿ÉÒÔÔÚÉ豸µÄÆô¶¯Æ÷ÖÐÏÔʾ¡£´ËÍ⣬Ëü»¹ÉùÃ÷ÁËMainActivity¿ÉÒÔÏìÓ¦USBÅä¼þÁ¬½ÓµÄʼþ£¬²¢Í¨¹ýmeta-data±êǩָ¶¨ÁËÒ»¸öXMLÅäÖÃÎļþ£¬ÓÃÓÚ¶¨ÒåÓ¦ÓÿÉÒÔ¼æÈݵÄUSBÅä¼þµÄ¾ßÌåÊôÐÔ¡£