
三种方式进行定位,获取用户位置,分别是基于基站定位, 网络定位,GPS定位。
1基站定位(passive):这是基于网络基站进行定位的,定位的精确度在几十米到几千米不等,在城市中基站覆盖率比较高,推荐使用基站定位,如果是在郊区,基站相距较远,基站的覆盖没有城里好,定位的误差比较大。如果在郊区不推荐使用基站定位。
2网络定位:wifi定位,网络定位
3GPS定位:与卫星进行通信。手机中嵌入了GPS模块(精简版的A-GPS),通过A-GPS搜索卫星, 获取经纬度。使用GPS的弊端是:必须站在空旷的地方,头顶对着天空,如果云层厚了,也会受到一定的影响。精确度:10-50米
扩展知识:
使用Android是定位必备的权限:
< uses-permission android:name= " androidpermissionACCESS_FINE_LOCATION " /> //精确定位
<uses-permission android:name= "androidpermissionACCESS_MOCK_LOCATION" /> //模拟器
<uses-permission android:name= "androidpermissionACCESS_COARSE_LOCATION" /> //粗糙定位
//获取定位管理对象
LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);
String[] names=lmgetAllProviders();//获取所有的位置提供者,一般三种
Criteria criteria=new Criteria();//查询条件,如果设置了海拔,则定位方式只能是GPS;
criteriasetCostAllowed(true);//是否产生开销,比如流量费
String provider=lmgetBaseProvider(criteria,true)//获取最好的位置提供者,第二个参数为true,表示只获取那些被打开的位置提供者
lmrequestLocationUpdates(provier,0,0,new LocationListener(){});//获取位置。第二个参数表示每隔多少时间返回一次数据,第三个参数表示被定位的物体移动每次多少米返回一次数据。
private class MyLocationListener implements LocationListener {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
@Override
public void onLocationChanged(Location location) {
System outprintln( "服务中位置监听发送了变化了" );
float accuracy = locationgetAccuracy(); // 精确度
double altitude = locationgetAltitude(); // 海拔
double latitude = locationgetLatitude(); // 纬度
double longitude = locationgetLongitude(); // 经度
String locationInfo = "jingdu:" + longitude + ",weidu:" + latitude + ",haiba:" + altitude + ",jingquedu:" + accuracy;
Editor edit = spedit();
editputString( "location", locationInfo);
editcommit();
}
} public void onProviderDisabled(String provider) {
}
尝试使用这款软件吧!
《伪装GPS Fake GPS
location》是一款能伪造你GPS定位的软件。不想让朋友知道你的位置吗?或者在切克或者点评上发表你的文章时候,不想让别人知道你在哪不。用这个软件吧。可以伪造出你的GPS位置。明明你在上海,但软件可以帮助显示你在美国。
1 试试这个代码获取地址。Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, LocalegetDefault());
addresses = geocodergetFromLocation(latitude, longitude, 1);
String address = addressesget(0)getAddressLine(0);
String city = addressesget(0)getAddressLine(1);
String country = addressesget(0)getAddressLine(2);
为openstreammap final String requestString = " CodeGonet +
DoubletoString(lat) + "&lon=" + DoubletoString(lon) + "&zoom=18&addressdetails=1";
RequestBuilder builder = new RequestBuilder(RequestBuilderGET, URLencode(requestString));
try {
@SuppressWarnings("unused")
Request request = buildersendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
if (responsegetStatusCode() == 200) {
String city = "";
try {
JSONValue json = JSONParserparseStrict(response);
JSONObject address = jsonisObject()get("address")isObject();
final String quotes = "^\"|\"$";
if (addressget("city") != null) {
city = addressget("city")toString()replaceAll(quotes, "");
} else if (addressget("village") != null) {
city = addressget("village")toString()replaceAll(quotes, "");
}
} catch (Exception e) {
}
}
}
});
} catch (Exception e) {
}
2 这里是我的解决方案。我认为它为你的作品也。 public String ConvertPointToLocation(GeoPoint point) {
String address = "";
Geocoder geoCoder = new Geocoder( getBaseContext(), LocalegetDefault());
try {
List<Address> addresses = geoCodergetFromLocation(
pointgetLatitudeE6() / 1E6,
pointgetLongitudeE6() / 1E6, 1);
if (addressessize() > 0) {
for (int index = 0; index < addressesget(0)getMaxAddressLineIndex(); index++)
address += addressesget(0)getAddressLine(index) + " ";
}
ToastmakeText(getBaseContext(), address, ToastLENGTH_SHORT)show();
}
catch (IOException e) {
eprintStackTrace();
}
return address;
}
以上就是关于android怎么通过打来的电话获得对方经纬度信息全部的内容,包括:android怎么通过打来的电话获得对方经纬度信息、android中用高德地图通过地址获取经纬度、android如何获取地理位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)