almost 4 years ago

若需要使用到座標相關的資訊時需要實做 LocationListener,此事件監聽器會自動提供 Location 的資訊

1. 實作 android.location.LocationListener 界面

實作以下 method

1.1. public void onLocationChanged(Location location)

當座標有改變,事件監聽器會傳送一個 Location 物件,可透過 Location 取得當下的經度、緯度、時間、精準度、速度、海拔等資訊。

1.2. public void onStatusChanged(String provider, int status, Bundle extras)

當服務提供商 狀態改變 時,會透過這個 method 告知

1.3. public void onProviderEnabled(String provider)

當服務提供商 可提供服務 時,會透過這個 method 告知

1.4. public void onProviderDisabled(String provider)

當服務提供商 失效 時,會透過這個 method 告知

package edu.tcu.gaduo.map;

import java.util.List;

import android.content.Context;
import android.graphics.Color;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import edu.tcu.gaduo.model.LocationModel;
import edu.tcu.gaduo.model.repository.SQLiteLocationRepository;

// 實作 android.location.LocationListener 
public class MapFragment extends Fragment implements LocationListener {
    private final int second = 0;
    private final int meters = 0;   

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_map, container, false);
        // 設定 Location 的提供來源,可以是 GPS、網路(Wi-Fi 基地台、3G 基地台)
        LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, second, meters, MapFragment.this);
        return rootView;
    }
  
    /** 當座標有改變,事件監聽器會傳送一個 Location 物件,
        可透過 Location 取得當下的經度、緯度、時間、精準度、速度、海拔等資訊  */
    @Override
    public void onLocationChanged(Location location) {    
        // 緯度
        // 經度
        // 精準度
        double latitude = location.getLatitude();    
        double longitude = location.getLongitude();
        float accuracy = location.getAccuracy();
    }


    /** 當服務提供商狀態改變時,會透過這個 method 告知 */
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    /** 當服務提供商可提供服務時,會透過這個 method 告知 */
    @Override
    public void onProviderEnabled(String provider) {
        
    }

    /** 當服務提供商失效時,會透過這個 method 告知 */
    @Override
    public void onProviderDisabled(String provider) {
        
    }
    
}
← Android - Google Services - Maps Android - 使用資料庫 SQLite →
 
comments powered by Disqus