我遇到以下代码问题。我的手机里没有GPS / WIFI / 3G保持“打开”状态。我想从network_provider中找到用户位置,但由于某种原因,它在手机上将纬度和经度设为0.0和0.0。请帮忙。我的代码如下:
LocationManager mlocManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
TextView txt=(TextView)findViewById(R.id.coordinate);
txt.setText(latid+","+longid+","+accu+"m "+provider);
,requestLocationUpdates如下:
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged (Location loc)
{
latid=loc.getLatitude();
longid=loc.getLongitude();
accu=loc.getAccuracy();
TextView txt=(TextView)findViewById(R.id.coordinate);
txt.setText(latid+","+longid+","+accu+"m");
Toast.makeText (getApplicationContext(),"Entered function",Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled (String provider)
{
Toast.makeText (getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled (String provider)
{
Toast.makeText (getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT) .show();
}
@Override
public void onStatusChanged (String provider, int status, Bundle extras)
{
;
}
}/* End of Class MyLocationListener */
我想知道为什么我的所有输出都为0.0和0.0,用于lat和long。 还有一件事我注意到,如果我连接到我的家庭WIFI,那么这将获得我的经度和经度的修复。我想知道为什么没有WIFI / 3G / GPS就无法修复! 任何帮助将不胜感激..
答案 0 :(得分:2)
位置提供商需要启用3G / Wifi / 2G-Edge或GPS才能获得定位。
http://developer.android.com/guide/topics/location/obtaining-user-location.html应该会为您提供更多信息。
答案 1 :(得分:1)
这是因为Geopoint将纬度和经度变为1000000次。
如果您的gps 3g wifi出现问题,它会弹出异常,而不是获得0.0,0.0。
所以,如果您要将一对la,long指定给geoPoint对象,请提醒您自己
location.latitude的值* 1000000 = Geopoint.latitude的值
location.longitude的值* 1000000 = Geopoint.longitude的值
**
你当前位置的la / long是基于wifi设备的近似值,并且感觉你在家里移动并不敏感。这就是为什么你得到一个la / long修复的原因。