Android開発はじめました

普段の業務ではかすりもしないジャンルだけれど、いい加減無視し続けてもいられないモバイル開発。というわけでAndroid開発の勉強がてらアプリを作ってみることに。大変ローペースだけれども三日坊主はこえたっぽいので、非公開でつけていた開発日誌を公開にしてみる。

家族ToDo(仮)開発日誌

まずは動くものができるのを最優先に、コピペプログラミング上等でゆっくりやってます。

iPadやらPS VitaやらNexus 7やらを確実に充電できるUSBアダプタとケーブルの選び方

ほかにもiPhoneとかAndroidスマホ/タブレットとか最近のガジェットはだいたいUSBで充電するのが一般的なわけだけども、出始めの頃と違って最近は単にその辺に落ちているUSBケーブルを適当なACアダプタに挿しただけじゃ充電できないこともあったりして困る。○○対応!と高らかにうたっているやつを買ってきても、実際挿してみると全然使えなかったりとか。付属の純正ACアダプタとケーブルを使えば確実だけど、機械ごとに1セット必要になるから邪魔でしょうがない。

というわけで、みんな同じUSB充電なんだから1本のUSBケーブル(とACアダプタなりモバイルバッテリーなり)で何とかならんか*1、という話。というわけで下記2点を満たすものを手に入れられればだいたいハッピーになると思う。

ポイント1 : 最大電流が2000mA(2A)以上のACアダプタないしモバイルバッテリーを選ぶ

USBの規格上の最大電流は2.0で500mA、3.0で900mAだけど、iPadのACアダプタは2100mA、VitaのACアダプタは1500mAも流せたりする。で、機械によっては一定以上の電流が流れないと充電をやめてしまうものがあったりする。実際流れる電流がどの程度なのかは計測してみないとわからない話で面倒なので、とりあえずACアダプタの規格から、タイトルに書いた機器であれば「2000mA出力できるかどうか」を判断基準にしておけばいいと思う。

当たり前だけどもひとつのACアダプタやモバイルバッテリーから2台同時に充電とかしようとすると電流足りなくなるので*2。そのときはもっと大きい電流を流せるやつにかえる必要があるよ。

その場合は↓みたいにポート別に回路を分けているようなのがおすすめ。

ポイント2 : 「充電専用」のUSBケーブルか、普通のUSBケーブルを充電専用に変えるアダプタで繋ぐ

VitaとかNexus 7とかがそうみたいなんだけども、こいつらに非純正のACアダプタ/バッテリーと普通のUSBケーブルを挿しても充電してくれない*3。こいつらをやる気にさせるには、データ通信用のピンが短絡されているUSBケーブルを使う必要がある*4。普通、パッケージに短絡云々は記載ないので、「充電専用」とか「※データ通信には対応していません」とか書いてあるUSBケーブルを手に入れよう。

ただ、これだけの情報だとイマイチ不確実だし、もし手に入ってもデータ通信用にもう1本別にUSBケーブルを持たなきゃいけなくなるので、↓みたいにデータ通信用ピンを短絡させてくれるアダプタを手に入れて、普通のUSBケーブルにかませて使うのが最良かも。

PS Vita用USB変換コンバータ『USB変換コンバータV』

PS Vita用USB変換コンバータ『USB変換コンバータV』

ちなみにこの結論に達するのに休日の貴重な自由時間を数時間消費した。ぐふ。

参考 : Nexus 7の充電に使うUSBケーブル相性問題について考察 : Laineema デジタルハードウェア徹底レビュー

*1:Apple製品とVitaはコネクタ形状がそもそも違うから、USBケーブルもう一本持つか、アダプタ持つかしないとダメだけどね

*2:キルヒホッフの法則ってやつね。久しぶりすぎて思わずWikipediaで調べた

*3:たとえば、iPadのACアダプタに普通のUSBケーブルを挿してもVitaは充電を始めない

*4:VitaとかNexus 7の純正ACアダプタだと普通のUSBケーブルでも充電できたりするが、これはアダプタ側でUSBのデータ通信用のラインを短絡させているため。同じUSBケーブルでもモバイルバッテリーだと充電できなくなるのはこの理由

iTunesライブラリの音楽を簡単にAndroidに同期する方法

2013/02/16追記

