我正在开发一个应用程序,因为我只想在不连接互联网的情况下从gps获取纬度和经度。我尝试过,但在关闭wifi时无法获取纬度值0。如果打开wifi,我将获取正确的纬度值。是否有可能在不连接互联网的情况下仅从gps获取纬度值?
我的代码
public class MainActivity extends Activity implements LocationListener{
LocationManager locationManager ;
String provider;
private String strAdd;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_main);
// getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
// Getting LocationManager object
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// locationManager.requestLocationUpdates(provider, 10, 30, this);
if(location!=null){
onLocationChanged(location);
}
else{
Toast.makeText(getBaseContext(), "Location can't be retrieved",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onLocationChanged(Location location) {
// Getting reference to TextView tv_longitude
TextView tvLongitude = (TextView)findViewById(R.id.textView1);
// Getting reference to TextView tv_latitude
//TextView tvLatitude = (TextView)findViewById(R.id.tv_latitude);
// Setting Current Longitude
double lat = location.getLatitude();
double lng = location.getLongitude();
Log.e("LAT LNG", lat+lng+"");
tvLongitude.setText("LAT LNG:" + lat+lng);
// Setting Current Latitude
// tvLatitude.setText("Latitude:" + location.getLatitude() );
}
@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
}
}
是的,绝对的。
GPS无线电与互联网无关。有很多GPS设备没有互联网功能。相反,也有很多设备没有真正的GPS无线电,但仍然通过网络提供商提供位置信息。
如果使用GPS_PROVIDER和ACCESS_FINE_LOCATION,LONG 和 LAT 应来自 GPS 接收器,通常采用 NMEA 格式(协议)。“互联网”用于通过AGPS,Wifi三角测量,蜂窝网络等添加粗略的补充位置,但是,真正的GPS仍然是基于GPS无线电的。
检查您的应用权限是否包括:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
如果设备有GPS无线电,则GPS不需要互联网连接。如果设备没有GPS无线电,那么它将需要网络来伪造GPS。即便如此,它也不是“GPS ”,而是AGPS或无线三角测量或手机三角测量。
环绕地球的星座中有32颗GPS卫星,因此“全球定位系统”中的“全球”。GPS不是基于对服务的访问。它基于三边测量,只需要在设备上安装一个无线电,以及32颗卫星中的3或4颗的“视线”。它测量4颗卫星信号的时间延迟,可以精确到几米以内。如果它是基于其他任何东西,它是某种“辅助”GPS,是一个粗略的位置。
在实践中,通常最好使用 AGPS 进行快速启动跟踪或作为后备,因为真正的 GPS 航点可能需要一点时间才能锁定,或者如果有障碍物根本不锁定,在某些情况下,任何位置都比没有好。另一方面,在某些情况下,您可能只想要真正的GPS位置,例如在执法部门。我们是否应该根据街对面的 Wifi 路由器触发脚踝铐警报,距离罪犯被限制的房屋/地理Geofence数百英尺?
是的。您需要连接到LocationManager中的GPS提供程序并为其请求更新。不要使用条件,明确请求GPS。确保您具有FINE位置权限。
你不能这样使用getLastNotnSite。可能还没有位置,在这种情况下,它可以返回空数据或无效数据。你必须调用请求更新或请求单更新并等待Android获得位置锁并调用onLocationChange。永远不应该依赖getLast已知位置。它只在其他东西已经使用GPS时才有效,或者如果你有一个网络位置可以回退。