2016-05-08 21 views
-1

私はmanager.requestLocationUpdates("gps", 1000, 0, new LocationDetector());を毎秒ごとに更新するために使用しています。しかし、この方法は決してonLocationChanged()メソッドをトリガーしていません。私は何度も自分のアプリケーションを実行していますが、アップデートを受けるまでに最大30分待つことも試みましたが、Androidモニターにアップデートは表示されていません。私はまた、オンになっている私のデバイスのGPSをダブルチェックしました。ですから、何が問題になるか教えてください。onLocationChanged()はrequestLocationUpdate()によってトリガされることはありません - Android

コード:

public class LocationDetector implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     Log.d("GPS: ", location.getLatitude()+ ", " +location.getLongitude()); 
    } 

出力: enter image description here

+0

onLocationChanged()関数は、場合にのみ、あなたの場所の変更呼び出されます。これを引き起こすためにあなたの立場を変えようとしましたか? –

+0

https://www.genymotion.com/を使って模擬場所を与え、 'onLocationChanged()'関数をテストするために物理的に移動する必要はありません –

+0

'requestLocationUpdatesの中で' minimum distance = 0'を設定しました() 'は、場所の変更が0メートルであっても、1秒後に更新が生成されることを意味します。 @ Chepe77 –

答えて

0

また、これはあなたに頼まthis questionの複製、です。いずれにせよ、あなたはGoogleAPIClientを使用して試みることができる - このように:

/** 
    * Helper method to connect the Google API Client 
    */ 
    private void connectGoogleAPIClient() { 
     googleApiClient = new GoogleApiClient.Builder(context) 
           .addApi(LocationServices.API) 
           .addConnectionCallbacks(this) 
           .addOnConnectionFailedListener(this) 
           .build(); 
     googleApiClient.connect(); 
    } 

あなたはまた、あなたが追加した行う必要があります。googleApiClientは、このようないくつかのヘルパーメソッドでインスタンス化され、接続され

LocationRequest locationRequest = LocationRequest.create(); 
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    locationRequest.setInterval(60000); // update every (1) minutes    
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,locationRequest, yourLocationDetector); 

許可:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

あなたの問題はone discussed hereに関連するかもしれない - そうしてくださいまた、そこで選択された答えを見て、あなたのケースにも役立たないかどうかを確認してください。

0

これは典型的なロケーション要求がどのように見えるかです:

注:私はActivityからこれを呼び出すので、私は、パラメータとしてActivityを持っています。私のutilクラスにあります。

public static void getLocation(Activity activity) { 
    final LocationListener locationListener = new LocationListener() { 
     @Override 
     public void onProviderEnabled(String provider) { 
      Log.i(TAG, "onProviderEnabled"); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      Log.i(TAG, "onProviderDisabled"); 
     } 

     @Override 
     public void onLocationChanged(Location location) { 
      Log.i(TAG, "onLocationChanged"); 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      Log.i(TAG, "onStatusChanged"); 
     } 
    }; 

    final LocationManager locationManager = (LocationManager) appContext.getSystemService(Context.LOCATION_SERVICE); 
    final Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    criteria.setCostAllowed(false); 
    criteria.setAltitudeRequired(false); 
    criteria.setBearingRequired(false); 
    criteria.setSpeedRequired(false); 

    activity.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      locationManager.requestLocationUpdates(1000, 0, criteria, locationListener, null); 
     } 
    }); 
} 

EDIT:@ishmaelMakitlaのような は

には、次の権限を持っていることを確認し、言った:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
関連する問題