Android で GPS の位置を受信する場合、LocationListener というインターフェースを渡して位置が受信できるのをジッと待つわけです。Android での GPS の使い方はググるといっぱいでてきますもんね。
で、LocationManager.onStatusChanged というメソッドがあって、例えば屋内とかで、受信できずにあきらめた場合、こいつが呼び出されるのかと思いきや、期待したようなタイミングで受信してくれません。
結局自力でタイムアウト処理を書いて GPS を止めるハメになるのですが、いつも同じ処理を書くのが面倒なので、共通っぽいクラスにしてみました。
gist 777790
LocationListener の代わりにこの TimeoutableLocationListener をセットします。いつもと違うのは以下の2箇所です。
interface じゃなくなっちゃったので、ちょっと不自由ですが、まあ使えるのではないかと思います 。