Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LocationClient getLastLocation()返回null_Java_Android_Gps_Location - Fatal编程技术网

Java LocationClient getLastLocation()返回null

Java LocationClient getLastLocation()返回null,java,android,gps,location,Java,Android,Gps,Location,我是Android编程新手,想先创建一个非常基本的应用程序,在屏幕上显示当前位置的纬度和经度 我正在为我的三星Galaxy S3开发,并阅读了您需要的内容 我已经尝试在LocationManager上的requestLocationUpdates()方法调用的onConnected()方法中执行此操作。但是,我发现LocationClient仍然返回null位置 谁能告诉我我做错了什么 以下是我的主要活动: import android.content.Context; import andro

我是Android编程新手,想先创建一个非常基本的应用程序,在屏幕上显示当前位置的纬度和经度

我正在为我的三星Galaxy S3开发,并阅读了您需要的内容

我已经尝试在LocationManager上的
requestLocationUpdates()
方法调用的
onConnected()
方法中执行此操作。但是,我发现LocationClient仍然返回
null
位置

谁能告诉我我做错了什么

以下是我的主要活动:

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.location.LocationClient;

public class MainActivity extends FragmentActivity implements
        GooglePlayServicesClient.ConnectionCallbacks,
        GooglePlayServicesClient.OnConnectionFailedListener {

    private LocationClient mLocationClient;
    private Location mCurrentLocation;

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

        mLocationClient = new LocationClient(this, this, this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        mLocationClient.connect();
    }

    @Override
    protected void onStop() {
        mLocationClient.disconnect();
        super.onStop();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

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

    @Override
    public void onConnected(Bundle arg0) {
        Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
        LocationManager manager = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
        manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
                new LocationListener() {
                    @Override
                    public void onStatusChanged(String provider, int status,
                            Bundle extras) {
                    }

                    @Override
                    public void onProviderEnabled(String provider) {
                    }

                    @Override
                    public void onProviderDisabled(String provider) {
                    }

                    @Override
                    public void onLocationChanged(final Location location) {
                    }
                });
        mCurrentLocation = mLocationClient.getLastLocation();

        TextView latTextView = (TextView) findViewById(R.id.latitude_text);
        latTextView.setText(Double.toString(mCurrentLocation.getLatitude()));

        TextView longTextView = (TextView) findViewById(R.id.longitude_text);
        longTextView.setText(Double.toString(mCurrentLocation.getLongitude()));
    }

    @Override
    public void onDisconnected() {
        Toast.makeText(this, "Disconnected. Please re-connect.",
                Toast.LENGTH_SHORT).show();
    }

}
我的Android清单如下所示:


运行调试器时,我发现调用
mLocationClient.getLastLocation()
后,mCurrentLocation为null


我将非常感谢任何帮助

mLocationClient.getLastLocation()可能返回null。如果你读了它,它会说

它返回当前可用的最佳最近位置。
如果某个位置不可用(这种情况应该很少发生),将返回null

此外,在
onLocationChanged
方法中,当位置发生更改时,您可能希望将位置设置为最新位置

@Override
public void onLocationChanged(final Location location) {
      mCurrentLocation = location;
}

就是这样-我没有保存任何最后的位置。前几天我换了一台S3,完全忘了我没有使用定位服务。只需点击谷歌地图即可设置GPS,现在一切正常:)。谢谢@阿努沙马改变了它。谢谢你的评论。@Shobhit你能建议在这种情况下的解决方法吗?我是说我们应该怎么处理这个案子?@SarahTattersall你能分享你的解决方案吗?getLastLocation()从哪里获取位置坐标?来自设备?如果是这样,我可以知道设备如何获得坐标吗?
@Override
public void onLocationChanged(final Location location) {
      mCurrentLocation = location;
}