天天看點

android百度定位流量定位傳回空,解決百度定位擷取position為空的困惑

package com.sfdj.salebaby.utils;

import java.io.IOException;

import java.util.List;

import java.util.Locale;

import android.content.Context;

import android.location.Address;

import android.location.Criteria;

import android.location.Geocoder;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.util.Log;

import android.os.Bundle;

public class LocationTools {

private Location location;

public static LocationManager getLocationManager(Context context) {

return (LocationManager) context

.getSystemService(context.LOCATION_SERVICE);

}

// 擷取位置資訊

public String getAddress(Context context) {

LocationManager locationManager = this.getLocationManager(context);

if (!locationManager

.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {

// 打開GPS 需Android2.2以上系統支援

android.provider.Settings.Secure.setLocationProviderEnabled(

context.getContentResolver(), LocationManager.GPS_PROVIDER,

false);

}

return doWork(context);

}

private String doWork(Context context) {

String addres = "";

LocationManager locationManager = this.getLocationManager(context);

Criteria criteria = new Criteria();

// 獲得最好的定位效果

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(false);

// 使用省電模式

criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);

Log.i("provider>>>>>>", provider);

// 獲得目前位置 location為空是一直取 從onLocationChanged裡面取

while (location == null) {

location = locationManager.getLastKnownLocation(provider);

}

// locationListener

LocationListener locationListener = new LocationListener() {

@Override

public void onLocationChanged(Location location) {

LocationTools.this.location = location;

}

@Override

public void onProviderDisabled(String provider) {

}

@Override

public void onProviderEnabled(String provider) {

}

@Override

public void onStatusChanged(String provider, int status,

Bundle extras) {

}

};

locationManager.requestLocationUpdates(provider, 1000, 10,

locationListener);

Geocoder geo = new Geocoder(context, Locale.getDefault());

try {

List

address = geo.getFromLocation(location.getLatitude(),

location.getLongitude(), 1);

if (address.size() > 0) {

addres = address.get(0).getAddressLine(0);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return addres;

}

}

原文:http://blog.csdn.net/wuxin782515516/article/details/46367309