设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4080|回复: 0

[代码分享] 安卓通过GPS获取地理位置《转载》

[复制链接]

65

主题

3

好友

739

积分

超级版主

Rank: 8Rank: 8

自我介绍
新年第一天据说有雨,全民齐赏日出的计划恐要泡汤。”宋仁宗拍着包拯的肩,“朕决定把你悬挂在城门上。”“但微臣额上的不是太阳是月亮啊!”“没事,挂久一点就会升级成太阳
生肖
星座
狮子座
性别

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 论坛元老

发表于 2013-7-9 16:55:21 |显示全部楼层

LocationActivity.java

/*  LocationActivity.java

*  @author octobershiner

*  2011 7 22

*  SE.HIT

*  一个演示定位用户的位置并且监听位置变化的代码

* */

package uni.location;


import android.app.Activity;

import android.content.Context;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.os.Bundle;

import android.os.Vibrator;

import android.util.Log;

import android.widget.TextView;


public class LocationActivity extends Activity {

    /** Called when the activity is first created. */

    //创建lcoationManager对象

    private LocationManager manager;

    private static final String TAG = "LOCATION DEMO";

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //获取系统的服务,

        manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        //第一次获得设备的位置

        updateLocation(location);   

        //重要函数,监听数据测试

        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10,   

                       locationListener);   


    }

    /*此处更新一下,当activity不处于活动状态时取消GPS的监听*/

      public void onPause(){

       super.onPause();

       locationManager.removeListener(locationListener);

}


    //创建一个事件监听器

   private final LocationListener locationListener = new LocationListener() {   

            public void onLocationChanged(Location location) {   

            updateLocation(location);   

            }   

            public void onProviderDisabled(String provider){

                updateLocation(null);   

                Log.i(TAG, "Provider now is disabled..");

            }   

            public void onProviderEnabled(String provider){

                Log.i(TAG, "Provider now is enabled..");

            }   

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

    };   


//获取用户位置的函数,利用Log显示

    private void updateLocation(Location location) {   

            String latLng;     

            if (location != null) {   

            double lat = location.getLatitude();   

            double lng = location.getLongitude();


            latLng = "Latitude:" + lat + "  Longitude:" + lng;   

            } else {   

            latLng = "Can't access your location";  

            }

            Log.i(TAG, "The location has changed..");

            Log.i(TAG, "Your Location:" +latLng);

    }


}




只修改activity文件是不够的,因为android系统的安全性,对服务采用授权的机制,所以需要修改manifest.xml文件

view plain

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="uni.location"

      android:versionCode="1"

      android:versionName="1.0">

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


    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".LocationActivity"

                  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>

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

</manifest>


很多朋友可能会有疑问,那就是GPS定位在android虚拟机上的调试问题,其实是可以模拟的,大家启动虚拟机,然后打开DDMS的界面,左侧device栏目会动态显示虚拟机上各项服务启动的情况,待出虚拟机现解锁界面后,单机device栏目下面的emulator行,这时会发现下面的emulator control下面会有location control ,打开里面的manual标签,哈哈相信你已经看到了经纬度,你可以更改。运行你的程序,然后单击刚才经纬度设置的send按钮就可以模拟接受到新的地理位置了。


相关帖子

您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-3-29 05:22 , Processed in 0.144592 second(s), 34 queries .

回顶部