0

インテント サービスで NmeaListener を使用しました。

問題 - onNmeaReceived が呼び出されることはありません。

//This is a reference code 

 public class NMEAService extends IntentService {

   private static NMEAListener listener;

   // This function would be called from onHandleIntent
    protected void getNMEA() {
    listener = new NMEAListener();
    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0,        
    listener,Looper.myLooper());
    lm.addNmeaListener(listener);
   }


  private class NMEAListener implements NmeaListener{

     @Override
     public void onNmeaReceived(long timestamp, String nmea) {
        // NMEA Received
        // This is never getting called
        }

     @Override
      public void onLocationChanged(Location location) {
      // This is getting called
      }

     @Override
     public void onProviderDisabled(String provider) {
     // TODO Auto-generated method stub
     }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }


      }
    }  
4

1 に答える 1

1

まず、getNMEA()メソッドを呼び出すことはありません。

第二に、何もオーバーライドしていないため、@Overrideメソッドの注釈が失敗するため、コードはコンパイルされません。onLocationChanged()

3 つ目は、 anが戻るとIntentService消えることですonHandleIntent()。その後、Android はプロセスを終了し、リスナーを連れて行きます。からリスナーを登録しないでくださいIntentService。通常のを使用してくださいService

第 4 に、一部のデバイスでは動作するが他のデバイスでは動作しない、addNmeaListener() 信頼性がないように見える。動作することがわかっている NMEA コードを見つけて試してみて、デバイスがそれで動作するかどうかを確認します。

于 2013-05-27T13:42:58.273 に答える