2016-09-12 4 views
0

私は、GPS位置情報更新を使用するアプリケーションをテストしようとしています。私はデバイスの場所を嘲笑して、私はGPS信号を得ることができないときに屋内で作業しようとしています。私はチュートリアルhereに従っていたが、私のアプリが動いても、それはまだどんな場所の更新も受けていない。アンドロイドデバイスの位置を戸惑う

私のコードで何が間違っているのか誰にも気付くことができますか?

 MockLocationProvider mock = new MockLocationProvider(LocationManager.GPS_PROVIDER, this); 
     mock.pushLocation(-12.34, 23.45); 

     LocationManager locMgr; 

     locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    } 

    @Override 
    public void onLocationChanged(Location Loc) { 
     double lat = Loc.getLatitude(); 
     double lon = Loc.getLongitude(); 
     String l = "Longitude: " + lon + " Latitude: " + lat; 
     Toast.makeText(getApplicationContext(), l ,Toast.LENGTH_SHORT).show(); 
    } 


public class MockLocationProvider { 
     String providerName; 
     Context ctx; 

     public MockLocationProvider(String name, Context ctx) { 
      this.providerName = name; 
      this.ctx = ctx; 

      LocationManager lm = (LocationManager) ctx.getSystemService(
        Context.LOCATION_SERVICE); 
      lm.addTestProvider(providerName, false, false, false, false, false, 
        true, true, 0, 5); 
      lm.setTestProviderEnabled(providerName, true); 
     } 

     public void pushLocation(double lat, double lon) { 
      LocationManager lm = (LocationManager) ctx.getSystemService(
        Context.LOCATION_SERVICE); 

      Location mockLocation = new Location(providerName); 
      mockLocation.setLatitude(lat); 
      mockLocation.setLongitude(lon); 
      mockLocation.setAltitude(0); 
      mockLocation.setTime(System.currentTimeMillis()); 
      mockLocation.setElapsedRealtimeNanos(System.currentTimeMillis()); 
      mockLocation.setAccuracy(2); 
      lm.setTestProviderLocation(providerName, mockLocation); 
     } 

答えて

0

コードが場所の更新を待ち受けている間に、同時に場所をモックする必要があります。

あなたの場合、pushLocationメソッドを呼び出すたびにonLocationChangedメソッドが起動されます。 GPS

@Override 
public void onLocationChanged(Location Loc) { 
    double lat = Loc.getLatitude(); 
    double lon = Loc.getLongitude(); 
    String l = "Longitude: " + lon + " Latitude: " + lat; 
    Toast.makeText(getApplicationContext(), l ,Toast.LENGTH_SHORT).show(); 
} 

はそれを

Handler mHandler = new Handler(); 
public void loopMock(){ 
    mHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // onLocationChanged method will be fired 
      mock.pushLocation(-12.34, 23.45); 
      mHandler.postDelayed(this, 1000); 
     } 
    }, 1000); 
} 
をシミュレートするため

はリスニング

関連する問題