<LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="100dip"        android:background="@android:color/white"        android:orientation="vertical" >        <TextView            android:id="@+id/textview_location_latitude_degree"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="@android:color/black"            android:textStyle="bold"            android:text="location" />        <TextView            android:id="@+id/textview_location_longitude_degree"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="@android:color/black"            android:textStyle="bold"            android:text="location" />    </LinearLayout>        <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:layout_marginTop="30dip" >         <com.baidu.mapapi.MapView            android:id="@+id/bmapView"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:clickable="true" />     </LinearLayout></LinearLayout>
View Code

BMapApiDemoApp.java

package com.example.textdemo4;import android.app.Application;import android.util.Log;import android.widget.TextView;import android.widget.Toast;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.MKEvent;import com.baidu.mapapi.MKGeneralListener;public class BMapApiDemoApp extends Application {        public LocationClient mLocationClient = null;    public String mData;    public String address;    public MyLocationListenner myListener = new MyLocationListenner();    public TextView mTv;    public TextView mAddress;        /*private static LocationApplication instance;    public static LocationApplication getInstance() {        return instance;    }*/        static BMapApiDemoApp mDemoApp;    private static BMapApiDemoApp instance;        public static BMapApiDemoApp getInstance() {        return instance;    }        BMapManager mBMapMan = null;  //百度MapAPI的管理类        // 授权Key    // 申请地址:http://developer.baidu.com/map/android-mobile-apply-key.htm    String mStrKey = "F7A0CB2F6BA513A57031EEBEBE99BEC0B9A36434";    boolean m_bKeyRight = true;    // 授权Key正确,验证通过        // 常用事件监听,用来处理通常的网络错误,授权验证错误等    static class MyGeneralListener implements MKGeneralListener {        @Override        public void onGetNetworkState(int iError) {            Log.d("MyGeneralListener", "onGetNetworkState error is "+ iError);            Toast.makeText(BMapApiDemoApp.mDemoApp.getApplicationContext(), "您的网络出错啦!",                    Toast.LENGTH_LONG).show();        }        @Override        public void onGetPermissionState(int iError) {            Log.d("MyGeneralListener", "onGetPermissionState error is "+ iError);            if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {                // 授权Key错误:                Toast.makeText(BMapApiDemoApp.mDemoApp.getApplicationContext(),                         "请在BMapApiDemoApp.java文件输入正确的授权Key!",                        Toast.LENGTH_LONG).show();                BMapApiDemoApp.mDemoApp.m_bKeyRight = false;            }        }    }    @Override    public void onCreate() {        Log.v("BMapApiDemoApp", "onCreate");        mDemoApp = this;        mBMapMan = new BMapManager(this);        boolean isSuccess = mBMapMan.init(this.mStrKey, new MyGeneralListener());        // 初始化地图sdk成功,设置定位监听时间        if (isSuccess) {            mBMapMan.getLocationManager().setNotifyInternal(10, 5);        }        else {            // 地图sdk初始化失败,不能使用sdk        }                //----------------------        instance = this;        mLocationClient = new LocationClient(getApplicationContext());        mLocationClient.registerLocationListener(myListener);        setLocationOption();        //----------------------        super.onCreate();    }    @Override    //建议在您app的退出之前调用mapadpi的destroy()函数,避免重复初始化带来的时间消耗    public void onTerminate() {        if (mBMapMan != null) {            mBMapMan.destroy();            mBMapMan = null;        }        super.onTerminate();    }        // 设置相关参数    public void setLocationOption() {        LocationClientOption option = new LocationClientOption();        option.setProdName("Compass");        option.setOpenGps(true); // 打开gps        option.setCoorType("bd09ll");         option.setAddrType("all");         option.setScanSpan(5 * 60 * 1000);         option.setPriority(LocationClientOption.NetWorkFirst);        mLocationClient.setLocOption(option);    }            /**     *监听函数,又新位置的时候,格式化成字符串,输出到屏幕中     */    public class MyLocationListenner implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation location) {            // TODO Auto-generated method stub            if (location == null)                return;            StringBuffer sb = new StringBuffer(256);            // sb.append("时间: ");            // sb.append(location.getTime());            sb.append("纬度 : ");            sb.append(location.getLatitude() + "°");            sb.append(", 经度 : ");            sb.append(location.getLongitude() + "°");//            sb.append(", 精度 : ");//            sb.append(location.getRadius() + " 米");            mData = sb.toString();            if(mTv != null) mTv.setText(sb);                        if (location.getLocType() == BDLocation.TypeGpsLocation) {                address = "速度 : " + location.getSpeed();            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {                address = "地址 : " + location.getAddrStr();            }            if(mAddress !=null) mAddress.setText(address);        }        @Override        public void onReceivePoi(BDLocation poiLocation) {        }    }    }
View Code

MainActivity.java

package com.example.textdemo4;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.LocationListener;import com.baidu.mapapi.MapActivity;import com.baidu.mapapi.MapView;import com.baidu.mapapi.MyLocationOverlay;import android.location.Location;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends MapActivity {        BMapApiDemoApp application;    TextView mLatitudeTV;// 纬度    TextView mLongitudeTV;// 经度        MapView mMapView = null;    LocationListener mLocationListener = null;    MyLocationOverlay mLocationOverlay = null;    //定位图层         @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                application = (BMapApiDemoApp) getApplication();                setContentView(R.layout.activity_main);        mLongitudeTV = (TextView) findViewById(R.id.textview_location_longitude_degree);        mLatitudeTV = (TextView) findViewById(R.id.textview_location_latitude_degree);                application.mTv = mLatitudeTV;        application.mAddress = mLongitudeTV;        application.mLocationClient.start();                //========================        BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();        if (app.mBMapMan == null) {            app.mBMapMan = new BMapManager(getApplication());            app.mBMapMan.init(app.mStrKey, new BMapApiDemoApp.MyGeneralListener());        }        app.mBMapMan.start();        // 如果使用地图SDK,请初始化地图Activity        this.initMapActivity(app.mBMapMan);                mMapView = (MapView)findViewById(R.id.bmapView);        mMapView.setBuiltInZoomControls(true);        //设置在缩放动画过程中也显示overlay,默认为不绘制        mMapView.setDrawOverlayWhenZooming(true);                // 添加定位图层        mLocationOverlay = new MyLocationOverlay(this, mMapView);        mMapView.getOverlays().add(mLocationOverlay);                // 注册定位事件        mLocationListener = new LocationListener(){            @Override            public void onLocationChanged(Location location) {                if (location != null){                    GeoPoint pt = new GeoPoint((int)(location.getLatitude()*1e6),                            (int)(location.getLongitude()*1e6));                    mMapView.getController().animateTo(pt);                }            }        };    }        @Override    protected void onPause() {        BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();        app.mBMapMan.getLocationManager().removeUpdates(mLocationListener);        mLocationOverlay.disableMyLocation();        mLocationOverlay.disableCompass(); // 关闭指南针        app.mBMapMan.stop();        super.onPause();    }            @Override    protected void onResume() {        BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();        // 注册定位事件,定位后将地图移动到定位点        app.mBMapMan.getLocationManager().requestLocationUpdates(mLocationListener);        mLocationOverlay.enableMyLocation();        mLocationOverlay.enableCompass(); // 打开指南针        app.mBMapMan.start();        super.onResume();    }    @Override    protected boolean isRouteDisplayed() {        // TODO Auto-generated method stub        return false;    }    }
View Code

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.textdemo4"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="15" />    <!-- 访问网络的权限 -->    <uses-permission android:name="android.permission.INTERNET" />    <!-- 访问精确位置的权限 -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <!-- 访问网络状态的权限 -->    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <!-- 访问WIFI网络状态的权限 -->    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <!-- 改变WIFI网络状态的权限 -->    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <!-- 读写存储卡的权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <!-- 读取电话状态的权限 -->    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.CALL_PHONE" />    <supports-screens        android:anyDensity="true"        android:largeScreens="true"        android:normalScreens="false"        android:resizeable="true"        android:smallScreens="true" />    <application  android:name=".BMapApiDemoApp"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/title_activity_main"            android:screenOrientation="sensor" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>            <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" />            </application></manifest>
View Code

完整DEMO下载地址:http://download.csdn.net/detail/androidsj/5868395

更多相关文章

  1. android 权限
  2. android 蓝牙driver的启动流程
  3. android installd分析
  4. Android(安卓)获取系统权限的代码
  5. Android(安卓)MediaScannerJNI源码详解
  6. Android(安卓)APK 文件自动安装
  7. (安卓权限)Android(安卓)Permissions
  8. Android(安卓)获取经纬度。2018年写
  9. A-GPS定位与GPS定位的Android简单实现

随机推荐

  1. android TextView 结合SpannableString对
  2. Android(安卓)okhttp3封装
  3. Android实现动态高斯模糊
  4. Android:布局合集
  5. android 电话拦截
  6. Google Analytics SDK for Android
  7. Android(安卓)绘制带有边框的文字
  8. android avd 安装应用到SD卡
  9. Android安装apk程序时出现Segmentation f
  10. Android sim卡 pin码解锁流程.