●畫面預覽:
 
 
●程式說明:
1.設定權限
粗略定位權限:<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
精細定位權限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
2.
public class MainActivity extends AppCompatActivity implements LocationListener {
 
    LocationManager lm;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    }
 
    public void click1(View view) {
 
//加了權限會跳出這段程式,這邊沒有寫可以強制開啟模擬器的權限設定        
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            
            return;
        }
        //四個參數:要用的定位來源、最短時間多久一次、最短距離多久一次、只要訂為一改變超過最短時間和最短距離就會呼叫listener
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }
 
    @Override //位置改變時
    public void onLocationChanged(Location location) {
        Log.d("GPS", "Location Change:" + location.getLongitude() + "," + location.getLatitude());
        Toast.makeText(this,"Location Change:" + location.getLongitude() + "," + location.getLatitude(),Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {
 
    }
 
 
 
    @Override  //關閉定位
    public void onProviderEnabled(String s) {
 
    }
 
    @Override //開啟定位
    public void onProviderDisabled(String s) {
 
    }
 
}
**說明:
這個做在室外沒有問題,因為用gps定位多多少少會移動,但是在市內是用網路定位,沒有動就不會觸發此段程式
 
3.模擬器無法測試移動,可以點下列功能,send點一下就會改變位置,程式就可以抓到位置寫入log
get GPS location
 
arrow
arrow
    創作者介紹
    創作者 muchone 的頭像
    muchone

    簡單。生活。享受

    muchone 發表在 痞客邦 留言(0) 人氣()