• ベストアンサー

TimeOutの処理

Androidで定期的にGPSを取得するというプログラムを作成しています。 このGPSなのですが、電波状況が悪いと長時間取得しにいったままになりますし、取得出来ない場合、そのまま終わってしまいます。 できればGPSを取得しに行って、10秒取得が出来なかったらTimeOutとしてエラーの処理を実行したいのですが、どのように実装すればいいのでしょうか?Webを探しましたが、参考になりそうなものが見つけられませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

そうですね、別にスレッドを走らせ、10秒経過したところでLocationManagerをremoveUpdatesしてからスレッドを終了する、という感じでしょうか。LocationManagerそのものではできないと思いますので……。

rinet8223
質問者

お礼

解答ありがとうございます。 戴いたアドバイス通りに、TimeCount用の別スレッドを走らせて希望の処理を実現できました。 ありがとうございました。 同じ問題に当たった方の参考のためにコードを以下に残します。 private Timer locationTimer; private LocationManager mLocationManager; /** * GPS取得のTimeOutを処理するスレッド */ public void timeOutCount() {   mTimer = new Timer(true);   mTimer.schedule( new TimerTask(){     @Overrid     public void run() {       andler.post( new Runnable() {         public void run() {           //onLocationChangedをStopする(GPS取得中断)           mLocationManager.removeUpdates(listener);           //以下にTimeOut時に行いたい処理を書く           //スレッドを止める           mTimer.cancel();         }       });     }   },30000,10000); } //30秒でTimeOutとする //delayミリ秒あとにperiodミリ秒間隔でタスク実行 //ただしTimeOut処理のスレッドなので1回しか実行しない //periodを0秒にすると、エラーになるので便宜上10秒に設定 onLocationChangedが実行された場合、TimeOutのスレッドを停止する。 onLocationChangedの冒頭でmTimer.cancel();を実行。

関連するQ&A

専門家に質問してみよう