自分の環境がわるいのか最新版がわるいのか不明だけど最近同期がうまくいかない。今はdoubleTwist+AirSync使ってます。WinAmpやiSyncrとか試してみたけど、doubleTwistが一番簡単でわかりやすい。AirSyncが有料なのが残念なところだけど、他のアプリが全然使い物にならないので仕方が無い。

2013/09/23追記

Songbirdの全てのサービスは2013/6/28で終了していたようです。開発元解散のため。下記公式ブログにてその旨説明と、オープンソース版のSongbirdであるNightingaleの紹介があります。が、現状のバージョンは正直使える水準では無いと思っているので、やはり上記の通りdoubleTwistをおすすめしておきます。

You gotta know when to fold ‘em | News from the Nest


==== 以下は古い内容です。 ====

iPhone/iPodと比べて、とにかく音楽を聴くまでの敷居が高いAndroid。一昔前ならiSyncrを使うのが定番だったようだが、今ならSongbirdを使うのがいい。iTunes並に・・とまではいかないけど、他のどの方法よりもたぶん簡単*1

  • Desktop版(Windows/Mac向け)とMobile版(Android向け)のアプリが用意されており、強力に連携!
  • iTunesライブラリを*そのまま*読み込める。変換とかコピーとか不要!
  • iTunesのように、ボタン一発でAndroid端末と同期!
  • iTunesとほとんど同じインターフェース。操作に困らない!
  • Mobile版アプリではBluetoothで再生/停止/曲送り可能!

インストールと準備

  1. iTunesライブラリを管理しているPCかMacにDesktop版をインストールする。
  2. Android端末にMobile版をインストールする。
  3. PC/MacでSongbirdを起動する。
  4. [環境設定]-[メディアのインポート]-[iTunesライブラリのインポート/エクスポート]を開き、[iTunesライブラリの場所]に、iTunes Library.xmlファイルの場所を指定する。
  5. [ライブラリのインポート]ボタンを押して、インポートが終わるまでしばらく待つ。

デバイス情報の設定(転送するファイル種類と転送先フォルダの設定)

はじめにAndorid端末の情報を設定しなければならない。Android端末の情報はSDカードのルート(/mnt/sdcardとか)に配置されている.SBSettings.xml*2に記載するが、直接編集するのは大変なので、Devise(Deviceではない)というアドオンで行う。

参考 : Androidとの相性抜群?Songbirdで音楽転送。 | ブクマ!

  1. Desktop版のSongbirdにDeviseアドオンをインストールする。
  2. USBケーブルでAndroid端末とPC/Macを接続する。Android端末側でUSBストレージモード(SDカードリーダーモード)を有効にする。
  3. Songbirdが勝手にAndroid端末を見つけてくれるはず。
  4. Deviseアドオンを開いて、転送先フォルダ名を指定し、転送対象としたいファイルの拡張子(mp3とかaacとか)にチェックを入れておく。

(2012/12/31追記)Songbirdの最新バージョンにDeviseアドオンが対応していない場合

2012/12/31現在、Songbirdの最新バージョンは2.1.0ですが、Deviseアドオンは2.0.*系にしか対応していないため、通常の手順ではインストールできません。

下記手順にて互換性チェックを一時的に無効にすればインストールできます*3。Songbird側で大きな変更がなければ、この方法で互換性のないアドオンをインストールしても大抵は問題なく動作するはずです。しない場合はどうにかしてDeviseが対応している一つ前のバージョンのSongbirdを手に入れましょう*4

The application itself looks for the line in the install.rdf, but you can disable that if you have a lot of add-ons that are incompatible.

  1. Open a new tab and enter about:config in the address bar.
  2. Agree to the "I'll be careful!" warning.
  3. Right-click anywhere in the list, and select the "New Boolean" option.
  4. Enter extensions.checkCompatibility.1.9 as the name, and set the value to False.
  5. Restart Songbird, and you should be good to go!
http://wiki.songbirdnest.com/Docs/Updating_Add-ons%27_Compatibility

音楽の同期

【注意1】転送先ディレクトリ名を明示的に指定しない場合は、SDカードにあらかじめ「Music」フォルダを作っておくこと。さもないとSDカードのルートディレクトリに音楽ファイルが放り込まれてしまう。

【注意2】Android端末の機種(私はISW11Fで再現)によっては転送先フォルダの指定がうまくいかず、転送時に「undefined」というフォルダが作られてそこに転送されてしまう。これを回避する手段は今のところ.SBSettings.xmlファイルを直接編集して、転送先フォルダ名を指定するしかない。

  1. 左サイドバーのAndroid端末を選択して、メインペインの[同期]ボタンを押す。
  2. 同期が終わるまでしばらく待つ。
  3. 同期が終わったらPC/Mac側でSDカードのマウントを解除し、USBケーブルを外す。

再生

  1. Android側のSongbirdを立ち上げる。同期した音楽ファイルの数が多い場合、初回は音楽ファイルのスキャンに時間がかかるかもしれない。
  2. スキャンが終わったら、後は聞くだけ!

まだ使い始めたばかりですが、現時点では全く不満なし! しばらく使い続けて追ってレポートしていきます。

使い続けているうちに気づいたことリスト(随時更新)

  • アルバムアーティストでソートする機能が無い。A featuring B的なアーティスト情報を入れていると困る(Mobile/2.1.1)
  • 一部の日本語が文字化けする。おそらくはID3タグにShift_JISを使っているケース。これは入れ直すなり変換するなりしないとダメ(Mobile/2.1.1)
  • Bluetooth対応(A2DP)機器で再生/停止/曲送り/曲戻しが可能だが、曲名を表示する機能には対応していないようだ(Mobile/2.5)
  • ロック画面コントロールが便利なのは便利なのだが、表示されるのに時間がかかるのでイマイチ。普通にロック画面解除したいときとかワンテンポ遅れて表示されると邪魔(Mobile/2.5)

2013/01/29追記:

携帯をURBANO PROGRESSOに変えてから、同期がうまくいかなくなった。Desktop版のバージョンを1.x系のものに戻したら使えるようになった。謎。最新版に問題がある? 原因不明ですがどうしてもうまくいかない場合は試してみると良いかも。古いバージョンはビルド置き場からどうぞ。でもここにはなぜか1.7〜1.10のリンクが張られていないので、ほしい場合はtrunkディレクトリから探します。どのビルド番号がどのバージョンに対応してるかはRelase Noteのページでこつこつ調べて下さい。

*1:もちろん、iPod持ってるならそっちを使った方がはるかに使いやすい。雲泥の差

*2:Android端末に同期したいファイル種類は、「デバイス情報を取得」で表示できるダイアログで確認できるが、ここに表示される情報はAndroid端末の再生能力を示しているわけではなく、単に.SBSettings.xmlの記載内容を表示しているだけ。ちなみに.SBSettings.xmlファイルの仕様はここ

*3:アドオンのxpiファイルを開いてinstall.rdfを書き換えることでもOK

*4:苦にならない人は自前で.SBSettings.xmlを編集する手もありますが・・。

auの迷惑メールフィルタがクソ過ぎることを再認識した

auの迷惑メールフィルタがクソなことなど前からわかってはいたが、最近新たなクソ事例が発覚したので憤りつつ書く。

自分の携帯メールアドレスは若かりし頃の悪行のせいでかなり汚染されており、フィルタなしではひっきりなしに迷惑メールが届く有様。なので基本、ホワイトリストにないアドレスからのメールは全部フィルタする設定をしている。

このホワイトリスト、あらかじめ登録しておいたキーワードがFromのメールアドレスと部分一致すればホワイトなアドレスとして扱う仕様の模様。まあこう書いてみると問題なさそうなもんだが、実際のところは「Fromヘッダの値全て」に対して部分一致をかけてしまうようで・・。

つまり、↓なケースはホワイトなメールとしてフィルタをすり抜けてしまう。

ホワイトリスト登録 : @whitelist.example.com
Fromヘッダの内容   : foo@whitelist.example.com <bar@evil.example.com>

どう考えてもホワイトリストと比較すべきは<>の中だけでしょ。表示名部分(上記でいえばfoo@whitelist.example.com)は無視すべきでしょ。

android用のEメールアプリの出来といい、auの出すソフトウェアの出来がイマイチに感じることが多い。使用を強要するなら、ちゃんとしたもの作ってほしい。切実に。Eメールアプリとか、何回強制終了すれば気が済むんだ。エラー002ってなんだよ。情報量ゼロだよ。(愚痴