2012-02-16 2 views
2

私は奇妙な問題を抱えており、これを理解しようと多くの時間を費やしています。 AndroidマーケットのNFC Checkinアプリでは、Foursquare検索を行うためにユーザーの場所にアクセスしています。そう、Android LocationListener.onLocationChangedは決して呼ばれません

  Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_MEDIUM); 

     String providerName = locationManager.getBestProvider(criteria, true); 


     Location loc = locationManager.getLastKnownLocation(providerName); 

     showSearchUI(); 
     if (loc.getTime() > (new Date().getTime() - 1000*2*60)) //2Minutes back 
     { 
      Log.d("demo", "LastKnownLocation is good enough, using this location!"); 
      startVenueSearch(loc); 
     } 
     else 
     { 
      Log.d("demo", "Requesting network location updates..."); 
      locationManager.requestLocationUpdates(providerName, 0, 0, this); 
     } 

活動LocationListenerインターフェイスを実装しています: -

だから、ここで私は(今私はAAギャラクシーネクサス上で、まだアンドロイド4.0.2上で同様のコードが前に働いている)何をすべきか大体ですここにonLocationChangedメソッドがあります:

@Override 
public void onLocationChanged(Location location) { 
    locationManager.removeUpdates(this); 
    Log.d("demo", "Got fresh location, beginning... " + location.getLatitude() + "/" + location.getLongitude()); 
    //fake hybris 
    //location.setLatitude(48.150098d); 
    //location.setLongitude(11.546026d); 

    startVenueSearch(location); 

} 

問題:単に場所の更新を取得しません。私はちょうどハッキングし、コードをNetworkProviderへの直接呼び出しからプロバイダの条件ベースの検索に変更しましたが、それでも機能しません。誰でも?

+0

解決方法を見つけましたか? – 4gus71n

答えて

0

requestLocationUpdatesを呼び出さないたびに最初のif条件に当てはまる場合は、これはリスナーを登録するもので、ロケーションの更新を取得します。両方の方法でアップデートを登録するか、またはどちらかの条件に関係なく呼び出されるように解凍してください。LocationListenerが現在のインターフェースであるため、問題が発生する可能性があります。

2

@Overrideが問題になる可能性があります。お試しください

public class MyLocationListener implements LocationListener{ 
    public void onLocationChanged(Location location) { 
     Toast("onLocationChanged"); 
    } 

    public void onProviderDisabled(String provider) { 
     Toast("onProviderDisabled"); 
    } 

    public void onProviderEnabled(String provider) { 
     Toast("onProviderEnabled");   
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Toast("onStatusChanged"); 
    }  
} 
関連する問題