20

これは何度も尋ねられた質問ですが、常に機能する解決策を見つけることができませんでした.

Fused ロケーション プロバイダーを使用してアプリケーションを開発しています。このonConnected()メソッドでは、位置の更新を要求しています。位置修正が生成されonLocationChanged()て呼び出されると、アプリケーション ロジックが開始されます。(以下の私のコードを参照してください)。

問題 onLocationChanged()のメソッドは、一部のデバイスでは呼び出されません。テストには Samsung Tab 2 と Samsung Galaxy Grand を使用します。このコードは、Tab 2 では問題なく機能しますが、Grand では機能しません。動作しないということlocationClientは、接続されるがonLocationChanged()呼び出されないことを意味します。

以前、場所を取得するために場所マネージャーを使用しましたが、その実装でも同じ問題が発生しました。そのため、融合されたロケーション プロバイダーを実装しようとしましたが、それでも同じ問題が発生します。

誰でもこの問題で私を助けることができますか? 私がここに欠けているものはありますか?

public class MainActivity extends Activity implements GooglePlayServicesClient.ConnectionCallbacks, OnConnectionFailedListener, LocationListener {

LocationClient locationclient;
LocationRequest lr;
Location loc1;
static String address;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     

    locationclient = new LocationClient(this,this,this);
    locationclient.connect();        

}

@Override
public void onConnected(Bundle arg0) {
    // TODO Auto-generated method stub

    lr=LocationRequest.create();
    lr.setInterval(100);
    locationclient.requestLocationUpdates(lr, this);
    Log.d("LocationClient","On Connected");
}

@Override
public void onDisconnected() {
    // TODO Auto-generated method stub
    locationclient.disconnect();

}

@Override
public void onConnectionFailed(ConnectionResult arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onLocationChanged(Location loc) {
    // TODO Auto-generated method stub      

    // Application Logic        

    Log.d("LocationClient","Last Known Location LC:" + loc.getLatitude() + "," + loc.getLongitude());
}
}
4

7 に答える 7

0

if (loc == null) をテストして、渡された場所を取得しているかどうかを確認します。同じプロバイダーであっても、1 つのデバイスが null に戻って爆撃している可能性があり、その結果、起動していないように見えます。

于 2013-08-07T17:17:59.000 に答える
0

更新間の最小距離と最小時間の両方のパラメーターを 0 に設定することで、これを解決しました。

于 2013-08-14T09:36:01.867 に答える
-1

ここでこのコードをチェックしてください...

public class MyActivity extends Activity implements LocationListener {
double destLat, destLong;

LocationManager locationManager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    destLat = location.getLatitude();
    destLong = location.getLongitude();
}

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

}

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

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}
于 2014-12-06T11:11:22.660 に答える