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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。