使用LBS(地理位置)

一.使用之前的简单封装的OkHttpUtil

http://www.cnblogs.com/itfenqing/p/6758909.html

 

二.关键代码:

public class MainActivity extends Activity {


    private TextView tip;
    private LocationManager locationManager;
    private String provider;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tip = (TextView)findViewById(R.id.tip);
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        // 获取所有可用的地理位置提供器
        List<String> providerList = locationManager.getProviders(true);

        if( providerList.contains(locationManager.GPS_PROVIDER) ){
            provider = locationManager.GPS_PROVIDER;
        }else if( providerList.contains(locationManager.NETWORK_PROVIDER) ){
            provider = locationManager.NETWORK_PROVIDER;
        }else{
            Toast.makeText(this, "没有地理位置提供器", Toast.LENGTH_LONG).show();
            return;
        }

        Location location = null;
        try {
            location = locationManager.getLastKnownLocation(provider);
        }catch (SecurityException e){
            e.printStackTrace();
        }

        if(location != null){
            showLocation(location);
        }

        try{
        // 设置一个监听器,每1秒检测一次,位置移动超过1米,则更新
            locationManager.requestLocationUpdates(provider,
                1000,
                1,
                listener);
        }catch (SecurityException e){
            e.printStackTrace();
        }

    }

    // 监听器
    LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            showLocation(location);
        }

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

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

    private void showLocation(Location location){
        String url = "http://api.map.baidu.com/geocoder/v2/?ak=nUvlnh8wk6cDupYs5foacyXz&" +
                "location="+location.getLatitude()+","
                +location.getLongitude()+"&output=json&pois=1";
        // 异步获取
        OkHttpUtil.AsyncGet(url, new HttpListener() {
            @Override
            public void onFinish(String reponse) {
                parseJson(reponse);
            }

            @Override
            public void onError(Exception e) {
                e.printStackTrace();
            }
        });


        //String tipStr = "纬度:" + location.getLatitude() + ",经度:" + location.getLongitude();
        //tip.setText(tipStr);
    }

    // parseJson
    private void parseJson(String jsonStr){
        try {
            final StringBuilder info = new StringBuilder();
            JSONObject json = new JSONObject(jsonStr);
            if( json.get("status").toString().equals("0") ){
                info.append("经度" + json.getJSONObject("result")
                        .getJSONObject("location").get("lng").toString());
                info.append(",纬度" + json.getJSONObject("result")
                        .getJSONObject("location").get("lat").toString());
                info.append(",地理位置" + json.getJSONObject("result")
                .get("formatted_address").toString());

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tip.setText(info.toString());
                    }
                });
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 取消监听
        if( locationManager != null ){
            try {
                locationManager.removeUpdates(listener);
            }catch (SecurityException e){
                e.printStackTrace();
            }
        }
    }
}

 

三.所需权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />

 

转载于:https://www.cnblogs.com/itfenqing/p/6760202.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值