我們想要 android app 以usb host mode 運作,只要添加幾項設定如下
編輯 AndroidManifest.xml 加入以下段落:
<activity ...>
...
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
會大約長成這樣:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter> <!--- 讓他重複吧,我試過跟上面寫成同一個會爆炸XD ,可以參考這邊:<a href="http://developer.android.com/guide/topics/manifest/action-element.html">http://developer.android.com/guide/topics/manifest/action-element.html</a> --->
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
</manifest>
res\xml\device_filter.xml 輸入以下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 0x2341 / Arduino -->
<usb-device vendor-id="9025" />
</resources>
vendor-id 可以從這邊找: https://usb-ids.gowdy.us/usb.ids
2341 Arduino SA
0001 Uno (CDC ACM)
0010 Mega 2560 (CDC ACM)
003b Serial Adapter (CDC ACM)
003f Mega ADK (CDC ACM)
0042 Mega 2560 R3 (CDC ACM)
0043 Uno R3 (CDC ACM)
0044 Mega ADK R3 (CDC ACM)
0045 Serial R3 (CDC ACM)
8036 Leonardo (CDC ACM, HID)
如上述設定 AndroidManifest.xml 跟 res\xml\device_filter.xml 把 app 重新打包編譯後,丟到測試 device 中。之後只要每當 arduino 透過 OTG 連接 android 後,會立即跳出提示你開啟剛剛打包的那個 app 。是不是很簡單呢?
我們明天見 !
請問一下res\xml 這是自己再創的資料夾嗎?
如果沒有這個資料夾,是的請在專案目錄建一個,他是利用 config 去找相依路徑內的檔案的。
當年 這個 sample 建制的專案請參考我的 repo:jyyan/usb-serial-for-android
使用現在最新的 android SDK ,請參考目前最新版本的 repo: mik3y/usb-serial-for-android