2011年3月7日月曜日

Android エミュレータが圏外状態になる問題(解決?)

Android エミュレータの電波強度が圏外になってしまうという現象が時折発生し、困っていた。エミュレータ内の設定画面をいろいろ操作しても問題が解決しなかった。問題解決方法を求めて長いことネットを検索していたところ、次のページを見つけた。

Get "No Service" on Android Emulator
http://stackoverflow.com/questions/3098923/get-no-service-on-android-emulator

そのページには「Android エミュレータの電波強度が圏外になってしまう」件について質問があり、それに対する回答の一つに次のようなものがあった。

I ran into this exact problem tonight. My research showed that the emulator tries to connect to the first network adapter it can find. Success or failure is all based on that first adapter. For me, I had a VPN with a name that started with A. I renamed it to "VPN" so that it was below the "Local Network" adapter, restarted the emulator and voila! it worked.

Silly? Yes. Stupid? Yes. Works? Yep.

要点は、「Android エミュレータを動かしているマシンに VPN の設定があり、その名前が、アルファベット順に並べたときに『Local Network』よりも先に来るものだった場合、圏外問題が発生することがある」というものだ。回答者は、名前を(アルファベット順で並べたときに「Local Network」よりも後にくる)「VPN」に変更したら問題が解決した、と言っている。

私の環境にも、アルファベット順に並べた時に「Local Network」よりも前に来る VPN の名前があった。ただ、その名前を変更しなくても、エミュレータを使うときにその VPN を使用していなければ圏外問題は発生しないように見える。そのため、エミュレータが圏外状態になったときは、もし VPN が動いていれば止めて、それでも圏外状態から復帰しなければエミュレータを起動し直す、などとしている。これが正しい問題解決方法なのかどうか分からないが、上記の回答を見つけて VPN に対して注意を払うようになって以降、Android エミュレータの圏外問題で悩むことはなくなった。