エミュレータがLocation Controlsからの位置情報送信に反応しなくなる

1,602 views
Skip to first unread message

nobu

unread,
Jun 4, 2009, 2:24:22 AM6/4/09
to Android-SDK-Japan
こんにちは。近藤です。

エミュレータのGPS機能について質問があります。

下記サイトで記載されている、GPS+Google Mapsのコードを試しています。
※日本Androidの会勉強会資料より

http://android.siprop.org/index.php?%CA%D9%B6%AF%B2%F1%2FGPS

テストで、Emulator ControlのLocation ControlsからManualで位置情報を送信
(Sendボタン押下)しています。
ところが、この送信を3~5回程実行すると、エミュレータが反応しなくなります。
アプリケーションを再起動すると反応するようになりますが、また3~5回程実行
すると反応がなくなります。

Logを仕掛けて調べてみたところ、onLocationChangedイベントが発生していない
事がわかりました。

同様の現象を確認されている方、対処方法をご存知の方がいらっしゃいましたら
アドバイスをお願い致します。

■環境
Windows XP SP3
Eclipse 3.4
J2SDK 1.5.0_15
Android SDK 1.5 R1

以上

Hideo Kinami

unread,
Jun 5, 2009, 8:38:41 AM6/5/09
to android-...@googlegroups.com
木南です。

すみませんが、僕のところでは起きていないので、あまりヒントにはならないかもしれませんが、何点か、確認のポイントを書いてみます。

1) LogCatメニューを見て、エラーが発生していないか確認する。

 通常で動作しているときと、エラーで動かなくなった前後にエラーが発生していないか確認します。地図などを表示していると、ネットワークの接続エラーなどが発生している場合があります。エラーが発生していたら、そのエラーの発生原因を確認します。

2) 自分が作成したアプリの処理が影響しているかを調べる。

まずは、自分の書いたコードが原因なのか、環境設定などの問題なのかを切り分けるために、onLocationChangedのリスナー登録以外の処理をコメントアウトしてみます。onLocationChangedに、ログ出力だけを入れて、再現するか見てみます。

# もしかすると、サンプルのコードが間違えているかもしれません(ごめんなさい)。

3) 標準のアプリでも同じ現象が発生するかみてみる

 標準で添付されている地図アプリのメニューで、My Locationを選択して、地図が移動するか確認する

このあたりの条件が分かると、もう少し、別の観点で答えが出てくるかもしれません。

では!
--
Hideo


2009/06/04 15:24 に nobu<mini...@gmail.com> さんは書きました:
--
木南 英夫 (http://d.hatena.ne.jp/hkinami/)

nobu

unread,
Jun 7, 2009, 11:03:36 AM6/7/09
to android-...@googlegroups.com
木南さん

お世話になります。近藤です。
以下、インラインで失礼します。

> 1) LogCatメニューを見て、エラーが発生していないか確認する。
>
> 通常で動作しているときと、エラーで動かなくなった前後にエラーが発生していないか確認します。地図などを表示していると、ネットワークの接続エラーなどが発生している場合があります。エラーが発生していたら、そのエラーの発生原因を確認します。

エラーログをみてみると、 実行時に「MapActivity Couldn't get connection factory client」という
エラーが出ています。これは標準のMapアプリケーションを実行した際にも発生しているので、
問題ないのかな?と思っています。その他は実行時にエラーは出ていません。


> 2) 自分が作成したアプリの処理が影響しているかを調べる。
>
> まずは、自分の書いたコードが原因なのか、環境設定などの問題なのかを切り分けるために、onLocationChangedのリスナー登録以外の処理をコメントアウトしてみます。onLocationChangedに、ログ出力だけを入れて、再現するか見てみます。

日本Androidの会のサンプルのonLocationChangedイベントでログ出力だけしてみましたが、
3回目以降イベントが発生していません。(ログが出力されない)

確認方法としては、以下の通りです。

1.アプリケーションを実行する。(EclipseからRun)
2.DDMSのEmulator Control.Location Controlsで、座標を入力してSendボタンを押下
 ->onLocationChangedイベントが発生(ログがDDMSのLogCatに出力される)
3.DDMSのEmulator Control.Location Controlsで、座標を変更してSendボタンを押下
 ->onLocationChangedイベントが発生(ログがDDMSのLogCatに出力される)
4.DDMSのEmulator Control.Location Controlsで、座標を変更してSendボタンを押下
 ->onLocationChangedイベントが発生しない(ログがDDMSのLogCatに出力されない)
※以降座標変更(Sendボタン押下)してもイベントが発生しない


> 3) 標準のアプリでも同じ現象が発生するかみてみる
>
> 標準で添付されている地図アプリのメニューで、My Locationを選択して、地図が移動するか確認する
>
> このあたりの条件が分かると、もう少し、別の観点で答えが出てくるかもしれません。

2)と同じで、1回目、2回目の座標送信(上記確認方法の2.,3.)では、Sendボタンを押下のタイミング
で地図の移動(再描画)が発生しました。ところが3回目の座標送信(上記確認方法の4.)を実行し
た際には地図の移動が発生しません。その後でMy Locationを押下すると座標が移動します。


