Android获取手机位置的实现代码
本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下
1、项目Src下创建...service包,然后新建GPSService类
packagecom.zebra.mobilesafe.service;
importjava.io.IOException;
importjava.io.InputStream;
importandroid.app.Service;
importandroid.content.Intent;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.location.Criteria;
importandroid.location.Location;
importandroid.location.LocationListener;
importandroid.location.LocationManager;
importandroid.os.Bundle;
importandroid.os.IBinder;
importandroid.util.Log;
publicclassGPSServiceextendsService{
privatestaticfinalStringTAG="GPSService";
//用到位置服务
privateLocationManagerlm;
privateMyLocationListenerlistener;
@Override
publicIBinderonBind(Intentintent){
//TODOAuto-generatedmethodstub
returnnull;
}
@Override
publicvoidonCreate(){
//TODOAuto-generatedmethodstub
super.onCreate();
Log.i(TAG,"====进入GPS==");
lm=(LocationManager)getSystemService(LOCATION_SERVICE);
//List<String>provider=lm.getAllProviders();
//for(Stringl:provider){
//System.out.println(l);
//}
listener=newMyLocationListener();
//注册监听位置服务
//给位置提供者设置条件
Criteriacriteria=newCriteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//设置参数细化:
//criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度
//criteria.setAltitudeRequired(false);//不要求海拔信息
//criteria.setBearingRequired(false);//不要求方位信息
//criteria.setCostAllowed(true);//是否允许付费
//criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求
Stringproveder=lm.getBestProvider(criteria,true);
lm.requestLocationUpdates(proveder,0,0,listener);
}
@Override
publicvoidonDestroy(){
super.onDestroy();
//取消监听位置服务
lm.removeUpdates(listener);
listener=null;
}
classMyLocationListenerimplementsLocationListener{
/**
*当位置改变的时候回调
*/
@Override
publicvoidonLocationChanged(Locationlocation){
Stringlongitude="j:"+location.getLongitude()+"\n";
Stringlatitude="w:"+location.getLatitude()+"\n";
Stringaccuracy="a"+location.getAccuracy()+"\n";
//发短信给安全号码
//把标准的GPS坐标转换成火星坐标
//InputStreamis;
//try{
//is=getAssets().open("axisoffset.dat");
//ModifyOffsetoffset=ModifyOffset.getInstance(is);
//PointDoubledouble1=offset.s2c(newPointDouble(location
//.getLongitude(),location.getLatitude()));
//longitude="j:"+offset.X+"\n";
//latitude="w:"+offset.Y+"\n";
//
//}catch(IOExceptione){
////TODOAuto-generatedcatchblock
//e.printStackTrace();
//}catch(Exceptione){
////TODOAuto-generatedcatchblock
//e.printStackTrace();
//}
SharedPreferencessp=getSharedPreferences("config",MODE_PRIVATE);
Editoreditor=sp.edit();
editor.putString("lastlocation",longitude+latitude+accuracy);
editor.commit();
}
/**
*当状态发生改变的时候回调开启--关闭;关闭--开启
*/
@Override
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){
//TODOAuto-generatedmethodstub
}
/**
*某一个位置提供者可以使用了
*/
@Override
publicvoidonProviderEnabled(Stringprovider){
//TODOAuto-generatedmethodstub
}
/**
*某一个位置提供者不可以使用了
*/
@Override
publicvoidonProviderDisabled(Stringprovider){
//TODOAuto-generatedmethodstub
}
}
}
2、AndroidManiFest.xml添加类
注意这个是service类型,很容易出错,即<service android:name="com.zebra.mobilesafe.service.GPSService"/>
3、添加权限
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_MOCK_LOCATION"/>
4、根据操作启动服务
Intenti=newIntent(context,GPSService.class); context.startService(i);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。