Android開發之LocationManager和定位


代碼:

 1 /*
 2  * 獲取當前的位置,並通過短信發送位置到指定號碼
 3  */
 4 public class LocationService extends Service {
 5 
 6     private LocationManager lm;
 7     private MyLocationListener listener;
 8 
 9     @Override
10     public IBinder onBind(Intent intent) {
11         return null;
12     }
13 
14     @Override
15     public void onCreate() {
16         super.onCreate();
17 
18         lm = (LocationManager) getSystemService(LOCATION_SERVICE);
19         listener = new MyLocationListener();
20         Criteria criteria = new Criteria();
21         criteria.setCostAllowed(true); // 是否允許使用付費
22         criteria.setAccuracy(Criteria.ACCURACY_FINE); // 獲取位置的精度
23         String provider = lm.getBestProvider(criteria, true);
24         lm.requestLocationUpdates(provider, 0, 0, listener);
25     }
26 
27     class MyLocationListener implements LocationListener {
28         // 位置改變時獲取經緯度
29         @Override
30         public void onLocationChanged(Location location) {
31             String j = "jingdu:" + location.getLongitude();
32             String w = "weidu:" + location.getLatitude();
33             SharedPreferences mPref = getSharedPreferences("config",
34                     MODE_PRIVATE);
35             mPref.edit().putString("location", j + ";" + w).commit();
36             String savedSafeNumber = mPref.getString("safeNumber", "");
37 
38             double[] locationDouble=LocationUtils.standardToChina(location.getLongitude(), location.getLatitude());
39             SmsManager.getDefault().sendTextMessage(savedSafeNumber, null,
40                     "Phone's location:" + locationDouble[0] + ";" + locationDouble[1], null, null); // 把回復的短信內容由中文修改為英文,中文在模擬器上顯示為亂碼
41             stopSelf(); // 獲取到經緯度以后,停止該service
42         }
43 
44         // 狀態改變時
45         @Override
46         public void onStatusChanged(String provider, int status, Bundle extras) {
47 
48         }
49 
50         // 提供者可以使用時
51         @Override
52         public void onProviderEnabled(String provider) {
53 
54         }
55 
56         // 提供者不可以使用時
57         @Override
58         public void onProviderDisabled(String provider) {
59 
60         }
61 
62     }
63 
64     @Override
65     public void onDestroy() {
66         super.onDestroy();
67         lm.removeUpdates(listener); // 停止所有的定位服務
68     }
69 
70 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM