スキップしてメイン コンテンツに移動

Android maps (Mac)

事をしていると、地図を表示したいけどどうしたらいい?というような質問を多くされます。
私は、地図関連のアプリに関わる事がなかったので作った事はないので
あまり正しい情報を提供する事ができませんでした。


そんなのが続いているので、そろそろ地図関連の勉強をしようかと思います。
まずは・・・・
Eclipse で新規プロジェクトを作成します。
Project build target は Google APIs を選択しました。
create Activity にチェックをして、いつも通り「MainActivity」と入力

・・・・ あとで気がつくんですが、アプリを端末にインストールすると強制終了になりました。

作成されたプロジェクトの中の MainActivity を開きます。

onCreate の中で MapView を作成し、setContentView(map); とすればアプリを起動したらマップが表示されるはずです。
このときは気がついていなかったのですが

class MainActivity extends Activity の記述を修正する必要がありました。
Activity を MapActivity に修正します。こうしないとエラーで強制終了になってしまいます。

エラーログに MapActivity じゃないと MapView は作れないよ!って書いてありました。

とうわけでメモを残しておきます。整理したものは別サイトに Tipsかチュートリアルで書こうと思います。

  • 新規プロジェクトを作成する
    • project build target は Google APIs (今回はLevel7を選択しました)
    • create activity
      MainActivity と入力しました
  • AndroidManifest.xml を修正する
    • Applicationの中に
      <uses-library android:name="com.google.android.maps" />
    • インターネットを使うので
      <uses-permission android:name="android.permission.INTERNET" />
  • MainActivity を修正
    • class MainActivity extends Activity
      class MainActivity extends MapActivity に修正
    • onCreate の中
      MapView mapView = new MapView(this,
                      "MAP KEY");
      this.setContentView(mapView);
  • MAP KEY を取得
    • http://code.google.com/intl/ja/apis/maps/index.html
    • 必要になるのがアプリに付ける署名のフィンガープリント
    • フィンガープリントの取得
      • keytool -list -keystore /Users/macuser/.android/debug.keystore
      • これは Mac の場合の記述です。赤文字の部分は自分の環境にあわせてください。
      • パスワードを要求されますが、デバッグキーのためパスワードは未入力でエンターキーを押しました。
      • 証明書のフィンガープリント (MD5): **:CD:**:76:**:F0:**:5E:**:0C:**:5C:**:19:**:83
      • (MD5):より後ろの文字列を上記サイトで入力すると Maps API Key を取得できます。
      • (フィンガープリントなので伏せ字にしなくてもよさそうですけど・・・誤解が内容に伏せ字にしてます)
      •  MAP KEY を取得したキーに置き換えれば完成
けっこうあっさりとできました。
アプリを公開するときは、MAP KEY を公開用の署名で取得したものに置き換える事を忘れないようにします。まずは、アプリ開発のときはデバッグキーで MAP KEY を取得するのがいいと思います。

デバッグキーの場所を調べる方法
Eclipse の Windws > Preferences > Android > build 
default debug keystore に場所が記載されています。

私の場合は、他のPCでも同じキーを使用したいので、Custom debug key store を使用しています。

とりあえず簡単に地図を表示させる事ができました。

コメント

このブログの人気の投稿

Android ロックアプリを作る -調査編 -

Android 端末のスクリーンがOFFになると端末がロックされて、
スクリーンがONになるとロック画面が表示されます。

ロック画面は指の軌跡かパスワードを入力することで解除できます。

このロック画面をアプリとして作ってみたいと思い調査を始めることにしました。

調査の方針としては


色々なロックアプリをダウンロードしてみる。それぞれのパーミッションを見てみる。

という感じです。


色々なアプリをダウンロードしてみる。

まずはロックアプリ特集とかを探してみます。

Google 先生に聞いてみよう > Android ロックアプリ
結構出てきますね。


WidgetLocker LockscreenLockBot ProFロックスクリーン



それぞれのパーミッションを見てみる。

WidgetLocker Lockscreen



android.permission.VIBRATEandroid.permission.DISABLE_KEYGUARDandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.EXPAND_STATUS_BARandroid.permission.GET_TASKSandroid.permission.REORDER_TASKSandroid.permission.SET_PREFERRED_APPLICATIONSandroid.permission.WRITE_SETTINGSandroid.permission.WAKE_LOCKandroid.permission.CALL_PHONEandroid.permission.READ_SYNC_SETTINGSandroid.permission.GET_ACCOUNTSandroid.permission.READ_LOGSandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATEcom.android.vending.CHECK_LICENSE
LockB…

携帯電話、タブレットの判定にピクセルではなくインチを使う

色々な案件に関わっていると、スマートフォンなのかタブレットなのかの判定をするためにピクセルを使用しているソースを見ることが多くあります。

幅、高さのそれぞれのピクセル数がある値を超えたらタブレットと判定する。


これはだめですよね

HTC j butterfly  はタブレットと判定されることが多くあります。




ディスプレイは約5インチ
w x h : 1080px x 1920px

5インチなので画面サイズが大きいということでタブレットという判定でもいいかもしれない・・・と思ったりしますが7インチ以上をタブレットと判定したい。。。




ピクセル数は画面のサイズ(インチ)とは違います。1080px x 1920px は5インチであるとは限りません。

i9220++ スマートフォン Android 4.0 3G GPS 5.2 インチ800万画素携帯(ブラック)

5.2インチ 画面解像度:960 x 540 pixels QHD screen


HTC j butterfly よりも画面サイズ(インチ)は大きいけれど、ピクセル数は少なくなってます。


ピクセル数で判定するのではなく、インチで判定したほうが正確ですね。



プログラムで画面サイズ(インチ)を計算してみましょう。

ディスプレイ情報を取得する ピクセル数(width, height)を取得するdpi (xdpi, ydpi) を取得する1インチあたりのピクセル数(dot per inch なのでドット数?) インチ(width, height) を計算する画面サイズ(インチ)を計算する
こんな流れになります。他に簡単に取得できる方法があれば教えていただけるとうれしいです。

Activity#onCreateに書きました

// ディスプレイ情報を取得する
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

// ピクセル数(width, height)を取得する
final int widthPx = metrics.widthPixels;
final int heightPx = metrics.heightPixels;

// dpi (xdpi, yd…

Mac の ターミナルから アプリをアンインストールする adb uninstall

ant uninstall でもいいんだけれど、ant プロジェクトじゃないこともあるのでメモ

adb uninstall パッケージ名
cVolume next をターミナルからアンインストールする場合
パッケージ名は jp.caldroid.cvolume40 なので

adb uninstall jp.caldroid.cvolume40
となる