Android キーストア・ファイルは存在しません

Android

Androideで現在位置などを取得・表示するために、Google Mapsを利用するためにはAndroid Maps API Key をGoogle社から取得する必要があります。

Sign Up for the Android Maps API

そのためには、開発環境であれば開発環境の証明書のフィンガープリントが必要です。

そのためには、たとえば私はWindwsXPで開発していますがEclipseのPreference→Android→BuildのDefault debug keystoreに記載してあるパスがDefault debug keystoreのはずなので、下記のようにコマンドプロンプトから入力して、フィンガープリントを取得しようとしてみました。

C:\Program Files\Java\jre7\bin>keytool -list -keystore “C:\Documents and Setting
s\Username\.android\debug.keystore”

すると、

keytoolエラー: java.lang.Exception: キーストア・ファイルは存在しません
って出ちゃうんです。

普通にExplorerでたどってみても、確かにない!
えー と検索で調べてみても、わかりません。

キーストアファイルをリストするようにコマンドを変更してみても

keytoolエラー: java.lang.Exception: キーストア・ファイルは存在しますが、空です:

となってしまいます。

と、気を取り直してプロジェクトをAVDで起動してみたところ、なんとdebug.keystoreができました![smile]
無事にフィンガープリントも取得できました。

むー、一度もAVDを動作させてない開発環境だったので、debug.keystoreファイルができてなかったんですね。

1時間ぐらい無駄にしちゃいました。[sad]

Android エラー error invalid symbol ‘continue’

Android

Android エラー error invalid symbol ‘continue’

Androidのレイアウトファイルに、下記のように書き、

 <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:src="@drawable/continue" />

drawableにcontinue.pngを入れていたところ
Consoleに

 error: invalid symbol: 'continue'

と出て、ビルドできなくなってしまいました。

答えがこちらのサイトにあり
http://stackoverflow.com/questions/7850069/error-in-strings-xml-invalid-symbol-continue

continueはJavaの予約語だからオブジェクトの名前に使っちゃいけないってことでした。

あ、そう。そういうのあったね…(´ω`)

という感じです。

bt_continue とかに名前を変更したら解決です。

Android エラー Application package ‘AndroidManifest.xml’ must have a minimum of 2 segments.

Android

Android SDK Platform 4.0.3

Android次のようなエラーがコンソールに出る時は

 Application package 'AndroidManifest.xml' must have 
 a minimum of 2 segments.

パッケージ名が2つのセグメントに分かれていないからです。

2つのセグメントに分かれる、というのは何か?というと

hogehoge

とかいうパッケージ名ではなく

hoge.hoge

のようにコンマで区切りましょうね!ということです。

Android アプリ開発 今どのぐらいの速度で動いているか

Android

Android アプリ開発 今どのぐらいの速度で動いているか

たとえば車の時速などをはかりたい時です。
最初は加速度センサーでやるのかと思っていましたが、加速度センサーだと取れる値が細かすぎます。

GPSを利用した、速度を計算する方法があるので、そちらの方が大まかな速度を取得する場合は簡単でしょう。

具体的にはLocationクラスのgetSpeed()関数を利用します。

http://developer.android.com/reference/android/location/Location.html#getSpeed%28%29

こんな感じです。

 //速度
 boolean has_speed;
 float speed;
 
 Location location = mgr.getLastKnownLocation(best);
 has_speed = location.hasSpeed();
 		
 if(has_speed){
    speed = location.getSpeed();
 }

ちなみに、これで取得できるのは秒速何メートルか、です。

Android アプリがアンインストールされた時の動作

Android SDK ver 16

Android アプリがアンインストールされた時の動作

アプリがアンインストールされた時、それをそのアプリが検知して、アプリ側で何かをしたい、という場合があるかと思います。

残念ながら、アプリがアンインストールされたことを、他のアプリが感知する方法はあります。

 ACTION_PACKAGE_REMOVED 

がブロードキャストされる

http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REMOVED

しかし、そのアプリ自体が何かをする、というのは今のところ難しいようです…。