zoukankan      html  css  js  c++  java
  • 获取LocationProvider

    Android的定位信息由LocationProvider对象来提供,该对象代表一个抽象的定位组件。在开始编程之前,需要先获得LocationProvider对象。

    一、获取所有可用的LocationProvider

    LocationManager提供了一个getAllProviders()方法来获取系统所有可用LocationProvider,下面的示例程序将可以列出系统所有的LocationProvider,

    import java.util.List;

    import android.location.LocationManager;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class AllProviderTest extends Activity {
      ListView providers;
      LocationManager lm;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_provider_test);
        providers = (ListView) findViewById(R.id.providers);
        //获取系统的LocationManager对象
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        //获取系统所有的LocationProvider的名称
        List<String> providerNames = lm.getAllProviders();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                  android.R.layout.simple_list_item_1,providerNames);
        //使用ListView来显示所有可用的LocationProvider
        providers.setAdapter(adapter);
      }

    }

    二、通过名称获得指定LocationProvider

    程序调用LocationManager的getAllProviders()方法获取所有LocationProvider时返回的是List<String>集合,集合元素为LocationProvider的名称,为了获取实际的LocationProvider对象,可借助于LocationManager的LocationProvider  getProvider(String  name)方法。

    例如以下代码:

    //获取基于GPS的LocationProvider

    LocationProvider locProvider  lm.getProvider(LocationManager.GPS_PROVIDER);

    三、根据Criteria获取LocationProvider

    前面的程序调用LocationManager的getAllProviders()方法返回了系统所有可用的LocationProvider,但大部分时候,应用程序可能希望得到符合指定条件的LocationProvider,这就需要借助于LocationManager的getBestProvider(Criteria  criteria , boolean  enabledOnle)方法来获取。

    上面的方法中Criteria就代表一个“过滤”条件,该方法将只返回符合该Criteria的LocationProvider,Criteria提供如下常用的方法来设置条件:

    1、setAccuracy(int  accuracy):设置对LocationProvider的精度要求。

    2、setAltitudeRequired(boolean  altitudeRequired):设置要求LocationProvider能提供高度信息。

    3、setBearingRequired(boolean  bearingRequired):设置要求LocationProvider能提供方向信息。

    4、setCostAllowed(boolean  costAllowed):设置要求LocationProvider是否免费。

    5、setPowerRequired(int  level):设置要求LocationProvider的耗电量。

    6、setSpeedRequired(boolean  speedRequired):设置要求LocationProvider能提供速度信息。

    下面的程序示范了如何获取系统中免费的LocationProvider,并且该LocationProvider必须能提供高度信息、速度信息等。

    import java.util.List;

    import android.location.Criteria;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class FreeProviderTest extends Activity {
      ListView providers;
      LocationManager lm;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_free_provider_test);
        providers = (ListView) findViewById(R.id.providers);
        //获取系统的LocationManager对象
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        //创建一个LocationProvider的过滤条件
        Criteria cri = new Criteria();
        //设置要求LocationProvider必须是免费的
        cri.setCostAllowed(false);
        //设置要求LocationProvider能提供高度信息
        cri.setAltitudeRequired(true);
        //设置要求LocationProvider能提供方向信息
        cri.setBearingRequired(true);
        //获取系统所有符合条件的LocationProvider的名称
        List<String> providerNames = lm.getAllProviders();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, providerNames);
        //使用ListView来显示所有可用的LocationProvider
        providers.setAdapter(adapter);
      }

    }

    上面的程序中粗体字代码创建了一个Criteria对象,并通过设置了LocationProvider必须满足的条件,运行该程序,即可列出所有符合Criteria条件的LocationProvider。

  • 相关阅读:
    使用getattr() 分类: python基础学习 divide into python 2014-02-24 15:50 198人阅读 评论(0) 收藏
    使用locals()获得类,进行分发 分类: python 小练习 divide into python python基础学习 2014-02-21 14:51 217人阅读 评论(0) 收藏
    第1课第4.4节_Android硬件访问服务编写HAL代码
    第4.3节_Android硬件访问服务编写APP代码
    函数说明
    第1课第1节_编写第1个Android应用程序实现按钮和复选框
    vue生命周期
    程序代码中,怎么区分status和state?
    百度UEditor -- ZeroClipboard is not defined
    webstorm 设置ES6语法支持以及添加vuejs开发配置
  • 原文地址:https://www.cnblogs.com/jiww/p/5653793.html
Copyright © 2011-2022 走看看