編輯:關於Android編程
手機定位基於以下三種方式:1. 網絡定位 ;2. 基站定位; 3. GPS定位
1 網絡定位
前提是必須連上網絡:Wifi、3G、2G
獲取到IP地址
例如:彩虹版QQ,珊瑚蟲版QQ,就有一個功能顯示對方的IP;
根據IP顯示具體的位置;
原理是建立一個庫那個IP地址對應那個地方;早期警方破案就采用此特點;
有局限性:針對固定的IP地址。
如果手機網或者ip地址是動態分布IP,這個偏差就很大。這種情況是無法滿足需求的。
2 基站定位
工作原理:手機能打電話,是需要基站的。手機定位也是用基站的。
手機附近能收到3個基站的信號,就可以定位了。
基站定位有可能很准確,比如基站多的地方;
如果基站少的話就會相差很大。
精確度:幾十米到幾公裡不等;
3 GPS定位
A-GPS 使用了衛星定位 需要聯網輔助修正位置(手機經常使用,優先請求網絡,獲取之前保存的衛星軌道的信息cache,)
特點是:需要搜索衛星, 頭頂必須是空曠的;
影響條件:雲層、大廈、大樹。
以下是實現的代碼:
package com.andy.gpsdemo; import com.example.gpsdemo.R; import android.support.v7.app.ActionBarActivity; import android.widget.TextView; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; public class MainActivity extends ActionBarActivity { // 位置服務 private LocationManager locationManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); /*Listprovider = locationManager.getAllProviders(); for (String string : provider) { System.out.println(string); }*/ // 注冊監聽位置服務 // 給位置提供者設置條件 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);// 獲取精確的位置 // criteria.setAccuracy(Criteria.ACCURACY_FINE);//設置為最大精度 // criteria.setAltitudeRequired(false);//不要求海拔信息 // criteria.setBearingRequired(false);//不要求方位信息 // criteria.setCostAllowed(true);//是否允許付費 // criteria.setPowerRequirement(Criteria.POWER_LOW);//對電量的要求 String proveder = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(proveder, 0, 0, new LocationListener() { @Override public void onLocationChanged(Location location) { // 當改變位置時回調 String longitude = "經度:" + location.getLongitude(); String latitudeString = "維度:" + location.getLatitude(); String accuracy = "精確度:" + location.getAccuracy(); TextView textView = new TextView(MainActivity.this); textView.setText(longitude + "\n" + latitudeString + "\n" + accuracy); setContentView(textView); } @Override public void onProviderDisabled(String provider) { // 當一個位置提供者不可以使用 } @Override public void onProviderEnabled(String provider) { // 當一個位置提供者可以使用 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // 當狀態發生改變的時候回調 開啟--關閉 ;關閉--開啟 } }); } }
需要加入的權限為:
Android的framework層都是由c++來實現的 大家都知道c++最令人頭痛的莫過於內存洩漏了 ,如果是一個人開發還好 當new出來一個對象後 應該會記得dele
Android系統通過屬性暴露設備和運行時信息,並且可以通過設置屬性來控制系統行為。因此,屬性也像文件一樣,是一種需要保護的資源。在啟用SEAndroid之前,敏感屬性只
ListView雖然使用廣泛,但系統原生的ListView顯然是不能滿足用戶在審美、功能上不斷提高的需求。不過也不要緊,Android完全可以定制化,讓我們非常方便地對原
前不久由於項目的需要,要做一個自定義的軟鍵盤,我也上網看了很多,都覺得很繁瑣,所以想自己動手實現個。以備不時之需把。我選擇了參考百度錢包的軟鍵盤,看起來還不錯:publi