1. Android開發位置感知應用程序
方式:
1. GPS 定位 精確度高,僅適用於戶外,嚴重消耗電量。
如果手機內置GPS接受模塊,即使手機處於信號盲區,依然可以獲取位置信息。
2. NETWORK_PROVIDER 網絡定位,室內室外都可以使用,響應速度快,耗電量少。
下面演示 根據條件,自動選擇最優的定位方式
package demo.map4; import java.util.List; import android.app.Activity; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; /* 獲取當前位置信息 */ public class Map4Activity extends Activity { private TextView textView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.loc); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 返回所有已知的位置提供者的名稱列表,包括未獲准訪問或調用活動目前已停用的。 List<String> lp = lm.getAllProviders(); for (String item:lp) { Log.i("8023", "可用位置服務:"+item); } Criteria criteria = new Criteria(); criteria.setCostAllowed(false); //設置位置服務免費 criteria.setAccuracy(Criteria.ACCURACY_COARSE); //設置水平位置精度 //getBestProvider 只有允許訪問調用活動的位置供應商將被返回 String providerName = lm.getBestProvider(criteria, true); Log.i("8023", "------位置服務:"+providerName); if (providerName != null) { Location location = lm.getLastKnownLocation(providerName); Log.i("8023", "-------"+location); //獲取維度信息 double latitude = location.getLatitude(); //獲取經度信息 double longitude = location.getLongitude(); textView.setText("定位方式: "+providerName+" 維度:"+latitude+" 經度:"+longitude); } else { Toast.makeText(this, "1.請檢查網絡連接 \n2.請打開我的位置", Toast.LENGTH_SHORT).show(); } } } 添加訪問網絡權限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />