Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Yuuichi Akagawa
PDF, PPTX
8,583 views
AOA2.0を実装してみた
ADK勉強会(東京) BootCamp#2で発表した、AOA2.0実装のお話。ABC2012東北やABC2013Sで展示したもの。
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 38
2
/ 38
3
/ 38
4
/ 38
5
/ 38
6
/ 38
7
/ 38
8
/ 38
9
/ 38
10
/ 38
11
/ 38
12
/ 38
13
/ 38
14
/ 38
15
/ 38
16
/ 38
17
/ 38
18
/ 38
19
/ 38
20
/ 38
21
/ 38
22
/ 38
23
/ 38
24
/ 38
25
/ 38
26
/ 38
27
/ 38
28
/ 38
29
/ 38
30
/ 38
31
/ 38
32
/ 38
33
/ 38
34
/ 38
35
/ 38
36
/ 38
37
/ 38
38
/ 38
More Related Content
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
AndroidとSELinux
by
android sola
PDF
containerdの概要と最近の機能
by
Kohei Tokunaga
PDF
基礎から学ぶ組み込みAndroid
by
demuyan
PPTX
UEFIによるELFバイナリの起動
by
uchan_nos
PDF
20111015 勉強会 (PCIe / SR-IOV)
by
Kentaro Ebisawa
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PDF
Embedded Linux BSP Training (Intro)
by
RuggedBoardGroup
Glibc malloc internal
by
Motohiro KOSAKI
AndroidとSELinux
by
android sola
containerdの概要と最近の機能
by
Kohei Tokunaga
基礎から学ぶ組み込みAndroid
by
demuyan
UEFIによるELFバイナリの起動
by
uchan_nos
20111015 勉強会 (PCIe / SR-IOV)
by
Kentaro Ebisawa
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
Embedded Linux BSP Training (Intro)
by
RuggedBoardGroup
What's hot
PDF
Interrupt Affinityについて
by
Takuya ASADA
PDF
Usb接続するアプリを開発した時に試行錯誤した事
by
Masataka Kono
PDF
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
by
Naoki Nagazumi
PDF
05.2 virtio introduction
by
zenixls2
PDF
Android起動周りのノウハウ
by
chancelab
PDF
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
PDF
Uboot startup sequence
by
Houcheng Lin
PPTX
なぜなにリアルタイムレンダリング
by
Satoshi Kodaira
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
by
Masahito Zembutsu
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
PDF
I/O仮想化最前線〜ネットワークI/Oを中心に〜
by
Ryousei Takano
PDF
Launch the First Process in Linux System
by
Jian-Hong Pan
PDF
FPGAのトレンドをまとめてみた
by
Takefumi MIYOSHI
PPTX
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
PDF
systemd
by
nussbauml
PDF
Embedded Android : System Development - Part IV (Android System Services)
by
Emertxe Information Technologies Pvt Ltd
PDF
Linux device drivers
by
Emertxe Information Technologies Pvt Ltd
PDF
1075: .NETからCUDAを使うひとつの方法
by
NVIDIA Japan
PDF
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
by
CODE BLUE
PDF
Linux : PSCI
by
Mr. Vengineer
Interrupt Affinityについて
by
Takuya ASADA
Usb接続するアプリを開発した時に試行錯誤した事
by
Masataka Kono
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
by
Naoki Nagazumi
05.2 virtio introduction
by
zenixls2
Android起動周りのノウハウ
by
chancelab
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
Uboot startup sequence
by
Houcheng Lin
なぜなにリアルタイムレンダリング
by
Satoshi Kodaira
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
by
Masahito Zembutsu
プログラムを高速化する話Ⅱ 〜GPGPU編〜
by
京大 マイコンクラブ
I/O仮想化最前線〜ネットワークI/Oを中心に〜
by
Ryousei Takano
Launch the First Process in Linux System
by
Jian-Hong Pan
FPGAのトレンドをまとめてみた
by
Takefumi MIYOSHI
YoctoをつかったDistroの作り方とハマり方
by
wata2ki
systemd
by
nussbauml
Embedded Android : System Development - Part IV (Android System Services)
by
Emertxe Information Technologies Pvt Ltd
Linux device drivers
by
Emertxe Information Technologies Pvt Ltd
1075: .NETからCUDAを使うひとつの方法
by
NVIDIA Japan
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
by
CODE BLUE
Linux : PSCI
by
Mr. Vengineer
Viewers also liked
PPTX
GR-SAKURAのUSBホスト機能で遊ぼう
by
Yuuichi Akagawa
PDF
Adk2012
by
magoroku Yamamoto
PDF
Androidを利用した外部機器の制御
by
Takashi Kanamaru
ODP
Android usbの基本
by
Hiasyoshi Suehiro
PDF
第4回名古屋Android勉強会資料
by
magoroku Yamamoto
PDF
Android のusb support
by
magoroku Yamamoto
PDF
LoRaWANとiBeaconを素敵につなげてみた
by
kazuhiro harada
PDF
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
by
智治 長沢
PDF
これからのソフトウェア開発での プロジェクト管理の展望【リックソフトセミナー】
by
智治 長沢
PDF
Arduino、Raspberry Pi、PIC 入門以前(NSEG 2014-04-19)
by
hiro345
GR-SAKURAのUSBホスト機能で遊ぼう
by
Yuuichi Akagawa
Adk2012
by
magoroku Yamamoto
Androidを利用した外部機器の制御
by
Takashi Kanamaru
Android usbの基本
by
Hiasyoshi Suehiro
第4回名古屋Android勉強会資料
by
magoroku Yamamoto
Android のusb support
by
magoroku Yamamoto
LoRaWANとiBeaconを素敵につなげてみた
by
kazuhiro harada
【14-D-4】デベロッパー戦国時代!ストーリーをつなぐ開発環境と3つの秘訣
by
智治 長沢
これからのソフトウェア開発での プロジェクト管理の展望【リックソフトセミナー】
by
智治 長沢
Arduino、Raspberry Pi、PIC 入門以前(NSEG 2014-04-19)
by
hiro345
Similar to AOA2.0を実装してみた
PDF
Google I/O 2011 HowToADK
by
Masahiro Hidaka
KEY
Androidロボットサミットin京都
by
Kenichi Yoshida
PPTX
イチからはじめるADK北海道支部勉強会発表資料
by
Kenichi Yoshida
PDF
20121013 ADK bootcamp in Tokyo
by
Kenichi Ohwada
KEY
姫路IT系勉強会「ADB接続でかんたんフィジカルコンピューティング」
by
Kenichi Yoshida
PPTX
イチからはじめるUSB Host API
by
ksk sue
PDF
12.06.16 日本橋勉強会資料 公開用
by
Miwa Iwatsuki
KEY
Androidロボットサミットin愛媛
by
Kenichi Yoshida
KEY
Androidロボットサミットin名古屋
by
Kenichi Yoshida
PDF
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
by
Yasuhiro Ishii
PDF
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
by
Yasuhiro Ishii
KEY
プロペラブForth発表osc愛媛
by
titoi2
ODP
ふぃじかるこんぴゅ〜てぃんぐしてみた
by
Takao Sumitomo
PDF
Kopanitsa portfolio 2013_09
by
Takahiro Okada
PDF
Android端末と組み込み機器が連携する Android Make Days
by
Yasuhiro Ishii
PDF
Make @ Osaka
by
Shigeru Kobayashi
PDF
Adk study Boot Camp #2 Mogri
by
mogri_ss
ODP
ADKでロボット with NFC
by
Takao Sumitomo
Google I/O 2011 HowToADK
by
Masahiro Hidaka
Androidロボットサミットin京都
by
Kenichi Yoshida
イチからはじめるADK北海道支部勉強会発表資料
by
Kenichi Yoshida
20121013 ADK bootcamp in Tokyo
by
Kenichi Ohwada
姫路IT系勉強会「ADB接続でかんたんフィジカルコンピューティング」
by
Kenichi Yoshida
イチからはじめるUSB Host API
by
ksk sue
12.06.16 日本橋勉強会資料 公開用
by
Miwa Iwatsuki
Androidロボットサミットin愛媛
by
Kenichi Yoshida
Androidロボットサミットin名古屋
by
Kenichi Yoshida
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
by
Yasuhiro Ishii
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
by
Yasuhiro Ishii
プロペラブForth発表osc愛媛
by
titoi2
ふぃじかるこんぴゅ〜てぃんぐしてみた
by
Takao Sumitomo
Kopanitsa portfolio 2013_09
by
Takahiro Okada
Android端末と組み込み機器が連携する Android Make Days
by
Yasuhiro Ishii
Make @ Osaka
by
Shigeru Kobayashi
Adk study Boot Camp #2 Mogri
by
mogri_ss
ADKでロボット with NFC
by
Takao Sumitomo
AOA2.0を実装してみた
1.
AOA2.0を実装してみた(USB編) ADK勉強会(東京) BootCamp#2 2012/10/13 Yuuichi Akagawa
2.
自己紹介 Yuuichi Akagawa (あかがわ
ゆういち) – C言語と同い年 本業は某SI企業でインフラ担当 ADKで何かを作るのではなくて、ADKをいろん なマイコンに実装するのがマイブーム Androidアプリはあんまり作れません Javaが嫌いなの(ゝω・) Copyright © 2012 Yuuichi Akagawa 1
3.
今日語る内容 ADK 2012ボードについては語りません。 あくまでもADK2(AOA2.0)に関する部分だけ。 しかもUSBだけ。Bluetoothはナシよ。 Copyright © 2012 Yuuichi Akagawa 2
4.
改めて、ADKとは Android Open Accessory Development Kit Android Open Accessoryのリファレンス実装 Android側はUSB Accessory APIを利用 アクセサリ側は Android Open Accessory protocol(AOA)を実装 でもまあ、メンドクサイからもろもろADKという ことで Copyright © 2012 Yuuichi Akagawa 3
5.
ADK 2011 / AOA1.0 昨年5月のGoogle I/Oで発表されたADKは ADK2011 / AOA1.0と呼ぶことになった マイコンボードはArduino Mega 2560ベース 現時点でADKと呼ばれているものは、ほぼ 全てこれ アクセサリ側がUSBホストとして実装され、 USB接続により通信と給電機能が提供される Copyright © 2012 Yuuichi Akagawa
4
6.
ADK 2012 / AOA2.0 (通称ADK2) 今年6月のGoogle I/Oで発表されたADKは ADK2012 / AOA2.0。Android4.1以降で対応 マイコンボードはArduino Dueベース(Cortex‐M3) 新機能 –
ADK connection over Bluetooth – USB Audio / Bluetooth Audio(A2DP) – HID Copyright © 2012 Yuuichi Akagawa 5
7.
ADK2012に関する詳しい情報 @magoroku15さんが横浜Android PF部で発表 してます。非常に詳しく解析されています。 回路図やソースコードから解析を進めるアプローチ。必見。 Copyright © 2012 Yuuichi Akagawa 6 http://www.slideshare.net/magoroku15/adk2012
8.
ぼくのアプローチ 仕様から攻めます – http://developer.android.com/tools/adk/aoa2.html そして、動かしながらUSBアナライザで観察 Copyright © 2012 Yuuichi Akagawa 7
9.
ぼくのアプローチ 使うマイコンは – Arduino UNO + USB Host Shield –
GR‐SAKURA Copyright © 2012 Yuuichi Akagawa 8
10.
Copyright © 2012 Yuuichi Akagawa 9 AOA1.0からの変更点
11.
AOA2.0 AOA1.0とAOA2.0 AOA2.0はAOA1.0の上位互換。 USB接続のAccessoryモードという点では同じ。 10Copyright © 2012 Yuuichi Akagawa Accessory API AOA1.0 BluetoothUSB A2DP HIDAudio Play
HID RFCOMM ADK2012 ※ADK over BTはAOAに規定されていない。 実際にはAccessoryではない。
12.
コントロール転送一覧 request description 51 (0x33) AOAプロトコルバージョン取得 52(0x34)
アクセサリ識別文字列送信 53(0x35) アクセサリモード切り替え 54(0x36) HID デバイスの登録 55(0x37) HIDデバイスの登録解除 56(0x38) HID report descriptorの送信 57(0x39) HID Reportの送信 58(0x40) Audioモードの設定 11Copyright © 2012 Yuuichi Akagawa AOA2.0では新たに5つ追加
13.
USB Product ID AOA Protocol Version Product ID
Support function AOA 1.0 0x2D00 accessory 0x2D01 accessory + adb AOA 2.0 0x2D02 audio 0x2D03 audio + adb 0x2D04 accessory + audio 0x2D05 accessory + audio + adb Copyright © 2012 Yuuichi Akagawa 12 機能の追加によりProduct IDが追加された
14.
Copyright © 2012 Yuuichi Akagawa 13 Protocol Version 2を返すようになった フィールド 値 bmRequestType
0b11100000 ・デバイス→ホスト ・リクエストタイプ:ベンダ ・ 受信:デバイス bRequest 51 (0x33) wValue 0 wIndex 0 wLength 2 デバイスリクエスト レスポンス ‐ 非対応(STALL応答) 0x0001 AOA1.0 0x0002 AOA2.0 (Android 4.1以上)
15.
Copyright © 2012 Yuuichi Akagawa 14 Protocol Version 古いADK実装だと、JB端末が接続出来ない問題 if (protocol == 1) { Serial.print("device supports protcol 1¥n"); } else { Serial.print("could not read device protocol version¥n"); return false; } ADK_release_0512 残念! Microchipのライブラリ等も、古いものは同じような実装になっていたらしい。 if (protocol >= 1) { Serial.print("device supports protocol 1 or higher¥n"); } else { Serial.print("could not read device protocol version¥n"); return false; } ADK_release_20120606 Google I/O前にこっそり修正されていた
16.
Copyright © 2012 Yuuichi Akagawa 15 Protocol Version ちなみにYaoadkは、6/23に取り込み済み GR‐SAKURA版は最初から1以上で判定するよう 作っておいた STM32F4‐Discovery版は…直してない (゚o゚; //get protocol unsigned short protocol = ‐1; protocol = getProtocol(); if(protocol < 1 ){ tkusbh_disconnect(TIMEOUT_INFINITE); return false; } #ifdef
DEBUG printf("ADK supportd.(%d)¥n", protocol); #endif
17.
ACCESSORY_SEND_STRING アクセサリ識別文字列は変更なし AOA2.0ではmanufacturerとmodelを省略する と、接続してもアプリを起動をしない string ID 値 備考 0
manufacturer name accessory_filterマッチング対象 1 model name accessory_filterマッチング対象 2 description 接続時のダイアログに表示される 3 version accessory_filterマッチング対象 4 URI 対応するアプリがインストールされていない 場合、当該のURIをブラウザで開く 5 serial number 仕様上はそれぞれ256バイトまで 16Copyright © 2012 Yuuichi Akagawa
18.
アプリ自動起動抑止 前述の通りAOA2.0では、以下の2つを 送信しないと、アプリ自動起動を抑止できる manufacturer name model name ただし、これを行うとAccessoryとしては認識し ない。Audioモードで使用することが前提 → USB PID=0x2D02 or 0x2D03が返される Copyright © 2012 Yuuichi Akagawa 17
19.
HIDサポート Androidアプリは不要 Audio Dockの制御ボタン等を実装可能 もちろん、キーボードやマウスの実装も可能 複数のHIDデバイスを設定可能 本物のHIDと異なり、レポートデータはコントロー ル転送で行う AudioやAccessoryとの併用を想定 HID単体ならAndroid側のUSBホスト機能で十分 18Copyright © 2012 Yuuichi Akagawa
20.
ACCESSORY_REGISTER_HID HIDデバイスの登録 ID番号を指定することで、複数のHIDデバイスを 登録することができる 任意のタイミングで実行可能 フィールド 値 bmRequestType 0b01100000 ・ホスト→デバイス ・リクエストタイプ:ベンダ bRequest
54 (0x36) wValue HIDとして登録するID番号 wIndex HID report descriptorのサイズ Data なし 19Copyright © 2012 Yuuichi Akagawa
21.
ACCESSORY_UNREGISTER_HID HIDデバイスの登録を解除 任意のタイミングで実行可能 登録していないIDを指定した場合はSTALLが返る フィールド 値 bmRequestType 0b01100000 ・ホスト→デバイス ・リクエストタイプ:ベンダ bRequest
55 (0x37) wValue 登録解除したいHIDのID番号 wIndex 0 Data なし 20Copyright © 2012 Yuuichi Akagawa
22.
ACCESSORY_SET_HID_REPORT_DESC HID Report Descriptorを登録する 任意のタイミングで実行可能 登録していないIDを指定した場合はSTALLが返る フィールド 値 bmRequestType 0b01100000 ・ホスト→デバイス ・リクエストタイプ:ベンダ bRequest
56 (0x38) wValue 登録するHIDのID番号 wIndex ディスクリプタのサイズがエンドポイントのパケットサイ ズより大きい場合には分割して送信する必要があるた め、そのときのインデックス番号を指定する(0スタート)。 1パケットで収まる場合は0を指定する。 Data HID Report Descriptor 21Copyright © 2012 Yuuichi Akagawa
23.
ACCESSORY_SEND_HID_EVENT HID Reportデータを送信する 任意のタイミングで実行可能 エラーの場合はSTALLが返る(IDやReport Descriptorが未登録など) フィールド 値 bmRequestType 0b01100000 ・ホスト→デバイス ・リクエストタイプ:ベンダ bRequest
57 (0x39) wValue HIDのID番号 wIndex 0 Data HID Reportデータ 22Copyright © 2012 Yuuichi Akagawa
24.
HID実装例 JoyStickをマウスとして動作させてみた このレベルならArduinoでも楽勝 ソースはこちらで公開中 https://github.com/YuuichiAkagawa/Arduino‐AOA2 Copyright © 2012 Yuuichi Akagawa 23
25.
Audioサポート いわゆるUSB Audio 現時点ではPCM 2ch 16bit 44.1kHzをサポート Accessoryとは無関係なのでアプリ開発は不要 Android標準のPlayerで音楽再生すると、USB Audio Classに準じたデータがアイソクロナス転 送で送られてくるので、マイコン側でタイミング 取って再生すれば良い。 24Copyright © 2012 Yuuichi Akagawa
26.
Audioサポート ACCESSORY_STARTの前に実行する AOA2.0のサポート範囲はここまで フィールド 値 bmRequestType 0b01100000 ・ホスト→デバイス ・リクエストタイプ:ベンダ bRequest
58 (0x40) wValue 0 : none (デフォルト) 1 : PCM 2ch 16bit 44.1kHz wIndex 0 Data なし 25Copyright © 2012 Yuuichi Akagawa
27.
Audioサポート Accessoryに切替後、アイソクロナスINトランザ クションを発行すると、データが送られてくる 端末側をミュートにしていると、USBに All ‘0’の データが流れてくる。音量設定には影響されな い。(Nexus 7@4.1.1の場合) 26Copyright © 2012 Yuuichi Akagawa
28.
Audioサポート Interface Descriptor bLength 9 bDescriptorType INTERFACE bInterfaceNumber
2 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass Audio bInterfaceSubClass Audio streaming bInterfaceProtocol Undefined iInterface None 27Copyright © 2012 Yuuichi Akagawa Audio AS Descriptor bLength 7 bDescriptorType CS_INTERFACE bDescriptorSubtype AS_GENERAL bTerminalLink 0x01 bDelay 1 wFormatTag 0x0001 Audio AS Descriptor bLength 11 bDescriptorType CS_INTERFACE bDescriptorSubtype FORMAT_TYPE bFormatType FORMAT_TYPE_I bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 tSamFreq[1] 44100 Hz Endpoint Descriptor bLength 9 bDescriptorType ENDPOINT bEndpointAddress 4 IN bmAttributes.TransferType Isochronous bmAttributes.SynchronizationType Synchronous wMaxPacketSize.PacketSize 256 bInterval 1 bSyncAddress 0 OUT Audio EP Descriptor bLength 7 bDescriptorType CS_ENDPOINT bDescriptorSubtype EP_GENERAL bmAttributes.SamplingFrequency 1 bmAttributes.Pitch 0 bmAttributes.MaxPacketsOnly 0 bLockDelayUnits Milliseconds wLockDelay 1 Nexus 7 (4.1.1)のディスクリプタ(Audio Interfaceのみ抜粋)
29.
Audioサポート 28Copyright © 2012 Yuuichi Akagawa 1msインターバルでのアイソクロナス転送 2ch x 16bit x 44100÷1000 = 176.4 bytes /packet 割り切れないから、176x9 + 180で 1764bytes/10packets
30.
Audio実装例 Android端末で音楽ファイルを再生すると、 シールド上のスピーカーから音が出る シールド上のボタンで再生/停止、次曲、前曲 の操作が可能(HID) Copyright © 2012 Yuuichi Akagawa 29
31.
Audio実装例 回路は超簡単 Copyright © 2012 Yuuichi Akagawa 30
32.
Audio実装例 GR‐SAKURAに実装 標準のUSBホストライブラリではアイソクロナス転 送がサポートされていないので自前で実装。 (とりあえず受信のみ) 音声再生処理はmituhiromatuura氏のMP3再生ラ イブラリに含まれるコードを使用させて頂きました。 http://homepage3.nifty.com/fpga/gr/ PCMなので受信したデータをそのまま上記ライブ ラリに渡せば音が出る。 Copyright © 2012 Yuuichi Akagawa 31
33.
Audio実装例 HIDは「Basic Audio Device」 Copyright © 2012 Yuuichi Akagawa 32 /* Basic Audio Device HID Report Descriptor */ const byte _hidReportDescriptor[] = { 0x05, 0x0c, //USAGE_PAGE (Consumer Devices) 0x09, 0x01, //USAGE (Consumer Remote Control) 0xa1, 0x01, //COLLECTION (Application) 0x85, 0x01, //Report ID (0x01) 0x15, 0x00, //LOGICAL_MINIMUM (0) 0x25, 0x01, //LOGICAL_MAXIMUM (1) 0x75, 0x01, //REPORT_SIZE (1) 0x95, 0x01, //REPORT_COUNT(1) 0x09, 0xe9, //USAGE (Volume Up) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xea, //USAGE (Volume Down) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xcd, //USAGE (Play/Pause) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xb5, //USAGE (Scan Next Track) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xb6, //USAGE (Scan Previous Track) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xb7, //USAGE (Stop) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xb3, //USAGE (Fast Foward) 0x81, 0x02, //INPUT (Data, Var, Abs) 0x09, 0xb4, //USAGE (Rewind) 0x81, 0x02, //INPUT (Data, Var, Abs) 0xc0 //END_COLLECTION }; Input D7
D6 D5 D4 D3 D2 D1 D0 Byte0 Report ID (0x01) Byte1 Rewind Fast Rewind STOP Scan Prev Scan Next Play Volue Down Volume Up
34.
Copyright © 2012 Yuuichi Akagawa 33 おまけ ~ Bluetooth ~
35.
ADK connection over Bluetooth Bluetooth経由でAccessoryが利用できる USBとはイニシエーションの向きが逆 USBはアクセサリからAndroid端末に接続 BluetoothはAndroid端末からアクセサリに接続 全然AOAじゃない。 ADK用のUUIDが割り振られている 1dd35050‐a437‐11e1‐b3dd‐0800200c9a66 SPPのコードを改変すれば作れるのでは? 34Copyright © 2012 Yuuichi Akagawa
36.
USB接続とBluetooth接続の違い Android側のコード例 35Copyright © 2012 Yuuichi Akagawa mAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothDevice device = mAdapter.getRemoteDevice(address); mSocket
= device.createInsecureRfcommSocketToServiceRecord(ADK_UUID); mSocket.connect(); mInStream = mSocket.getInputStream(); mOutStream = mSocket.getOutputStream(); mUSBManager = (UsbManager) getSystemService(Context.USB_SERVICE); UsbAccessory acc = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); ParcelFileDescriptor mFD = mUSBManager.openAccessory(acc); if (mFD != null) { FileDescripter fd = mFD.getFileDescriptor(); mInStream = new FileInputStream(fd); mOutStream = new FileOutputStream(fd); } USB Bluetooth どちらも接続確立後は、mInStream, mOutStreamを介してアクセスする。 Intent周りは省略 Intentなんて無い
37.
Bluetooth経由のAudioとかHIDとか Android側の観点では、元々サポートされてい るBluetoothのプロファイルを使う。 Audio : A2DP HID : HID ADK2012ボード側でこれらを実装して見せただ けなので、AOAとはなんら関係無い。 当たり前だけど、iOSデバイスだって繋がる。 ぼくは全然興味ありません。 36Copyright © 2012 Yuuichi Akagawa
38.
Copyright © 2012 Yuuichi Akagawa 37 おしまい
Download