方法1(參考資料1):

double lat, lng;
LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); // 設定定位資訊由 GPS提供
lat = location.getLatitude(); // 取得經度
lng = location.getLongitude(); // 取得緯度
LatLng HOME = new LatLng(lat, lng);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(HOME, 15.0f));//數字越大放越大

 

有更精準的類別可以使用

方法2:

package com.example.user.exgooglemap;

import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Log;


/**
 * Created by user on 2016/5/31.
 */
public class GPSTracker extends Service implements LocationListener {

 private final Context mContext;

 // Flag for GPS status
 boolean isGPSEnabled = false;

 // Flag for network status
 boolean isNetworkEnabled = false;

 // Flag for GPS status
 boolean canGetLocation = false;

 Location location; // Location
 double latitude; // Latitude
 double longitude; // Longitude

 // The minimum distance to change Updates in meters
 private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

 // The minimum time between updates in milliseconds
 private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

 // Declaring a Location Manager
 protected LocationManager locationManager;

 public GPSTracker(Context context) {
 this.mContext = context;
 getLocation();
 }

 public Location getLocation() {
 try {
 locationManager = (LocationManager) mContext
 .getSystemService(LOCATION_SERVICE);

 // Getting GPS status
 isGPSEnabled = locationManager
 .isProviderEnabled(LocationManager.GPS_PROVIDER);

 // Getting network status
 isNetworkEnabled = locationManager
 .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

 if (!isGPSEnabled && !isNetworkEnabled) {
 // No network provider is enabled
 } else {
 this.canGetLocation = true;
 if (isNetworkEnabled) {
 locationManager.requestLocationUpdates(
 LocationManager.NETWORK_PROVIDER,
 MIN_TIME_BW_UPDATES,
 MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
 Log.d("Network", "Network");
 if (locationManager != null) {
 location = locationManager
 .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
 if (location != null) {
 latitude = location.getLatitude();
 longitude = location.getLongitude();
 }
 }
 }
 // If GPS enabled, get latitude/longitude using GPS Services
 if (isGPSEnabled) {
 if (location == null) {
 locationManager.requestLocationUpdates(
 LocationManager.GPS_PROVIDER,
 MIN_TIME_BW_UPDATES,
 MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
 Log.d("GPS Enabled", "GPS Enabled");
 if (locationManager != null) {
 location = locationManager
 .getLastKnownLocation(LocationManager.GPS_PROVIDER);
 if (location != null) {
 latitude = location.getLatitude();
 longitude = location.getLongitude();
 }
 }
 }
 }
 }
 }
 catch (Exception e) {
 e.printStackTrace();
 }

 return location;
 }


 /**
 * Stop using GPS listener
 * Calling this function will stop using GPS in your app.
 * */
 public void stopUsingGPS(){
 if(locationManager != null){
 locationManager.removeUpdates(GPSTracker.this);
 }
 }


 /**
 * Function to get latitude
 * */
 public double getLatitude(){
 if(location != null){
 latitude = location.getLatitude();
 }

 // return latitude
 return latitude;
 }


 /**
 * Function to get longitude
 * */
 public double getLongitude(){
 if(location != null){
 longitude = location.getLongitude();
 }

 // return longitude
 return longitude;
 }

 /**
 * Function to check GPS/Wi-Fi enabled
 * @return boolean
 * */
 public boolean canGetLocation() {
 return this.canGetLocation;
 }


 /**
 * Function to show settings alert dialog.
 * On pressing the Settings button it will launch Settings Options.
 * */
 public void showSettingsAlert(){
 AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

 // Setting Dialog Title
 alertDialog.setTitle("GPS is settings");

 // Setting Dialog Message
 alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

 // On pressing the Settings button.
 alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog,int which) {
 Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
 mContext.startActivity(intent);
 }
 });

 // On pressing the cancel button
 alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int which) {
 dialog.cancel();
 }
 });

 // Showing Alert Message
 alertDialog.show();
 }


 @Override
 public void onLocationChanged(Location location) {
 }


 @Override
 public void onProviderDisabled(String provider) {
 }


 @Override
 public void onProviderEnabled(String provider) {
 }


 @Override
 public void onStatusChanged(String provider, int status, Bundle extras) {
 }


 @Override
 public IBinder onBind(Intent arg0) {
 return null;
 }
}

 

參考資料:

1.Android - Google maps V2 將目前所在地點置中顯示於畫面(GPS)

 

文章標籤
全站熱搜
創作者介紹
創作者 程式小試身手 的頭像
程式小試身手

程式小試身手

程式小試身手 發表在 痞客邦 留言(7) 人氣(7,293)