2009年8月15日土曜日

初めてのGoogle Android プログラミング (8)

で、地図の表示地図の表示……あれ、Google Map のView が作成されるのに地図がさっぱり表示されない。何じゃこら??

Android 1.5 での Maps API Keyの取得について
に API Key の場所が変わったよ、みたいな記述があるけどこれ?
でもXPだしなぁ……と探していると、

Android 1.5 のdebug.keystoreのVistaでの場所
というそのものずばりなエントリーを発見!このページの記述によるとWindows Vista ならば
C:\Users\\.android\debug.keystore

ちなみにこの本に書いていたのは
C:\Users\\AppData\Local\Android\debug.keystore

SDK1.5 になるとこういう変更があるっての、わからんかったので助かりました。

初めてのGoogle Android プログラミング (7)

衝撃の事実!
Eclipse でGoogle Map を使うためには、 Build Target を Google APIs にする必要がある!
で、今まで Android 1.5 を使ってきたせいで9章で行き詰まった。

うわぁ↓↓↓

2009年8月14日金曜日

初めてのGoogle Android プログラミング (6)

今日は大はまり。
まず、8章の内容のうち、 id を差し替えてコーディングを行ったところ、別の Activity(同じプロジェクト内) で id をかぶらせてしまい、落ちる落ちる。
途中で気がつき、 id を差し替えて再度デバッグモードで起動すると、
Failed to reopen debug port for Selected Client to: 8700
のエラーが出てAVDの内容が更新されない。うっそ、マジ??とか思っても更新されない。
ポートがあけられないって言うことは、なんかで塞いでもたんかいな?と思うも記憶にないしなぁ。

これについては調べたところ、
Google グループ内で該当するディスカッションを発見。
どうもC:\WINDOWS\system32\drivers\etc\host

::1 localhost

となっている行を
127.0.0.1 localhost

に書き換えればいいとのこと。
今日はこんなんであまり進まず。うーん。

2009年8月13日木曜日

初めてのGoogle Android プログラミング (5)

8章を進める。
どうも匿名クラスを使うのが好きらしく、この作者のコードは匿名クラスのオンパレード。
ってか、たまには Listener の実装別のやつにしてほしい。

書いていて気持ち悪いけど、Javaに詳しくないから修正できない。
どうすりゃいいんだろう?

ともあれ、8章になってやっとアプリらしい外見をしてきた。
機能的にはまだまだだけど、外見さえ何とかなれば後はごり押しでなんとかならんものだろうか?

初めてのGoogle Android プログラミング (4)

第6章、コマンドラインからの操作→あんまり今のところ重要じゃないので流し読み。

第7章、 Intent と Phone Dialer
急激にまともな無いように。あれ、この本もしやJava経験者対象?
Listener の実装で匿名クラスを使用されていて、最初???状態。
調べて内容はわかったが、何となく気持ち悪い実装なのでとりあえずOnClickListener を Activity のクラスに implements しといて実装終了。

本当は元クラスの method を扱いたいときとかもあるだろうから匿名クラスが必要になるときもあるのかな。あ、でもこれってキャストしたら使用できたんだっけ?あれ?てか interface の場合元クラスの method なんてあるはずが無いからこの辺好み?

Java Developer Connection(SM) (JDC) テクニカルティップあたりの解説では、 Local クラスと匿名クラスは似たような使い方ができる。ただ、可読性を考えると匿名クラスより Local クラスが優れている場合が多い、とのこと。実装してみた感じではこの考えは同感。今後実装するとしても匿名クラスを積極的には使わないだろうなぁ。

と、こんなことをしていたら続く解説部分の EditText のインスタンス取得関係が不可思議なことに。
仕方がないから onClick() の中で取得しよう……て、あれ?この方が実装として正しくないか?

この本の実装では Listener を設定する前に EditText を取得しているので、onClick() 以外の Listener(もちろん、別のボタン等がある場合) が存在した場合、極端なこと言えば先に操作していれば getText() が入らなくても動くとか???でも逆順に操作されることを考慮したらこの辺毎回値を取得するようにしたいかな。あ、でも毎回取得してたらプログラムの実行速度が遅くなるのか?
ん~、 Java は新入社員研修以来触っていないので、ここんとこ今ひとつわからんなぁ。
まぁ、この章も意図しておいたプログラムができているから良いとするか。

2009年8月12日水曜日

初めてのGoogle Android プログラミング (3)

5章読了。
末尾の挑戦で示されている、複数のビューの表示には LinearLayout クラスを使用。
LinearLayout linearLayout = new LinearLayout(this);
これ、 linear じゃないクラスもあるんだろうなぁ。
また、複数表示するのに久々のJavaだからということで ArrayList も使用。
Iterator とかなつかしー。最近 SAS ばっかり見てたのでこういうまっとうな小物が出て来るとうれしくなる。

2009年8月11日火曜日

初めてのGoogle Android プログラミング (2)

とりあえずはまったこと。
プロジェクトエクスプローラーを消してしまって、別のプロジェクトを開けない!
windows -> show view -> pacage explorer を選択すると開ける。

んで、このはまりを抜けて5章 Hello! World アプリケーションを続ける。
画像を使ったHello World! の節ではGoogle での画像検索結果(hello world)から画像サイズ小を……って、なんじゃこれ!どーみても18禁じゃないですかいな。
こんなのつかえるか!

もうちょい安全な画像を使用しました。そっか、こんな絵がhello world の検索結果だなんて、Google 社員のhello world は強烈だなぁ……

って、めっちゃ拡大されて表示された。これ、もしかしてこの方法(ImageView クラスを使用)だとサイズ指定できない?
次のページのxmlの方法だとうまくいってるし、なんか大きさ指定の方法がありそうな……
setAdjustViewBoundsかと思ったが違うよう。
setLayoutParams(LayoutParams params)?あ、これくさい……と思うが指定しても失敗。
ImageView のインスタンスに設定しても反映されず。

Android LayoutParamsで検索するとこれについて記述したページが。
JavaDrive さんのHP中に、「レイアウトを指定してビューを設定」というそのものずばりな話が。

記述通り、setContentView(ImageView View, LayoutParams param)として設定してみると……あれ?うまく行くときと行かないときが。

Layoutparams を LayoutParams.FILL_PARENT , LayoutParams.FILL_PARENT
にしたときは画面いっぱいに。

LayoutParams.WRAP_CONTENT , LayoutParams.WRAP_CONTENT
にしたときは小さく。ココまではOK。

ここで、
LayoutParams.FILL_PARENT , LayoutParams.WRAP_CONTENT
にしたら画面中央に小さく。逆にしたら画面上端中央に小さく。なんじゃこれ?

ちなみに、80 , 100と指定した時は……大きく(元画像は50x50 pixel)なってるけど、どう見ても正方形。うーん、Buttonクラスには使用できてもImageView クラスには使えないとか?

不明だが画像が表示できたので今日はここまで。

初めてのGoogle Android プログラミング (1)



お盆休みの間、せっかくまとまった時間がとれるのでお勉強をしよう!
ということで、この本を使ってAndroid Programmingをやってみることにしました。
目標はこの本の内容を完了させる+余裕があれば アプリの作成(smart.fm 用。ログインした後、……どうしよ?日記ぐらい書けると良いなぁ)
という訳で、まずはEclipseのインストール。
その後、JavaSDKのインストール。1.5をインストールしているように指示しているのを見逃して1.6をインストール。大丈夫か?