Java LocationClient getLastLocation()返回null
我是Android编程新手,想先创建一个非常基本的应用程序,在屏幕上显示当前位置的纬度和经度 我正在为我的三星Galaxy S3开发,并阅读了您需要的内容 我已经尝试在LocationManager上的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
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()如果设备没有保存任何最后位置,则code>可能返回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;
}