安卓手机定位需要用到LocationManger,获取到LocationManager服务后,先判断下GPS是否开启,
如果开启,就通过LocationManager调用requestLocationUpdates方法对其设置监听,监听的方式设为GPS
如果没有开启,监听方式则设为network。要添加位置的权限
public class GpsService extends Service {
LocationManager lm;
SharedPreferences sf;
Editor et;
LocationListener listener;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.i("huang", "开启服务成功");
Toast.makeText(GpsService.this, "开启服务成功", 1).show();
sf=getSharedPreferences("config", MODE_PRIVATE);
et=sf.edit();
//监听回调函数
listener=new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Toast.makeText(GpsService.this, "j:"+longitude+"/w:"+latitude, 1).show();
et.putString("lastlocation", "j:"+longitude+"/w:"+latitude);
et.commit();
}
};
lm=(LocationManager) getSystemService(LOCATION_SERVICE);
//判断gps是否打开,没打开则用网络定位
if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Log.i("huang", "gps");
Toast.makeText(GpsService.this, "gps", 1).show();
//第一个参数是设置用那种方式定位,第二个是多长时间更新一次,毫秒单位
//第三个是移动多少米更新一次,
//第四个是监听的回调
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, listener);
}
else
{
Log.i("huang", "network");
Toast.makeText(GpsService.this, "network", 1).show();
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, listener);
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
需要的权限
<span style="white-space:pre"> </span><!--获取精准位置的权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--获取粗略位置的权限 -->
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />