一:新建MyLocationManager.java类,本类是为了代码架构方便把地位经纬度的代码在这类中实现然后通过回调方法,在activity中显示;
package com.android.location;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class MyLocationManager {
private static Context mContext;
private LocationManager gpsLocationManager;
private LocationManager networkLocationManager;
private static final int MINTIME = 2000;
private static final int MININSTANCE = 2;
private static MyLocationManager instance;
private Location lastLocation = null;
private static LocationCallBack mCallback;
public static void init(Context c, LocationCallBack callback) {
mContext = c;
mCallback = callback;
}
private MyLocationManager() {
// Gps 定位
gpsLocationManager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
Location gpsLocation = gpsLocationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
gpsLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
MINTIME, MININSTANCE, locationListener);
// 基站定位
networkLocationManager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
Location networkLocation = gpsLocationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
networkLocationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, MINTIME, MININSTANCE,
locationListener);
}
public static MyLocationManager getInstance() {
if (null == instance) {
instance = new MyLocationManager();
}
return instance;
}
private void updateLocation(Location location) {
lastLocation = location;
mCallback.onCurrentLocation(location);
}
private final LocationListener locationListener = new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
public void onLocationChanged(Location location) {
updateLocation(location);
}
};
public Location getMyLocation() {
return lastLocation;
}
private static int ENOUGH_LONG = 1000 * 60;
public interface LocationCallBack {
/**
* 当前位置
*
* @param location
*/
void onCurrentLocation(Location location);
}
public void destoryLocationManager() {
gpsLocationManager.removeUpdates(locationListener);
networkLocationManager.removeUpdates(locationListener);
}
}
二:在LocationActivity 中实现LocationCallBack接口,如下:
package com.android.location;
import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;
import com.android.fzmap.R;
import com.android.location.MyLocationManager.LocationCallBack;
public class LocationActivity extends Activity implements LocationCallBack {
private TextView desText;
private MyLocationManager mLocation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
desText = (TextView) this.findViewById(R.id.text);
MyLocationManager.init(LocationActivity.this.getApplicationContext(),
LocationActivity.this);//初始化
mLocation = MyLocationManager.getInstance();//获取实例
}
//回调定位信息
public void onCurrentLocation(Location location) {
if (location != null) {
// 显示定位结果
desText.setText("当前经度:" + location.getLongitude() + "\n当前纬度:"
+ location.getLatitude());
}
}
// 关闭程序也关闭定位
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mLocation.destoryLocationManager();
}
}
三:在AndroidManifest.xml中不要忘了要添加访问网络和启动定位等的几个权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
四:效果如下图:
- 大小: 22.5 KB
分享到:
相关推荐
GPS 基站 原生定位可运行的GPS获取经纬度和获取基站例子(环境Android Studio 3.5.2扒拉能运行的例子找到太辛苦了要么版本太老。)
现在有这么一个需求:开启一个Service服务,获取当前...Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在LocationTool中返回Location、LocationManager两者对象,通过Loca
通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通、电信、移动)。 2)、实时获取经纬度 为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度...
在android开发中地图和定位是很...很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高。
(第三方地图API的选择,具体还要根据自己的项目要求来选择)言归正传,现在就说说百度的定位API 吧 (该文章,主要是讲定位的,所以就单独说说,百度的定位API 接口)百度定位API,是 GPS 基站 WIFI IP混合定位,...
Android GPS,基站获取经纬度~调用百度地图~将经纬度转换为位置 内附源码
微波天线计算:支持GPS定位,获取经纬度和海拔信息,根据经纬度可以计算两点的弧面距离和近端天线方位角,然后根据弧面距离和天线海拔计算近端天线仰角(远端天线计算同前)。同时还可保存当前的地理位置信息,并...
后台定时定位开机自启系统android 类库中, 虽然已经提供了几种定位方式,但是从提供的功能和反应速度上,和其他的第三方定位库相比,还是相形见绌。...2. 在定位的回调函数里,将定位获取的信息保存到本地
获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android.permission.ACCESS_FINE_LOCATION,通过GPS芯片...
获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米获取精确位置 android.permission.ACCESS_FINE_LOCATION,通过GPS芯片...
(第三方地图API的选择,具体还要根据自己的项目要求来选择)言归正传,现在就说说百度的定位API 吧 (该文章,主要是讲定位的,所以就单独说说,百度的定位API 接口)百度定位API,是 GPS+基站+WIFI+IP混合定位,...