Android 百度定位获得当前具体位置

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。
可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

Android项目截图注意libs的文件名都是固定的,否则会报错。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2.89"
        android:text=" "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.50"
        android:gravity="center|top"
        android:orientation="vertical" >

        <Button
            android:id="@+id/addfence"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开启定位" />
    </LinearLayout>

</LinearLayout>

MainActivity:

package com.example.getcoord_text;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

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

public class MainActivity extends Activity{
	private LocationClient mLocationClient;//定位SDK的核心类
	private TextView LocationResult;
	private Button startLocation;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mLocationClient = ((LocationApplication)getApplication()).mLocationClient;

		LocationResult = (TextView)findViewById(R.id.textView1);
		 ((LocationApplication)getApplication()).mLocationResult = LocationResult;//调用LocationApplication,获得需要的信息
		startLocation = (Button)findViewById(R.id.addfence);
		startLocation.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				InitLocation();//初始化
				if(startLocation.getText().equals("开启定位")){
					mLocationClient.start();
					startLocation.setText("停止定位");
				}else{
					mLocationClient.stop();
					startLocation.setText("开启定位");
				}
			}
		});

	}
	@Override
	protected void onStop() {
		mLocationClient.stop();
		super.onStop();
	}

	private void InitLocation(){
		LocationClientOption option = new LocationClientOption();
		option.setLocationMode(LocationMode.Hight_Accuracy);//设置高精度定位定位模式
		option.setCoorType("bd09ll");//设置百度经纬度坐标系格式
		option.setScanSpan(1000);//设置发起定位请求的间隔时间为1000ms
		option.setIsNeedAddress(true);//反编译获得具体位置,只有网络定位才可以
		mLocationClient.setLocOption(option);
	}
}

LocationApplication类:

package com.example.getcoord_text;

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

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

public class LocationApplication extends Application {
	public LocationClient mLocationClient;//定位SDK的核心类
	public MyLocationListener mMyLocationListener;//定义监听类
	public TextView mLocationResult,logMsg;

	@Override
	public void onCreate() {
		super.onCreate();
		mLocationClient = new LocationClient(this.getApplicationContext());
		mMyLocationListener = new MyLocationListener();
		mLocationClient.registerLocationListener(mMyLocationListener);
	}

	/**
	 * 实现实位回调监听
	 */
	public class MyLocationListener implements BDLocationListener {

		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());//获得erro code得知定位现状
			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){//通过GPS定位
				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();
		}
	}

}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.getcoord_text"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <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" />

    <application
        android:name="com.example.getcoord_text.LocationApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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需要写在application中 -->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="sGFSyZlrvnHGr9GipH70G6Nd" />

        <activity
            android:name="com.example.getcoord_text.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>
    </application>

</manifest>

时间: 2024-10-23 02:51:34

Android 百度定位获得当前具体位置的相关文章

android百度定位后显示在地图上点击弹出气泡

1.到百度地图页面申请key,注意key和项目包名和数字签名一一对应的.http://developer.baidu.com/map/index.php?title=%E9%A6%96%E9%A1%B5 2.下载相应的sdk包 :http://lbsyun.baidu.com/sdk/download 3. 创建项目,加入相应的包 在AndroidManifest中添加开发密钥.所需权限等信息: (1)在application中添加开发密钥 <application <meta-data an

android 百度定位 api error code 大全

http://www.zhuke.com/user/zkuser33038828?GTI=baidu.com&m3=&lvhttp://www.zhuke.com/user/zkuser90921642?GTI=baidu.com&m3=&lvhttp://www.zhuke.com/user/zkuser36771367?GTI=baidu.com&m3=&lvhttp://www.zhuke.com/user/zkuser80244229?GTI=bai

Android之百度定位API使用

API版本: 百度定位API:V5.0(http://developer.baidu.com/map/wiki/index.php?title=android-locsdk/guide/v5-0) 百度Geocoding API:V2.0(http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-geocoding#7..E9.80.86.E5.9C.B0.E7.90.86.E7.BC.96.E7.A0.81.E

Android 百度鹰眼轨迹SDK(v2.1.6)

闲聊 看过<鹰眼追击>这部电影的读者一定对"鹰眼"这台巨无霸计算机印象深刻,如今我们能够实现自己的鹰眼. 效果图 本篇为百度地图SDK第三篇博文 第一篇实现:Android 百度地图周边雷达(v6.1.3)及覆盖物 第二篇实现:Android 百度定位SDK(v6.1.3)结合方向传感器 本博文为第三篇 使用百度鹰眼轨迹SDK能够实现的功能 轨迹追踪 借助GPS.基站.Wi-Fi和传感器信息,实现室内.外高精度的连续轨迹追踪.总体定位精度50m: GPS:10m(取决于芯片

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

[android] 百度地图开发 (二).定位城市位置和城市POI搜索

一. 百度地图城市定位和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?       通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当

百度地图定位 : 获取当前位置的经纬度

说明: 1.初始化 BaiduMap SDK要在显示界面之前,即: SDKInitializer.initialize(Context); setContentView(R.layout.main); 2. 设置定位的模式是 LocationMode.Hight_Accuracy 时,在室内可能无法获取到准确的经纬度,会得到默认的值是4.9E-324 处理办法是将模式改为Battery_Saving,或到室外 3.可以根据当前设备网络连接情况和GPS是否开启来设定定位模式 //获得网络连接情况

Android定位开发之百度定位、高德定位、腾讯定位,三足鼎立一起为我所用!

这几天的项目不是非常紧.于是想为未来可能要做的项目做一些技术储备. 下一个项目非常有可能是定位开发,须要用到手机定位功能,于是查了查如今比較流行的第三方定位,最火的基本上就是百度定位>高德定位>腾讯定位了. 想了想不如做一个DEMO把三种定位方式混合一下试试. BaiduLocTool.java package com.dhcc.mixlocation; import android.content.Context; import com.baidu.location.BDLocation;

Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器

在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图添加:第一,定位功能:第二,与方向传感器结合,通过旋转手机进行道路的方向确认.有了这两个功能,地图已经可以为我服务了~~~~ 效果图: 好了,可以代码,为了方便,我把所有的按钮都放到了menu菜单中. 1.初次启动定位 [java] view plaincopy /** * 定位的客户端 */ private LocationClient mLocationClient; /** * 定位的监听器 */ public MyLoca