使用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" />
时间: 2024-10-17 18:16:41

使用LBS(地理位置)的相关文章

LBS地理位置距离计算方法之geohash算法

随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等).基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近.这里需要在设置出一个字段,是关于编码的字段,一会看下文哈…… 地理位置距离实现目标:查找附近多少公里内的人或者商家 比如:微信.陌陌.美团.基于O2O的一些APP这些应用或者移动网页都需要用到地理位置计算 目前来说:移动地理位置距离计算比较好的算法是geohash,特此整理分享. geohash有以下几个特点: 第一:geo

《App 后台开发运维和架构实践》目录

ps:由于书的目录太长了,各大网店(京东,当当,亚马逊)都显示不完整,所以这里列出目录的完整版. 第1章 App后台入门 16 1.1 App后台的功能 16 1.2 App后台架构 17 1.3 App和App后台的通信 19 1.4 App后台和Web后端的区别 22 1.5 选择服务器 23 1.6 选择编程语言 24 1.7 快速入门新技术 25 1.7.1 思维模式 25 1.7.2 4种快速入门新技术的方法 25 1.8 App是怎样炼成的 26 1.8.1 项目启动阶段 26 1.

移动社群3.0时代 QQ如何自我颠覆?

(图:腾讯公司高级副总裁汤道生在移动社群大会上做演讲) 互联网时代造就了一个无限开放的信息空间,基于人与人之间互通信息,相互聚合进行分享和交流逐渐衍生了一种互联网"社群"关系.从最初的QQ群.BBS.论坛.博客,到现在的兴趣部落.贴吧群.陌陌群等,移动社群已经浩浩荡荡地向3.0时代迈进. 而伴随着每一代产品的升级, QQ社群体系也在不断地自我变革.这一次,QQ要从"QQ群+兴趣部落+QQ公众号"出发,打造全新的移动社群生态圈.随着这三驾马车布局的完成,移动社群商业化

企鹅帝国与陌生人社交渐行渐远,新秀不断崛起

BBS.SNS社交早已成为了过去,即便是盛极一时的微博如今也人气日稀,今天的社交已经完全到了移动社交时代.在移动熟人社交领域,虽然有来往.易信等挑战,微信依然一统江山:而在移动陌生人社交领域,却又是另一番百花盛开的景象,陌陌.脉脉.比邻.几度.在场.碰碰等系列陌生人社交平台纷纷崛起. 在很多人看来,以陌陌为代表的陌生人社交崛起是因为钻了微信的空子,是微信给予了陌生人社交崛起的机会.事实上,并非如此,微信本来就是基于熟人的一个朋友圈社交.但是QQ却不一样,QQ既是熟人社交,同时也是陌生人社交平台,

阿里百川无线开放大会参与记录

参会方:华西都市报.创客中国.高新区创新中心 .苏河汇.36kr.Camera360.阿里百川.友盟 上午主会场 一.高新区创新中心 1.以色列故事-许多杰出科学家的出现 2.驱动地方经济发展的引擎 2.1 招商引资 以资本和项目引进,微笑曲线中间(制造),见效快.根基弱,以土地.劳动力等要素投入为主,具有阶段性特点 2.2 创新孵化 人才引进,微笑曲线两段(研发.总部.营销),见效慢.根基强,以孵化培育为主,永恒驱动力 3 创新科技服务体系 特点:1233工程 3.1 一个中心:招才引智.孵化

餐饮行业小程序开发流程

在热爱美食的中国,餐饮是长盛不衰的行业.餐饮行业小程序开发:151-1222-4001(微/电)对于移动支付来说,最先改变的是餐饮,大大小小的餐饮店都在巨头补贴之下,参与移动支付大战.移动支付带来的变革,不仅仅是收单方式,更是移动互联网O2O模式的改变,线上线下连接的这个概念,逐步被人接受,并在2016年的发展中推向高潮,那么旗鱼点餐又是如何通过这种模式触达餐饮行业痛点的呢? 餐饮行业有意想不到的巨大市场 据餐饮行业的调研报告显示,2014年,整个餐饮业的O2O市场规模接近千亿,占餐饮行业总体比

【转】物业管理与移动互联网科技|微信公众平台,物业app,物业O2O

[导语]当下,物业管理行业正在接受新科技浪潮的冲击和洗礼,业界企业纷纷探索物业服务的新发展模式.云服务.微社区.微信公众平台.app等,这些本来陌生的词汇在物业管理行业变得耳熟能详.在借助科技手段拓展多种经营,提升竞争力.增加创富能力.开展信息化建设和管理的同时,部分物业服务企业的发展模式和理念又提升了一大步,现代科技推动物业管理行业发展正在成为现实. 第一部分:移动互联网改变传统物业管理 <ignore_js_op>  从6000斤香梨看社区O2O——记长城物业盛世家园社区香梨团购活动 普而

点餐小程序开发详情

互联网认为数量多的是影响力大的.点餐小程序开发详情(178.1718.1752可微)点餐小程序开发.点餐小程序系统开发.微信点餐小程序开发它的一个好处,做到了广覆盖.原来一些优秀的传统媒体,发行量可能没有超过百万的,比如<财经>杂志,或者<南方周末>,都是在几十万的数量级.从中国的人口基数来讲,覆盖率非常少,少的可怜.但是这不影响它的影响力,如果它做了一个好的选题,或者做了一篇有质量的封面文章,在高端人群里面的传播力往往是非常好的. 餐饮是传统行业最典型的代表,微信小程序和餐饮碰撞

二三线城市正在兴起小程序浪潮对创业者来说是机会吗?

微信小程序正式上线是在去年1月9日,在经过近一年半时间的打磨.优化后,当下小程序早已成为全新商业力量.鉴于腾讯对小程序的重视.小程序本身的特性等,热钱.创业者等都流向小程序浩浩荡荡的创业之旅中. 相信业内人士对当年微博.微信公众号.今日头条号等自媒体的热潮,依然有着深刻印象.毕竟只要占据了先发优势并迅速抢占制高点,那就等于直接躺在了"金山"里,后续的丰厚利益简直唾手可得.因此,现在很多投资者和创业者都在进行"恐慌式"布局,拼命去抓住小程序这一风口 ![](http: