Slide 1

Slide 1 text

ペダルのある生活 2018/04/27 Mobile Act OSAKA #4

Slide 2

Slide 2 text

なぜか土曜日 エライ人

Slide 3

Slide 3 text

自己紹介 • ひろん(一宮 浩教) • Twitter、GitHub、Qiita、
 SlideShare、Speaker Deck: ➡hironytic • 株式会社 MetaMoJi(徳島勤務)

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

音楽関係の法人様 • 楽譜の共有に利用したい

Slide 6

Slide 6 text

iRig BlueTurn http://hookup.co.jp/products/ik-multimedia/irig-blueturn お荷物の
 お届けでーす

Slide 7

Slide 7 text

iRig BlueTurn • Bluetooth接続のハードウェアキーボードとして 動作する - MODE 1: ↑/↓ - MODE 2: Page Up/Page Down - MODE 3: ←/→

Slide 8

Slide 8 text

どうなるのか考える ハードウェアキーボードに対応すればよい /以上 http://amzn.asia/iPpfS6t

Slide 9

Slide 9 text

ハードウェアキーボード対応(iOS) • UIKeyCommand • ファーストレスポンダーでUIKeyCommandオブジェ クトの配列を返せばよい extension UIResponder { @available(iOS 7.0, *) open var keyCommands: [UIKeyCommand]? { get } }

Slide 10

Slide 10 text

UIKeyCommandを返す class ViewController: UIViewController { override var canBecomeFirstResponder: Bool { return true } override var keyCommands: [UIKeyCommand]? { return [ UIKeyCommand(input: UIKeyInputUpArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputDownArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: UIKeyInputLeftArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputRightArrow, modifierFlags: [], action: #selector(pageDown)), ] } @objc func pageDown() { /* ࣍ͷϖʔδ΁ */ } @objc func pageUp() { /* લͷϖʔδ΁ */ } }

Slide 11

Slide 11 text

PageUp、PageDownは? • APIで定義されていない • Stack Overflowに答えがあった(*) - 文字列 "UIKeyInputPageUp", "UIKeyInputPageDown" - Undocumented APIの使用になるかどうかは
 知らんけど * https://stackoverflow.com/a/44321674/4313724 (たぶん大丈夫。知らんけど)

Slide 12

Slide 12 text

UIKeyCommandを返す override var keyCommands: [UIKeyCommand]? { return [ UIKeyCommand(input: UIKeyInputUpArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputDownArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: UIKeyInputLeftArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputRightArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: "UIKeyInputPageUp", modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: "UIKeyInputPageDown", modifierFlags: [], action: #selector(pageDown)), ] }

Slide 13

Slide 13 text

ハードウェアキーボード対応(Android) class MainActivity : AppCompatActivity() { override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { when (keyCode) { KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_PAGE_UP -> { pageDown() return true } KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_PAGE_DOWN -> { pageUp() return true } else -> { return super.onKeyDown(keyCode, event) } } } private fun pageDown() { /* ࣍ͷϖʔδ΁ */ } private fun pageUp() { /* લͷϖʔδ΁ */ } }

Slide 14

Slide 14 text

報告   ぼく「このペダルの場合、追加のSDKも特に必 要ありませんでした。お客様はこのペダルを使わ れるんですよね?」   エライ人「さあ?Amazonで最初に見つかった のを買ってみただけ」   ぼく「えっ・・・!?」

Slide 15

Slide 15 text

まとめ • iRig BlueTurnはハードウェアキーボード • iOSでは UIKeyCommand を使う • Androidでは onKeyDown() を使う