`
herestay
  • 浏览: 36128 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android入门:使用Android GPS实现简单的定位

阅读更多

Activity:

 

package com.van.gps;


import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;

public class GPSTestActivity extends Activity {
	
	
	private TextView textView;//显示文本框
	private LocationManager locationManager;//位置管理
	private GPSLocationListener locationListener;//位置监听器
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textView = (TextView) this.findViewById(R.id.textView_location);
        locationListener=new GPSLocationListener(textView);
        
        //首先打开GPS,查找位置。
        openGPSSettings();
    }
    

    /**
     * 设置GPS。
     */
    private void openGPSSettings() {
        locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
        
        if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
            getLocation();
            return;
        }

        
        
        //提示用户打开GPS
        AlertDialog.Builder builder = new Builder(GPSTestActivity.this); 
        builder.setMessage("必须要开启GPS才能使用此程序,开启?"); 
        builder.setTitle("提示"); 
        builder.setPositiveButton("确认", 
                new android.content.DialogInterface.OnClickListener() { 
                    
                    public void onClick(DialogInterface dialog, int which) { 
                    	Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        startActivityForResult(intent,0); //此为设置完成后返回到获取界面
                    } 
                }); 
        		builder.setNegativeButton("退出", 
                new android.content.DialogInterface.OnClickListener() { 
                 
                    public void onClick(DialogInterface dialog, int which) { 
                        dialog.dismiss(); 
                        GPSTestActivity.this.finish();
                        
                    } 
                }); 
        builder.create().show(); 
        
    }
    

    /**
     * 获取地理位置。
     */
    private void getLocation(){
    	
	    // 查找到服务信息
	    Criteria criteria = new Criteria();
	    criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度
	    criteria.setAltitudeRequired(false);
	    criteria.setBearingRequired(false);
	    criteria.setCostAllowed(true);
	    criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗

	    
	    /**
	     * ANDROID中有两种获取位置的方式,LocationManager.NETWORK_PROVIDER和LocationManager.GPS_PROVIDER;
	     * 前者用于移动网络中获取位置,精度较低但速度很快, 后者使用GPS进行定位,精度很高但一般需要10-60秒时
	     * 间才能开始第1次定位,如果是在 室内则基本上无法定位。
	     * 此方法使用Criteria得到最佳的方式
	     */
	    
	    String provider = locationManager.getBestProvider(criteria, true); // 获取GPS信息
	    Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
	    
	    locationListener.updateLocation(location);//调用方法,更新位置信息
	    
	    // 设置监听器,1秒监听一次
	    locationManager.requestLocationUpdates(provider, 1000, 0 ,locationListener);
	    
    }


GPSLocationListener:

 

 

package com.van.gps;

import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.widget.TextView;

public class GPSLocationListener implements LocationListener{

	//显示文本
	private TextView textView;
	
	
	/**
	 * 构造.
	 * @param textView
	 */
	public GPSLocationListener(TextView textView){
		this.textView=textView;
	}
	
	@Override
	public void onLocationChanged(Location location) {
	        updateLocation(location);
	}

	@Override
	public void onProviderDisabled(String provider) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onProviderEnabled(String provider) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		// TODO Auto-generated method stub
		
	}
	/**
     * 更新位置显示.
     * @param location
     */
    public void updateLocation(Location location) {

        
        if (location != null) {
            double  latitude = location.getLatitude();
            double longitude= location.getLongitude();
            textView.setText("维度:" +  latitude+ "\n经度:" + longitude);
        } else {
        	textView.setText("无法获取地理信息");
        }

    }

    

}

 

 

效果如下:

 

分享到:
评论

相关推荐

    xamarin android gps定位获取经纬度

    xamarin android中使用gps定位获取经纬度,入门的简单介绍:http://blog.csdn.net/kebi007/article/details/74936979

    Android入门到精通源代码.

    11.3 Android模拟器支持的GPS定位文件 11.3.1 KML 11.3.2 NMEA 11.4 应用实例详解:确定当前 位置的GPS程序 11.4.1 实例分析 11.4.2 实例实现 11.5 基于Google Map的应用 11.5.1 使用MapView显示地图 11.5.2 使用...

    Android程序员入门(中文版)

    - **主界面设计**:使用XML布局文件设计应用程序的用户界面,可以包含简单的文本视图显示“Hello World!”。 - **运行调试**:在模拟器或连接的真机上运行应用程序,并进行调试。 #### 五、使用命令行工具和Android...

    Android从入门到精通_巅峰卓越(附带光盘资料).doc

    - **GPS定位**:学习如何使用GPS获取设备的位置信息。 - **网络定位**:了解如何利用Wi-Fi热点或移动基站获取位置信息。 - **Google Maps API**:介绍如何集成Google Maps API,实现地图显示和路径规划等功能。 ...

    安卓Android源码——androidGPS及WIFI基站定位坐标源码.rar

    【标题】中的“安卓Android源码——androidGPS及WIFI基站定位坐标源码”表明了这是一个关于Android系统中GPS和Wi-Fi基站定位功能的源代码集合。在Android平台上,定位服务是应用程序能够获取用户当前位置的关键组件...

    Android程序员入门 中文版 pdf

    ### Android程序员入门知识点总结 #### 一、Android简介与历史 - **定义**: Android是一种基于Linux内核的开源操作系统,主要用于移动设备如智能手机和平板电脑。 - **发展历史**: - **起源**: 由Andy Rubin等人...

    delphi XE6 android 编程入门pdf 含 demo源码

    《Delphi XE6 Android编程入门》是一本深入浅出的教程,专为那些希望使用Embarcadero Delphi XE6开发Android应用的初学者和开发者设计。这本书结合了理论知识与实践案例,帮助读者快速掌握Delphi XE6在Android平台上...

    Google Android 开发入门指南(第二版).pdf

    本书主要介绍了Android 2.x版本的应用开发技术,适合初学者快速入门Android开发,并逐步进阶至高级主题。内容涵盖Android平台的基本概念、应用设计原理以及具体的开发技巧。 #### 三、核心知识点详解 ##### 1. ...

    Android入门中文教程

    ### Android入门中文教程知识点解析 #### 一、Android概述 - **定义**:Android是一个针对移动设备设计的软件集合,主要包括操作系统、中间件以及一系列重要应用程序。它为开发者提供了使用Java语言开发移动应用所...

    android编程入门(中文PDF版)

    定位服务是现代移动应用的重要功能之一,本章节将介绍如何在Android应用中使用GPS获取位置信息,并通过示例展示如何在Google地图上显示位置。 **5.4 使用Google API的Gtalk** Google API提供了丰富的功能,包括...

    Android开发编程从入门到精通——Android程序员必备

    ### Android开发编程从入门到精通——Android程序员必备 #### 一、什么是Android及发展历程 - **定义**:Android是一种基于Linux内核的操作系统,主要用于移动设备如智能手机和平板电脑等。 - **历史背景**: - ...

    Android应用源码之两个GPS导航定位源码.zip

    这份"Android应用源码之两个GPS导航定位源码.zip"的压缩包显然包含了两个示例项目,帮助开发者深入理解如何在Android环境中实现GPS定位功能。下面我们将详细探讨相关的知识点。 首先,Android提供了Location API来...

    Android Gps Test源码-IT计算机-毕业设计.zip

    它为学生们提供了一个实践平台,帮助他们深入理解Android系统中GPS模块的工作原理以及如何在应用程序中实现定位功能。通过这个项目,学生可以了解到Android应用开发的基础知识,包括Android Studio的使用、布局设计...

    《Google Android开发入门与实战》.pdf

    12-16章,作者通过五个综合案例——RSS阅读器、个人GPS应用、豆瓣网客户端、在线音乐播放器和手机信息查看助手,提供了实际开发的详细步骤和代码实现,覆盖了XML解析、地图服务、Web API集成、多媒体播放和系统信息...

    Android编程指南+程序员入门(中文版).pdf

    - **GPS定位服务**:介绍如何在应用中获取设备的位置信息,包括定位权限申请、位置监听和地理编码等功能的实现。 #### 6. 第十章:使用Google API的Gtalk - **Google API集成**:教授如何利用Google API实现即时...

    Android高德地图定位移动定位

    本示例主要讲解如何在Android应用中使用高德地图API实现2D定位功能,适合初学者入门。首先,我们需要了解一些基础知识: 1. **申请高德地图API Key**: 在使用高德地图服务前,你需要在高德地图开放平台...

    android gps定位

    本教程将详细解释如何在Android中实现GPS定位,适合初学者入门。 首先,为了使用GPS定位,我们需要在Android应用中获取`LocationManager`服务。`LocationManager`是Android系统提供的一个接口,它负责管理各种位置...

    Android从入门到精通(PPT)

    《Android从入门到精通》是一套全面且深入的Android学习资料,主要针对初学者和希望进一步提升Android开发技能的开发者。这份PPT光盘包含了从基础概念到高级实践的完整内容,旨在帮助读者掌握Android应用开发的核心...

    Android高薪之路:Android程序员面试宝典 李宁

    第1章 Android入门 1 1 关于Android的非技术问题 1 1 1 为什么看好 Android 1 1 2 以前是否从事过Android的工作 做过哪些工作 1 1 3 你做的最复杂的界面是什么 1 1 4 如何解决Android学习中遇到的难题 1 1 5 Android...

Global site tag (gtag.js) - Google Analytics