`
修博龙泉
  • 浏览: 318031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android GPS定位 经纬度确定

阅读更多
直接上源码,获取当前用户的经纬度!MainActivity.java


package com.mixian.activity;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    protected static final String TAG = "MainActivity";
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button getLocaltionButton = (Button)findViewById(R.id.GetLocaltion);
        getLocaltionButton.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
openGPSSettings();
        getLocation();
      
}
        });
    }
    private void updateToNewLocation(Location location) {
        TextView tv1;
        tv1 = (TextView) this.findViewById(R.id.tv1);
        if (location != null) {
            double  latitude = location.getLatitude();
            double longitude= location.getLongitude();
            tv1.setText("维度:" +  latitude+ "\n经度" + longitude);
            try{
        //直接调用图吧地图
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse("geo:"+latitude+','+longitude+','+"北京市西城区阜外大街2号万通大厦");
        intent.setData(uri);
        intent.setClassName("com.mapbar.android.mapbarmap", "com.mapbar.android.mapbarmap.FilterServiceActivity");
        startActivity(intent);
        }catch(Exception ex){
        ex.printStackTrace();
        }
            tv1.setText("地图在哪里?");
        } else {
            tv1.setText("无法获取地理信息");
        }
    }
    //首先判断GPS模块是否存在或者是开启:
    private void openGPSSettings() {
        LocationManager alm = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
        if (alm
                .isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
            Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT)
                    .show();
            return;
        }

        Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
        startActivityForResult(intent,0); //此为设置完成后返回到获取界面

    }
    //如果开启正常,则会直接进入到显示页面,如果开启不正常,则会进行到GPS设置页面:
    private void getLocation()
    {
    // 获取位置管理服务
    LocationManager locationManager;
    String serviceName = Context.LOCATION_SERVICE;
    locationManager = (LocationManager) this.getSystemService(serviceName);
    // 查找到服务信息
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗

    String provider = locationManager.getBestProvider(criteria, true); // 获取GPS信息
    Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
    updateToNewLocation(location);
    // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
    locationManager.requestLocationUpdates(provider, 100 * 1000, 500,new LocationListener() {

public void onStatusChanged(String provider, int status, Bundle extras) {
Log.i(TAG, "onStatusChanged()");

}

public void onProviderEnabled(String provider) {
Log.i(TAG, "onProviderEnabled()");

}

public void onProviderDisabled(String provider) {
Log.i(TAG, "onProviderDisabled()");

}

public void onLocationChanged(Location location) {
updateToNewLocation(location);
Log.i(TAG, "onLocationChanged()");

}
});
    }
}
AndroidManifest.xml

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

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <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>
    </application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
</manifest>
分享到:
评论

相关推荐

    android基于Gps 定位和基站定位获取经纬度

    GPS定位是通过接收多个卫星信号来确定设备的精确地理位置。在Android中,我们可以使用`LocationManager`服务来请求GPS定位服务。首先,需要在AndroidManifest.xml文件中添加必要的权限: ```xml ...

    android GPS获取经纬度

    这是获取GPS定位的必要权限。 ```xml &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt; ``` 2. **初始化LocationManager**:在应用程序中,我们可以通过Context的getSystemService方法...

    GPS定位(经纬度获取)

    本篇文章将深入探讨如何实现GPS定位功能,检测GPS状态,并实时采集当前经纬度信息。 首先,我们需要理解GPS定位的基本原理。GPS系统由24颗以上的卫星组成,这些卫星不断发送信号到地球表面。当用户设备(如智能手机...

    GPS定位获取经纬度

    "GPS定位获取经纬度"这个主题涉及到如何在应用中检测并利用GPS服务来获取用户的精确地理位置坐标,即经度和纬度。这里我们将深入探讨相关知识点。 首先,我们需要了解GPS的基本原理。GPS是一个全球卫星导航系统,...

    android 基于基站,apn,gps,wifi,network 根据不同手机sim卡获取经纬度

    标题提到的“基于基站,APN,GPS,WiFi,Network 根据不同手机SIM卡获取经纬度”涉及了多种定位技术,每种都有其特性和应用场景。下面将详细介绍这些技术以及如何在Android中实现。 首先,我们来了解几种主要的定位...

    Android GPS定位例子

    这个"Android GPS定位例子"是一个实现GPS定位功能的示例项目,它已经被测试并确认能够正常运行,尽管GPS定位通常需要一定时间来获取精确的位置信息。 Android系统提供了一套完整的API,即Location API,用于获取...

    Android GPS定位

    本文将深入探讨Android GPS定位的原理、API使用、权限管理以及优化策略。 一、Android GPS定位原理 1. GPS工作原理:GPS定位依赖于一组分布在地球轨道上的24颗卫星,通过接收至少四颗卫星的信号,计算出设备的...

    Android高级应用源码-android获取当前经纬度.zip

    - GPS定位:通过接收卫星信号来确定设备的位置,精度高,但需要开启GPS硬件并有清晰的天空视野。 - 网络定位:利用移动网络基站或Wi-Fi热点信息进行定位,精度较低,但无需直接接收卫星信号,室内也能工作。 2. *...

    Android_GPS.zip_GPS_android_android gps_blanketwy8_方位角经纬度

    总的来说,理解并掌握在Android中如何获取GPS经纬度、计算距离和方位角是开发定位相关应用的基础。这涉及到对Android系统API的熟练使用,以及对地理坐标系统和导航原理的基本认识。通过实践和参考提供的教程资料,...

    解决Android锁屏无法继续定位问题-最新

    解决Android锁屏无法继续定位的问题,我在启动定位的时候提示了吐司,如果返回定位会显示"启动定位"四个字。在启动定位了之后,往本地写了一个txt文件, txt文件显示的是 “时间、经纬度”等一些信息。可查看确认...

    gps定位获取卫星个数并日志记录

    要实现“GPS定位获取卫星个数并日志记录”,我们需要理解和利用Android的LocationManager服务、GPS定位API以及日志记录机制。以下将详细介绍这些知识点。 1. **LocationManager服务**: Android的LocationManager...

    Android_GPS如何获取经纬度

    ### Android GPS 获取经纬度详解 #### 一、引言 在Android开发中,获取设备的地理位置是一项非常重要的功能。这不仅对于地图应用至关重要,对于许多其他类型的应用也非常有用,比如天气预报、本地服务推荐等。本文...

    android 位置服务android 位置服务,获得经纬度,在后台输出经纬度。

    这一服务主要依赖于GPS(全球定位系统)、Wi-Fi、移动网络和其他传感器数据来确定设备的位置。Android的位置服务提供了丰富的API,使得开发者能够轻松地集成地理位置功能到他们的应用中,无论是在前台运行还是在后台...

    Android内置GPS与百度GPS对比.zip

    在Android系统中,内置GPS(Global Positioning System)是手机硬件层面提供的定位服务,它通过接收卫星信号来确定设备的精确位置。而百度GPS则是百度地图服务中的一个组件,是软件层面实现的定位功能,它结合了网络...

    Android之GPS定位

    Android设备通过接收这些信号,计算出与各个卫星的距离,再通过三角定位原理确定设备的精确经纬度。为了确保定位准确,通常需要接收到至少四颗卫星的信号。 在Android中,实现GPS定位主要涉及到`LocationManager`...

    百度地图经纬度定位

    经纬度是一种地理坐标系统,用于确定地球上任意一点的位置。经度是从本初子午线(通过英国格林尼治的经线)到目标地点所测量的角度,范围从0°到180°E和180°W。纬度则是在赤道(0°纬度)与目标地点之间的角度,...

    androidgps基站与WIFI定位源码.zip

    本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi-Fi定位功能的源代码,非常适合Android开发者学习和参考。 首先,我们要理解Android系统中的定位机制。Android提供了Location API,这是一...

    android 基站、WIFI、GPS定位集合【源码】

    - **原理**:GPS定位是通过接收至少4颗卫星的信号,计算出设备到每颗卫星的距离,进而确定三维坐标。 - **API**:Android的`LocationManager.requestLocationUpdates()`用于请求GPS位置更新,`LocationProvider`...

    模拟gps经纬度数据(带全国).rar

    在IT行业中,GPS(全球定位系统,Global Positioning System)是一项至关重要的技术,它通过接收卫星信号来确定地球上任何位置的精确经纬度坐标。在软件开发、地理信息系统(GIS)、移动应用等领域,模拟GPS经纬度...

Global site tag (gtag.js) - Google Analytics