fchiba memo

2015年01月

前の記事でリモコンを自作したのですが、2通りの操作しかできない(シングルクリックとダブルクリックのみ。長押しは音声検索に奪われてユーザには使えない)ので、結局センチュリー Bluetooth接続マルチメディアリモコン iRemote Shutterを買ってしまいました。これはiPhone用ですが、Bluetoothキーボードとして認識されるらしいので、Androidでも使えることを期待して購入しました。

実際に使ってみると、接続はスムーズにでき、再生・曲送り・ボリューム調整は問題なく動きました。ただし、接続中はソフトウェアキーボードが消えてしまうので、日本語入力はできません。ソフトウェアキーボードを出すボタンがついているのですが、Androidでは動作しませんでした(どうせ運転中にしか使わないので影響はありませんが)。

車の運転中はボリューム調整がいらない(カーオーディオに接続しているのでそちらで調整できる)代わりに、早送り&巻き戻しが欲しかったので、キーボードのレイアウトを調整することにしました。幸いにもAndroid4.1からはユーザー定義のキーボードレイアウトをインストールできるので、さくっと自作。これでだいぶ操作しやすくなった気がします。

キーボードレイアウトのソースはgithubにあげました。


参考資料は以下の通りです。

Android入力デバイスの公式資料(ただし、カスタマイズ用ではなくデバイスメーカー向け)
Android入力デバイスの仕組みがわかりやすく解説されているマイナビの記事
カスタマイズキーボードを公開している方々
キーイベントの一覧



このカスタムキーボードの技術的に興味深い点としては、https://github.com/fchiba/iremoteshutter/blob/master/res/raw/iremoteshutter2.kcm#L4 のように、
map key (linuxのキーコード) (Androidのキーコード)
とかけば、kcm(=Key Character Map)という本来は文字の変換しか出来ないファイルにも関わらずキー自体の配置を変えられてしまうところです。これはy10gさんのソースを見ていて発見したんですが、undocumentedな仕様ですかね…

AndroidをカーオーディオのAUXに接続して、車の運転中にpodcastなどを聞いています。カーオーディオと違ってAndroidにはハードウェアキーが無いので、運転中に番組のスキップや早送りなどができなくて困っていました。

「マイク付きヘッドホンアダプター」という商品名で、任意のイヤホンにマイク&リモコンを後付けできる製品(たとえば audio-technica AT338iS や ELECOM MPA-IP353M3 など)が売られているのですが、https://source.android.com/accessories/headset-spec.html を見る限りそれほど大げさな構造ではなさそうなので自作してみることにしました。

とりあえずボタンは1つだけあればよい(ボリュームはカーオーディオで操作できるしvoice searchなんて使わない)と割り切ります。リモコン付きマイクとして認識されるためには、マイク端子に、
・ボタンを押していない状態で1kΩ以上(マイクのインピーダンス。試したところ5kΩあれば安定)
・ボタンを押している状態で0Ω
の抵抗があればよいそうなので、抵抗とタクトスイッチをユニバーサル基盤の切れ端にはんだ付けしてリモコン部分は完了。

DSC_0413


これを、そのへんに転がっていた、3.5mm 4pinジャック~RCA端子のケーブル(Xboxの付属品)に接続すれば完成。

DSC_0414

(このXboxのケーブル、幸いなことにピン配置がCTIAというスマートフォンで使われている規格と同じで根元から2番目がグラウンドになっていました)

基盤むき出しがダサいですが、とりあえずしばらくこれで運用してみたいと思います。


このページのトップヘ