2012-03-19 16 views
2

現在、タイマーを使用して、ロケーションリスナーがタイムアウトしているかどうかを確認していますか?問題はGPSがオンのままであることです。私はなぜ、私はlocationListenerタイムアウトまたはより洗練されたメソッドをオーバーライドすることができるメソッドがあるのか​​分からないのですか?LocationListener timeout

+0

「場所のリスナーがタイムアウト」は何ですか?彼らは合理的な時間内に呼び出されないときは? – zapl

+0

はい...実際の場所を特定できない場合 – opc0de

+0

問題はあまり明確ではありません。それを明らかにする。 –

答えて

1

ロケーションマネージャにGPSステータスリスナーを追加することを検討してください。ステータスリスナーは、GPSが開始、停止、最初の修正を受信したとき、または衛星の状態(可視の衛星の数ではなく、少なくとも4つの修正が必要)が変わったときに通知されます。

リスナーは次のようになります。

class GpsStatusListener implements GpsStatus.Listener { 

    @Override 
    public void onGpsStatusChanged(final int event) { 
     switch(event) { 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_STOPPED: 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_FIRST_FIX: 
         // ... 
      break; 
     case GpsStatus.GPS_EVENT_SATELLITE_STATUS: 
         // ... 
      break; 
     } 
    } 
} 

次のようにそれが追加されます。

lm.addGpsStatusListener(new GpsStatusListener()); 

あなたは時にGPSステータスの変更場所のリスナーを削除する必要はありません。

あなたも、次のいずれかの方法をオーバーライドすることにより、ロケーションマネージャから追加情報を取得することができます。

public void onStatusChanged(final String provider, final int status, final Bundle extras) { 
    switch(status) { 
    case LocationProvider.AVAILABLE: 
       // ... 
     break; 
    case LocationProvider.OUT_OF_SERVICE: 
       // ... 
     break; 
    case LocationProvider.TEMPORARILY_UNAVAILABLE: 
       // ... 
     break; 
    } 
} 

@Override 
public void onProviderEnabled(final String provider) { 
       // ... 
} 

@Override 
public void onProviderDisabled(final String provider) { 
       // ... 
} 
+0

ケースを正確に取得すると、ケースLocationProvider.AVAILABLE、ケースLocationProvider.OUT_OF_SERVICE、ケースLocationProvider.TEMPORARILY_UNAVAILABLE、それが私の問題で私を助けてくれるかもしれないので、http://stackoverflow.com/questions/15747543/locationlistener-of- network-provider-is-enabled-but-onlocationchanged-is-never –

+0

それぞれのケースを記録し、LocationListener(NETWORK_PROVIDER)のonStatusChangedでそれぞれのケースのレポートを生成しますが、これは起きていません –

+0

これはハードウェアによって異なります。 GPSが衛星をもう見ることができない場合(例えば、建物に入るときなど)には、一時的に利用不可能な信号を得ることがあります。私はまだアウトオブサービス信号を見たことはありません。 – Stefan

0

タイムアウトが発生した場合、または現在の場所を取得した場合は、ロケーションリスナーを削除する必要があります。