私が作成したMapアプリ、標準の地図アプリで私が勘違いしているかもしれないので確認させて
下さい。

■確認1
標準の地図アプリでも、DDMSから位置情報をSendと送信した場合、その度にエミュレータ上
の地図が動くと思っています。(日本Androidの会のサンプルもそういうものだと認識しています)
実は、この認識が間違っていますでしょうか?

標準の地図アプリでもMy Locationを押下・処理を実行することで位置情報を取得・再描画して
いるように見えます。私のやりたいことは、一定時間毎(例えば1秒に1回)に位置情報を取得
したいと思っています。(プログラム的には、Timerで位置情報の取得を実行するイメージ)

■確認2
標準の地図アプリのMy Locationを押下した際にどういう処理を実行しているのか知りたいと
思っています。ソースがあればと思うのですが、このアプリケーションのソースがどこからか
入手できないものでしょうか?

以上、よろしくお願い致します

追伸.
環境面の問題も疑い、Java、Andorid SDKをバージョンアップしました。

■環境
Windows XP SP3
Eclipse 3.4
J2SDK 1.6.0_14
Android SDK 1.5 R2

Hideo Kinami

unread,
Jun 7, 2009, 6:53:08 PM6/7/09
to android-...@googlegroups.com
木南です。

とりいそぎ、確認事項だけ。

> ■確認1
> 標準の地図アプリでも、DDMSから位置情報をSendと送信した場合、その度にエミュレータ上
> の地図が動くと思っています。(日本Androidの会のサンプルもそういうものだと認識しています)
> 実は、この認識が間違っていますでしょうか?

間違えていません。DDMSから位置情報を送信すると、地図が動くというサンプルです。

> ■確認2
> 標準の地図アプリのMy Locationを押下した際にどういう処理を実行しているのか知りたいと
> 思っています。ソースがあればと思うのですが、このアプリケーションのソースがどこからか
> 入手できないものでしょうか?

地図アプリは、Googleアプリなので、ソースコードは公開されていないと思います。

ということで、もう少し、こちらでも調べてみます。

どなたか、このあたりの情報がある方、フォローをいただけると助かります。 > えきすぱーとさま

では!
--
Hideo

2009/06/08 0:03 に nobu<mini...@gmail.com> さんは書きました:

Makoto Anjo

unread,
Jun 8, 2009, 4:14:39 AM6/8/09
to Android-SDK-Japan
安生です。

実は、known issueです。
次のupdateでは直っているとのことです。

ただ、一応mock location providersを使用することで回避できなくもないようです。

http://groups.google.com/group/android-developers/browse_frm/thread/3f4c9d83ddcf5815/afb76cb94ab3c217?hl=en#afb76cb94ab3c217


On Jun 8, 7:53 am, Hideo Kinami <hkin...@gmail.com> wrote:
> 木南です。
>
> とりいそぎ、確認事項だけ。
>
> > ■確認1
> > 標準の地図アプリでも、DDMSから位置情報をSendと送信した場合、その度にエミュレータ上
> > の地図が動くと思っています。(日本Androidの会のサンプルもそういうものだと認識しています)
> > 実は、この認識が間違っていますでしょうか?
>
> 間違えていません。DDMSから位置情報を送信すると、地図が動くというサンプルです。
>
> > ■確認2
> > 標準の地図アプリのMy Locationを押下した際にどういう処理を実行しているのか知りたいと
> > 思っています。ソースがあればと思うのですが、このアプリケーションのソースがどこからか
> > 入手できないものでしょうか?
>
> 地図アプリは、Googleアプリなので、ソースコードは公開されていないと思います。
>
> ということで、もう少し、こちらでも調べてみます。
>
> どなたか、このあたりの情報がある方、フォローをいただけると助かります。 > えきすぱーとさま
>
> では!
> --
> Hideo
>
> 2009/06/08 0:03 に nobu<minin...@gmail.com> さんは書きました:
> >> 2009/06/04 15:24 に nobu<minin...@gmail.com> さんは書きました:

nobu

unread,
Jun 9, 2009, 9:55:59 AM6/9/09
to Android-SDK-Japan
安生さん

近藤です。ご回答ありがとうございます。
既知のバグですか。次のバージョンを待った方がよさそうですね。
(次のリリースっていつだろう?)

試しに仮想デバイスを1.1で作成し、標準の地図アプリで試してみたところ、
DDMSからの位置情報変更に応じて何回でも地図が動いてくれました。

今日は試せませんが、Androidの会の地図サンプルを1.1で再度作りなおしてみます。
※1.5で作成した地図アプリのソースを1.1のプロジェクトにコピーしたところ、エラーが
 でて取れなくなってしまいましたもので・・・。


On 6月8日, 午後5:14, Makoto Anjo <tennet...@gmail.com> wrote:
> 安生です。
>
> 実は、known issueです。
> 次のupdateでは直っているとのことです。
>
> ただ、一応mock location providersを使用することで回避できなくもないようです。
>
> http://groups.google.com/group/android-developers/browse_frm/thread/3...
Reply all
Reply to author
Forward
0 new messages