Android使用criteria选择合适的地理位置服务实现方法

本文实例讲述了Android使用criteria选择合适的地理位置服务实现方法。分享给大家供大家参考,具体如下:

/* LocationActivity.java
 * @author octobershiner
 * 2011 7 24
 * SE.HIT
 * 利用Criteria选择最优的位置服务,演示定位用户的位置并且监听位置变化的代码
 * */
package uni.location;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
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);
    //创建一个criteria对象
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_COARSE);
    //设置不需要获取海拔方向数据
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    //设置允许产生资费
    criteria.setCostAllowed(true);
    //要求低耗电
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    String provider = manager.getBestProvider(criteria, false);
    Log.i(TAG, "we choose "+ provider);
    Location location = manager.getLastKnownLocation(provider);
    //第一次获得设备的位置
    updateLocation(location);
    //重要函数,监听数据测试
    manager.requestLocationUpdates(provider, 6000, 10,
            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);
  }
}

同时修改manifest.xml文件:

<?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>

演示结果:

可任看到 我们只要求低的精确度并且最低电量,从最后一行可以看到我的虚拟机网络服务并没有打开,但是选择最佳provider的时候,参数选择了false 所以同样可以选择。

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android使用GPS获取用户地理位置并监听位置变化的方法

    本文实例讲述了Android使用GPS获取用户地理位置并监听位置变化的方法.分享给大家供大家参考,具体如下: LocationActivity.java /* LocationActivity.java * @author octobershiner * 2011 7 22 * SE.HIT * 一个演示定位用户的位置并且监听位置变化的代码 * */ package uni.location; import android.app.Activity; import android.content

  • Android开发之Location用法实例分析

    本文实例讲述了Android开发中Location用法.分享给大家供大家参考,具体如下: Location 在Android 开发中还是经常用到的,如通过经纬度获取天气,根据Location 获取所在地区详细Address (比如Google Map 开发)等.而在Android 中通过LocationManager来获取Location .通常获取Location 有GPS 获取,WIFI 获取. 这边介绍一个简单的小Demo ,来教大家如何获取Location ,从而获取经纬度. 第一步:创

  • 用Android Location获取当前地理位置的方法

    在Android应用中,往往有获取当前地理位置的需求,比如微信获取附近的人需要获取用户当前的位置,不多说,直接上例子. 复制代码 代码如下: public Location getLocation() {// 获取Location通过LocationManger获取!  LocationManager locManger = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  Location loc = locMange

  • Android百度定位导航之基于百度地图移动获取位置和自动定位

    一.问题描述 使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置 百度Api不同版本使用会有些差异,本例中加入lib如下: 二.编写MyApplication类 public class MyApplication extends Application { static MyApplication myApplication; BMapManager mBMapManager = null; String mStrKey = "7ZfuR

  • 浅析Android手机卫士之手机实现短信指令获取位置

    推荐阅读: 浅析Android手机卫士sim卡绑定 深入浅析Android手机卫士保存密码时进行md5加密 详解Android 手机卫士设置向导页面 浅析Android手机卫士关闭自动更新 浅析Android手机卫士自定义控件的属性 浅析Android手机卫士读取联系人 浅析Android手机卫士接收短信指令执行相应操作 浅析Android手机卫士手机定位的原理 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreat

  • android通过gps获取定位的位置数据和gps经纬度

    复制代码 代码如下: package com.action.android_test;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.

  • Android获取当前位置的经纬度数据

    现在有这么一个需求:开启一个Service服务,获取当前位置的经纬度数据,将获取的数据以广播的方式发送出去,注册广播的Activity接收广播信息,并将接收到的数据在当前Activity显示,如果当前位置发生变化,经纬度数据改变,获取改变后的经纬度数据,通过Handler发送消息,更新UI界面,显示更新后的内容,请问这样子的Demo该如何实现? LocationTool获取当前位置信息 Android手机获取当前位置的方式:GPS定位,WIFI定位,基站定位,当前Demo使用GPS卫星定位,在L

  • Android编程获取地理位置的经度和纬度实例

    本文实例讲述了Android编程获取地理位置的经度和纬度.分享给大家供大家参考,具体如下: 在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息.看如下实例:新建android应用程序TestLocation. 1.activity_main.xml布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_w

  • Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q

  • android通过Location API显示地址信息的实现方法

    本文实例讲述了android通过Location API显示地址信息的实现方法.分享给大家供大家参考.具体如下: android的Locatin API,可以通过Geocoder类,显示具体经纬度的地址信息.如: 通过Geocoder的方法getFromLocation()可以得到Address对象的List.我只取一个Address结果,可以取多个,但是意义不大. StringBuilder builder = new StringBuilder(); builder.append("北纬:&

  • Android打开GPS导航并获取位置信息返回null解决方案

    最近在做一个 Android 项目,需要用到GPS获取位置信息,从 API 查了一下,发现获取位置信息仅需极其简单的一句即可: 复制代码 代码如下: getLastKnownLocation(LocationManager.GPS_PROVIDER), 于是高兴地不得了.可是一写进代码里,返回值(Location 类型)居然一直为null..郁闷的不得了.在网上查了好久,发现好多人都和我一样纠结于这个问题上,有人说是因为GPS没打开,也有人说是相关权限没加上..可是我的明明已经在设置里打开,权限

  • Android系统模拟位置的使用方法

    本文为大家分享了Android模拟位置的使用方法,支持Android6.0,供大家参考,具体内容如下 1.开启系统设置中的模拟位置 Android 6.0 以下:[开发者选项 -> 允许模拟位置] Android 6.0 及以上:[开发者选项 -> 选择模拟位置信息应用] AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> &

随机推荐