Android デバッグ時に実機で偽の位置情報を利用する

Android

Android デバッグ時に実機で偽の位置情報を利用する

Android SDK 20

位置情報アプリを作る時、スマホを持って歩かないといけないと大変ですよね。

Androidのエミュレーターや実機でデバッグしている時に、エミュレーターであればDDMSを利用して、好きな位置情報を送信できます。
しかし、実機だとDDMSから偽の位置情報を送信することができません。
(私が使っているのはHTC S31HT)

マニフェストファイルで

 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 

とやっていても、これは変わりません。

なので、Location Spooferなどのフェイクの位置情報を利用するアプリを利用します。
https://play.google.com/store/apps/details?id=org.ajeje.fakelocation&hl=ja

将来的に、DDMSから操作できるようになるとうれしいですね。

Android エラー 「interface IInAppBillingService should be declared in a file」

Eclipse
Android

Eclipse **Android

 エラーコード interface IInAppBillingService should be declared in a file

IT初心者のHだ。
今日は、エラーコード、「interface IInAppBillingService should be declared in a file」について、解決方法を初心者のH、このHがお教えてやる。
みな、よ~く聞くように(゚д゚)(。_。)(゚д゚)(。_。)

まず、このエラーの意味だが、要するに「IInAppBillingService」のファイルが読み込めていないという事だ。
これを解決するには、「eclipse」の適当なファイル(プロジェクト)を右クリ⇒「new」⇒「Package」でファイル名を記載
その後、元々足りていなかったファイルをそのパッケージに入れて完了

以上だ。
これを見たものは、ただちに、「このページは役に立った」に投票を入れるんだぞ( ・`ω・´)
では、また教えにきてやるからな、しっかりチェックしておけ!!(☼ Д ☼)

Android エラー java.lang.NoClassDefFoundError com.google.android.gms.R$string

Android

Android エラー java.lang.NoClassDefFoundError com.google.android.gms.R$string

次のようなエラーで、アプリが落ちてしまうということがありました。
一部の端末だけで、起こる現象です。

 java.lang.NoClassDefFoundError: com.google.android.gms.R$string
 at com.google.android.gms.common.GooglePlayServicesUtil.c(Unknown Source)
 at com.google.android.gms.common.GooglePlayServicesUtil.getErrorDialog(Unknown Source)
 at com.google.android.gms.common.GooglePlayServicesUtil.getErrorDialog(Unknown Source)
 at smart.location.admin.AbstractActivity.onCreate(AbstractActivity.java:135)
 at smart.location.admin.MenuActivity.onCreate(MenuActivity.java:71)
 at android.app.Activity.performCreate(Activity.java:5104)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2272)
 at android.app.ActivityThread.access$600(ActivityThread.java:171)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:137)
 at android.app.ActivityThread.main(ActivityThread.java:5216)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:511)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
 at dalvik.system.NativeStart.main(Native Method)

google play serviceのライブラリも正しく読み込まれているのに、なぜ??
と思いきや、
「そういえば、最近 google play serviceでエラーが出てたので、ライブラリのパスをSDK内にあるライブラリに変更したんだっけ…」
と思い当たりました。

そう、公式ページにあるように
http://developer.android.com/google/play-services/setup.html#Setup

You should be referencing a copy of the library that you copied to your development workspace—you should not reference the library directly from the Android SDK directory.

SDKディレクトリの中にあるライブラリを直接参照してはいけないんですね(>_<) 自分のワークスペースなどに、コピペして移動させてから、参照すること!です。 コピペしたライブラリを読み込むようにしたら、治りました。 ちなみに、不具合のあった端末は 富士通ARROWS F-01F です。

Android CPUやメモリーの利用量について調べる

Android

DDMSを使ってAndroid CPUやメモリーの利用量について調べる

スマートフォンのアプリ開発は、限られたスマホのメモリーやCPUやバッテリーを使なるべき消費を抑えることも大切です。

端末の状態を調べるために、DDMSというツールをGoogleが配布してくれています。

基本については、公式サイトがやはりわかりやすいので、下記を読むことをお勧めします。
http://developer.android.com/tools/debugging/ddms.html

日本語での解説はヒープサイズやメモリのアロケーションなどについては下記もさらっとわかりやすいです。
http://techbooster.jpn.org/andriod/environment/1040/

しかし、System Informationという機能がDDMSについているのですが、これについてはあまり取り上げているサイトさんがありません・・・。
見ればわかるからかな?

さて、Galaxy S3aでこれを試してみます。

Systemi Informationというタブにいき、CPU Loadを選択して、Update from Deviceをクリックします。
まぁ、普通に言えば、CPUの使用をどのプロセスが割合を閉めているか?を表示してくれているんだ…と思います。

こんな感じです。
ddms_cpu_information.png

字が細かくなっているのでわかりにくいかとは思いますが、一番多くを占めているのはsystem_serverが13%ぐらいを占めています。

次は、com.google.googlequick.searchbox.searchというのがそこそこ?

これは、たぶんホーム画面に私が設置してる検索窓のウィジェットっぽいです。
えー、こんなに使っているのか・・・

しかし、次のcom.oss.mcamですが、なんと「無音カメラ」ってアプリのプロセスらしい。
別に起動している状態でもなく、バックグラウンドにいるのですが、5%以上はとってるっぽいです。
えー。

ためしに、無音カメラのプロセスを、タスク一覧(ホーム画面の長押しで出てくるアレです)から停止してみます。

すると、下記のように、com.oss.mcamはなくなり、Idleの割合が増えます。

ddms_cpu_information2.png

今度は、Memory usageを調べてみます。
CPU loadというところのプルダウンを下にすると、Memory usageというのが出ます。Update from Deviceをクリックします。

紫の部分は、Unknownが占めています・・・。
ddms_memory_usage2.png

ま、つまりCPUの状態とメモリーの利用量についてわかりますが、自分の作ったアプリの品質向上にあまり役立たないから誰も書いてないんですかね。。。?
私は結構面白いと思うんですが。

Android 2点間の距離を算出する

Android

Android 2点間の距離を算出する

Locationクラスを利用して、簡単に算出できます。
自分でごちゃごちゃ計算しなくてもAndroidでWGS84という測地系に沿った距離を算出してくれます。
そう、地球は丸いので、距離を出すのもちょっと難しいんですよね。

  • Location.distanceBetween(A地点緯度, A地点経度, B地点緯度, B地点経度, 値を格納しておく配列);

http://developer.android.com/reference/android/location/Location.html#distanceBetween(double, double, double, double, float[])