android studio上的百度定位的初始化

原创 2015年07月07日 10:09:03

记录一下自己引入百度地图API的结果,调用了百度地图的定位,下面开始讲解:


1.下载官方百度地图SDK,详细的我就不说了,自己查就能查到了,然后根据自己的选择进行下载,别忘了申请密钥


2.新建一个项目,导入jar包和so包,不知道的朋友可以点击下面的链接去查看如何导入:

http://blog.csdn.net/anny_lin/article/details/46763255  so包引入

jar包的引入只需要将jar包考入到libs里面,然后右键点击“add as library”就可以了


3.进行基础的配置,官方文档上有给出,当然你也可下载官方的Demo进行代码的查看与修改,我是基于官方demo进行修改的,修改后的代码如下,基本上面什么变化:

package demo.baidumap;

import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;

import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class MainActivity extends AppCompatActivity {
    private LocationClient mLocationClient;
    private TextView LocationResult,ModeInfor;
    //开启定位按钮
    private Button startLocation;
    private RadioGroup selectMode,selectCoordinates;
    private EditText frequence;
    private LocationClientOption.LocationMode tempMode = LocationClientOption.LocationMode.Hight_Accuracy;
    private String tempcoor="gcj02";
    private CheckBox checkGeoLocation;
    private Handler handler;
    private   ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.location);
        mLocationClient = ((LocationApplication) getApplication()).mLocationClient;
        LocationResult = (TextView) findViewById(R.id.textView1);


        ((LocationApplication) getApplication()).mLocationResult = LocationResult;
      
        //开启定位按钮
        startLocation = (Button) findViewById(R.id.addfence);
        handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if (msg.what==2) {
                    mLocationClient.stop();
                    progressDialog.dismiss();
                }

            }

        };
        //开始定位
        startLocation.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                progressDialog=ProgressDialog.show(MainActivity.this,"aa","aa");
                new Thread(new Runnable() {
                    @Override

                    public void run() {
                        InitLocation();
                        mLocationClient.start();
                        try {
                            Thread.sleep(2000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        handler.sendEmptyMessage(2);
                    }
                }).start();



            }
        });
    }
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        mLocationClient.stop();
        super.onStop();
    }



    private void InitLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(tempMode);//���ö�λģʽ
        option.setCoorType(tempcoor);//���صĶ�λ����ǰٶȾ�γ�ȣ�Ĭ��ֵgcj02
        int span=1000;
        try {
            span = Integer.valueOf(frequence.getText().toString());
        } catch (Exception e) {
           
        }
        option.setScanSpan(span);//���÷���λ����ļ��ʱ��Ϊ5000ms
        option.setIsNeedAddress(true);
        mLocationClient.setLocOption(option);
    }
}

其次是application文件

package demo.baidumap;

import android.app.Application;
import android.os.Vibrator;
import android.util.Log;
import android.widget.TextView;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.GeofenceClient;
import com.baidu.location.LocationClient;

/**

 */
public class LocationApplication extends Application {



    /**
     * ��Application
     */

        public LocationClient mLocationClient;
        public GeofenceClient mGeofenceClient;
        public MyLocationListener mMyLocationListener;

        public TextView mLocationResult,logMsg;
        public TextView trigger,exit;
        public Vibrator mVibrator;

        @Override
        public void onCreate() {
            super.onCreate();

            mLocationClient = new LocationClient(this.getApplicationContext());
            mMyLocationListener = new MyLocationListener();
            mLocationClient.registerLocationListener(mMyLocationListener);

        }


        /**
         */
        public class MyLocationListener implements BDLocationListener {

            @Override
            public void onReceiveLocation(BDLocation location) {
                //Receive Location
                StringBuffer sb = new StringBuffer(256);
                sb.append("time : ");
                sb.append(location.getTime());
                sb.append("\nerror code : ");
                sb.append(location.getLocType());
                sb.append("\nlatitude : ");
                sb.append(location.getLatitude());
                sb.append("\nlontitude : ");
                sb.append(location.getLongitude());
                sb.append("\nradius : ");
                sb.append(location.getRadius());
                if (location.getLocType() == BDLocation.TypeGpsLocation){
                    sb.append("\nspeed : ");
                    sb.append(location.getSpeed());
                    sb.append("\nsatellite : ");
                    sb.append(location.getSatelliteNumber());
                    sb.append("\ndirection : ");
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    sb.append(location.getDirection());
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
                    sb.append("\naddr : ");
                    sb.append(location.getAddrStr());
                    //��Ӫ����Ϣ
                    sb.append("\noperationers : ");
                    sb.append(location.getOperators());
                }
                logMsg(sb.toString());
                Log.i("BaiduLocationApiDem", sb.toString());
            }


        }


        /**
         * @param str
         */
        public void logMsg(String str) {
            try {
                if (mLocationResult != null)
                    mLocationResult.setText(str);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        /**
         * @author jpren
         *
         */

    }



最后就是androidfest文件了


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="demo.baidumap" >

    <application
        android:name=".LocationApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote">
            <intent-filter>
                <action android:name="com.baidu.location.service_v2.2" >
                </action>
            </intent-filter>

        </service>
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="你的密钥" />

    </application>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_LOGS" >
    </uses-permission>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />



</manifest>

然后就可以进行基础的定位服务了,需要注意的是,你需要在真机上进行测试,虚拟机可能显示不出结果。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AndroidStudio 中使用 百度地图 <一> 百度地图的导入和集成,个人摘要

百度地图官方的简介:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction 注意 POI 是Point of int...
  • Rodulf
  • Rodulf
  • 2016年03月12日 17:27
  • 1312

Android Studio – 使用百度地图SDK教程

Android Studio – 使用百度地图SDK教程 一.Android Studio创建签名 我们在使用Android Studio进行应用的发布时要进行签名,此百度经验将通...

Android studio中使用百度地图api获取定位遇到了sdk初始化问题

Android中百度地图初始化sdk时,SDKInitializer找不到。

Android Studio 百度地图定位、轨迹及所在位置与标注marker的距离

1. 在百度地图开放平台注册应用  获得应用AK   如果获取SHA1不对,可以下载 MCodeCheck.apk 安装在测试手机上查看SHA1 2. 在百度地图开放平台下载所需的SDK 3. 将Ba...

Android Studio 百度地图开发(二)GPS定位

两种方式获取手机定位信息

Android studio 百度地图开发(2)地图定位

Android studio 百度地图开发(2)地图定位

Android Studio:10分钟教会你做百度地图定位!并解决SDK22中方法报错的问题!

android studio:写一个简单的百度地图定位,并解决方法报错问题 1、获取SHA1,申请key值 2、下载sdk包 3、公布源码 4、地图的分类 5、 java.lang.Unsatisf...
  • ssh159
  • ssh159
  • 2017年04月01日 09:05
  • 1925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android studio上的百度定位的初始化
举报原因:
原因补充:

(最多只允许输入30个字)