Android開発はじめました

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

家族ToDo(仮)開発日誌

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

Media Buttons (Androidアプリ) のテーマを作った : simple_whites / simple_blacks / fontello_black

Media ButtonsというAndoridアプリ(ウィジェット)が便利。音楽の再生・停止/次の曲/前の曲/早送り/巻き戻しの5種類の機能を、それぞれ1x1サイズのウィジェットとしてホームに貼れる。

で、Dockに1x1サイズのウィジェットをおけるホームアプリ(Nova Launcherとか)と組み合わせると、まるでiOSのようなインタフェースを実現できる。

↓画面下のDock部分の真ん中3つのアイコンがそれぞれ前の曲、再生・停止、次の曲
f:id:ymkn:20130226014213p:plain

ウィジェットの見た目はテーマとして切り替えられる。2種類のテーマが同梱されているけど、ちょっと野暮ったいので、シンプルなテーマを作りました。ほしい人は下記からどうぞ。ちなみに上の画像で使っているのがsimple_blacks。

https://github.com/ymkn/media_buttons_themes/tree/master/releases

公式サイトの説明にもあるように、zipファイルをそのままAndroid/data/com.github.mediabuttons/themes/ディレクトリに入れるだけでOK。ちなみにこのディレクトリは自分で作る必要があるのでご注意。

2013/03/04追記:

アイコンフォントを選んで作ることのできるサービスfontelloで作ったフォントで作ったfontello_blackを追加したよ。(ややこしい)
simpleシリーズと同じ場所からダウンロード可能。

Glaejaとお天気アイコンフォントMeteoconsでベクター画像な天気予報ウィジェットを作る

Androidの天気予報ウィジェットが大変不満。ダサいけど正確な国内系、かっこいいけど精度の低い海外系、どちらも帯に短したすきに長し。かっこよくて正確な天気予報ウィジェットがほしいの。アタシ。

というわけで最強のカスタマイズ性を誇る情報表示系ウィジェットGlaejaでかっこよくて正確な天気予報ウィジェットを作ることにした。Glaejaではウェザー・サービス社のお天気XMLデータの情報表示に対応していて、十分満足のいく天気情報が得られるのです。

さて、あとはかっこいいデザインがあればOKだけど、天候ごとに画像を作るのが面倒だしラスタ画像だと拡大縮小に弱そう・・でもGlaejaはSVGとかのベクター画像に対応していない・・そこで今回はかっこいい天気アイコンフォントMeteoconsを使って諸問題をクリアしたよ。

手順は下記。

  1. GlaejaをAndroid端末にインストール。
  2. Meteoconsのttfファイルをダウンロードし、Android端末の/mnt/sdcard/com.gmail.kanitawa.glaeja/fontsディレクトリにコピー。
  3. 新規Glaejaウィジェットを作成して、テキストレイヤーを追加。
  4. テキストレイヤーの「外部フォントを利用」をチェックし、「外部フォント名」から「meteocons.ttf」を選択。
  5. テキストレイヤーの「表示文字列」に、「%C%@2/1/\p@@0/-1/\d@),B,N,R,W,O@0/-1/\m@」と入力。
  6. 位置とか文字サイズとかお好みに調整。

これでこんな感じになる(右上のやつ)。イカス!

f:id:ymkn:20121127231836j:plain

気になる人向けの表示文字列の解説

「表示文字列」に設定した文字列を日本語で解説すると・・

%C%で得られる数値3桁の天気情報のうち1桁目だけを取り出してほかは削除。取り出した数値が0の場合は)、1の場合はB・・(略)・・5の場合はOを表示する

というもの。MeteoconフォントではBやN、Oといった文字に天気画像が割り当てられているので、うまいこといくというわけ。曇り時々晴れとか雨のち曇りとかを表現したい場合は、もうひとつ別のテキストレイヤーを作成して、2桁目とか3桁目を取り出すように改造すれば良い。

詳しくはGlaeja作者ブログMeteocons配布サイトを参照のこと。

2013/02/27追記:

Glaejaを使ったステキなホームをたくさん作っているorefolder.netの人がまさにGlaejaのためのアイコンフォントGlaiconを作ってくれたようです。天気アイコンはもちろん、Glaejaで便利に使えそうなアイコンがたくさん!

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を編集する手もありますが・・。