獲取手機經緯度有 gps , network , 基站 三種方式,我們可以根據定位的條件,獲取一個最好的定位方式。然後將獲取到經緯度信息發送到指定的手機號碼中。
- /*
- * 單態只允許存在一個實例.
- * 獲取手機的gps信息
- */
- public class GPSInfoService {
- private Context context;
- private LocationManager manager;
- SharedPreferences sp ;
- //私有化構造方法
- private GPSInfoService(Context context){
- this.context= context;
- manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
- }
- private static GPSInfoService mGPSService;
-
- public synchronized static GPSInfoService getInstance(Context context){
- if(mGPSService==null)
- mGPSService = new GPSInfoService(context);
- return mGPSService;
- }
-
- /*
- * 當前你的手機 所支持的定位方式獲取出來
- * 有多種定位方式 gps network ,基站, passive
- * 可以根據定位的條件 ,獲取 一個最好的定位方式http://www.linuxidc.com
- */
- public void registerLocationUpdates(){
- Criteria criteria = new Criteria();
- // 設置定位的精度
- criteria.setAccuracy(Criteria.ACCURACY_COARSE); //獲取大體的位置
- criteria.setAltitudeRequired(false); // 海拔信息
- criteria.setCostAllowed(true); //允許產生費用
- criteria.setPowerRequirement(Criteria.POWER_LOW); //低功耗
-
- //獲取一個最符合查詢條件的位置提供者
- String provider =manager.getBestProvider(criteria, true);
-
- // 位置改變就會調用Linster的監聽器 獲取經度緯度
- manager.requestLocationUpdates(provider, 60000, 0, getLinster());
- }
-
- public void cancleLocationUpdates(){
- manager.removeUpdates(getLinster());
- }
- private static MyGPSLinster myGPSLinser;
-
- private MyGPSLinster getLinster(){
- if(myGPSLinser==null)
- myGPSLinser = new MyGPSLinster();
- return myGPSLinser;
- }
-
- private class MyGPSLinster implements LocationListener{
-
- // 用戶位置改變的時候 的回調方法
- public void onLocationChanged(Location location) {
- //獲取到用戶的緯度
- double latitude= location.getLatitude();
- //獲取到用戶的經度
- double longitude = location.getLongitude();
- //進行封裝寫入到文件中
- String locationstr = "jing du "+ longitude + " weidu :"+latitude;
- Editor editor = sp.edit();
- editor.putString("lastlocation", locationstr);
- editor.commit();
- }
- // 狀態改變
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- }
- //gps ,打開
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- //關閉
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- }
- }
-
- /**
- * 獲取手機的最後一次位置
- * @return
- */
- public String getLastPosition(){
- return sp.getString("lastlocation", "");
- }
- }
獲取短信的經緯度並將獲取到的經緯度發送到指定的號碼上:
- //獲取當前手機的經緯度.
- GPSInfoService.getInstance(context).registerLocationUpdates();
- //把經緯度的信息發送到安全號碼 ,獲取到短信發送器,將短信發送到指定的號碼
- SmsManager smsManager = SmsManager.getDefault();
- smsManager.sendTextMessage("15287978798", null, GPSInfoService.getInstance(context).getLastPosition() , null, null);