iT邦幫忙

DAY 18
0

x86 android 設備與外部硬體溝通研究系列 第 18

x86 android 設備與外部硬體溝通研究 - Android USB -1 (18/30)

  • 分享至 

  • xImage
  •  

我們想要 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 。是不是很簡單呢?

我們明天見 !


上一篇
x86 android 設備與外部硬體溝通研究 - USB 概要 (17/30)
下一篇
x86 android 設備與外部硬體溝通研究 - Android USB -2 (19/30)
系列文
x86 android 設備與外部硬體溝通研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
EddieWang
iT邦新手 5 級 ‧ 2019-12-12 10:08:36

請問一下res\xml 這是自己再創的資料夾嗎?

阿原 iT邦新手 5 級 ‧ 2019-12-13 02:48:31 檢舉

如果沒有這個資料夾,是的請在專案目錄建一個,他是利用 config 去找相依路徑內的檔案的。

當年 這個 sample 建制的專案請參考我的 repo:jyyan/usb-serial-for-android

使用現在最新的 android SDK ,請參考目前最新版本的 repo: mik3y/usb-serial-for-android

我要留言

立即登入留言