Android位置服务与传感器Word文档下载推荐.docx

上传人:b****3 文档编号:16389455 上传时间:2022-11-23 格式:DOCX 页数:39 大小:1.04MB
下载 相关 举报
Android位置服务与传感器Word文档下载推荐.docx_第1页
第1页 / 共39页
Android位置服务与传感器Word文档下载推荐.docx_第2页
第2页 / 共39页
Android位置服务与传感器Word文档下载推荐.docx_第3页
第3页 / 共39页
Android位置服务与传感器Word文档下载推荐.docx_第4页
第4页 / 共39页
Android位置服务与传感器Word文档下载推荐.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

Android位置服务与传感器Word文档下载推荐.docx

《Android位置服务与传感器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android位置服务与传感器Word文档下载推荐.docx(39页珍藏版)》请在冰豆网上搜索。

Android位置服务与传感器Word文档下载推荐.docx

根据criteria返回最合适的LocationProvider

getLastKnownLocation(provider)

根据provider获得最新位置信息

getProvider(name)

根据名字获得LocationProvider

getProviders(enabledOnly)

获得可用的LocationProvider列表

requestLocationUpdates(provider,minTime,minDistance,listener)

通过给定的Provider名称,并将其绑定指定的LocationListener监听器

GPS_PROVIDER

静态字符串常量,表明LocationProvider是GPS

NETWORK_PROVIDER

静态字符串常量,表明LocationProvider是网络

表8-1LocationManager类的常用方法

8.1.3LocationProvider介绍

LocationProvider用来描述位置提供者,设置位置提供者的一些属性。

可以通过Criteria类来为LocationProvider设置条件,获得合适的LocationProvider。

表8-2列出了LocationProvider的常用方法和属性。

AVAILABLE

静态整型常量,标示是否可利用

OUT_OF_SERVICE

静态整型常量,不在服务区

TEMPORAILY_UNAVAILABLE

静态整型常量,临时不可利用

getAccuarcy()

获得精度

getName()

获得名称

getPowerRequirement()

获得电源需求

hasMonetaryCost()

花钱的还是免费的

requiresCell()

是否需要访问基站网络

requiresNetWork()

是否需要Intent网络数据

requiresSatelite()

是否需要访问卫星

表8-2LocationProvider的常用方法和属性

LocationProvider中最常用的两个是GPS_PROVIDER和NETWORK_PROVIDER,就是前文提到过的GPS定位和网络定位两种方式。

使用下面代码可以获取系统所有的LocationProvider名称:

packageintroduction.android.gpsLocation;

importjava.util.List;

importandroid.app.Activity;

importandroid.location.LocationManager;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.TextView;

publicclassGooglemapActivityextendsActivity{

/**Calledwhentheactivityisfirstcreated.*/

Buttonbutton;

TextViewtextview;

LocationManagermanager;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

button=(Button)findViewById(R.id.btn_listen);

textview=(TextView)findViewById(R.id.tv_01);

manager=(LocationManager)getSystemService(LOCATION_SERVICE);

//获取系统location服务

button.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获取系统所有的LocationProvider名称

List<

String>

list=manager.getAllProviders();

Stringt="

"

;

for(inti=0;

i<

list.size();

i++){

t+=list.get(i)+"

\n"

}

textview.setText(t);

}

});

}

}

Criteria类可以设置一系列的查询条件,用于查找当前设备当中符合条件的LocationProvider,下面的代码片段展示了Criteria类的一般用法:

Criteriac=newCriteria();

c.setAccuracy(Criteria.ACCURACY_FINE);

//精度高

c.setPowerRequirement(Criteria.POWER_LOW);

//电量消耗低

c.setAltitudeRequired(false);

//不需要海拔

c.setSpeedRequired(false);

//不需要速度

c.setCostAllowed(false);

//不需要费用

Stringprovider=locationManager.getBestProvider(c,false);

//false是指不管当前适配器是否可用

System.out.println(provider);

Location类

Location类用于描述当前设备的地理位置信息,包括了经纬度、方向、高度和速度等。

可以通过LocationManager.getLastKnownLocation(Stringprovider)方法可以获得Location实例。

其常用方法见表8-3。

publicfloatgetAccuracy()

获得精确度

publicdoublegetAltitude()

获得高度

publicfloatgetBearing()

获得方向

publicdoublegetLatitude()

获取经度

publicdoublegetLongitude()

获得纬度

publicfloatgetSpeed()

获得速度

表8-3Location类的常用方法

Location的典型应用见下面的代码片段:

Locationlocation=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

doublelatitude=location.getLatitude();

//经度

doublelongitude=location.getLongitude();

//纬度

doublealtitude=location.getAltitude();

//海拔

8.1.4使用GPS获取当前位置信息

使用GPS获取用户当前位置,一般需要以下几个步骤:

1)在Manifest文件中声明权限:

<

!

--使用GPS定位需要以下权限-->

uses-permissionandroid:

name="

android.permission.ACCESS_FINE_LOCATION"

/>

--使用网络定位需要以下权限-->

android.permission.ACCESS_COARSE_LOCATION"

2)获取LocationManager对象:

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

3)选择一个合适的LocationProvider,并注册一个周期性的位置更新:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,

0,0,newMyLocationListener());

4)实现LocationListener接口,获取位置信息:

classMyLocationListenerimplementsLocationListener{

@Override

publicvoidonLocationChanged(Locationlocation){

tv_01.setText("

您当前位置的经度为:

+location.getLongitude());

tv_02.setText("

您当前位置的纬度为:

+location.getLatitude());

}

publicvoidonProviderDisabled(Stringprovider){

//当provider被用户关闭时调用

publicvoidonProviderEnabled(Stringprovider){

//当provider被用户开启后调用

publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){

//当provider的状态在OUT_OF_SERVICE、TEMPORARILY_UNAVAILABLE和AVAILABLE之间发生变化时调用

}

实例GPSLocation演示了使用GPS获取用户位置信息的过程,运行效果如图8-1所示。

图8-1实例GPSLocation的运行效果

由于模拟器没有真正的GPS硬件,所以需要在DDMS中模拟GPS服务,图8-2展示了再EmulatorControl面板上手动发送经纬度信息来测试位置服务。

图8-2EmulatorControl面板

下面是实例GPSLocation的主界面布局文件main.xml的代码:

<

?

xmlversion="

1.0"

encoding="

utf-8"

>

LinearLayoutxmlns:

android="

android:

orientation="

vertical"

layout_width="

fill_parent"

layout_height="

>

TextView

wrap_content"

text="

@string/hello"

/>

Button

android:

id="

@+id/btn_listen"

@string/btn_listen"

/>

@+id/tv_01"

@+id/tv_02"

/LinearLayout>

该实例的资源文件strings.xml的内容如下:

resources>

stringname="

hello"

使用GPS获取位置信息<

/string>

app_name"

GPSLocation<

btn_listen"

获取GPS信息<

/resources>

在Manifest文件中添加相应的权限:

manifestxmlns:

package="

introduction.android.gpsLocation"

versionCode="

1"

versionName="

uses-sdkandroid:

minSdkVersion="

8"

application

icon="

@drawable/ic_launcher"

label="

@string/app_name"

activity

.GPSLocationActivity"

intent-filter>

actionandroid:

android.intent.action.MAIN"

categoryandroid:

android.intent.category.LAUNCHER"

/intent-filter>

/activity>

/application>

/manifest>

主Activity文件GPSLocationActivity.java的代码如下:

importandroid.content.Context;

importandroid.location.Location;

importandroid.location.LocationListener;

importandroid.util.Log;

publicclassGPSLocationActivityextendsActivity{

privateButtonbtn_listen;

privateTextViewtv_01,tv_02;

btn_listen=(Button)findViewById(R.id.btn_listen);

tv_01=(TextView)findViewById(R.id.tv_01);

tv_02=(TextView)findViewById(R.id.tv_02);

btn_listen.setOnClickListener(newOnClickListener(){

@Override

LocationManagerlocationManager=(LocationManager)GPSLocationActivity.this.getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,newMyLocationListener());

//TODOAuto-generatedmethodstub

Log.i("

GpsLocation"

"

provider被关闭!

);

provider被开启!

provider状态发生改变!

由以上代码可见,LocationListener用于接收位置发生改变时的通知。

当Provider提供的位置信息发生改变时,onLocationChanged方法会被调用。

当不需要使用LocationListener进行位置更新时,可以LocationManager的removeUpdates(LocationListener)方法将其移除。

8.2传感器

大部分Android设备都带有传感器,传感器可以检测到设备的运动、方位以及周围环境因素的变化,从而给应用程序的功能带来更多可能性。

例如:

一个游戏可以不用触摸屏幕,而仅需要倾斜,晃动或摇摆手机就可以对游戏进行控制;

一个与天气相关的程序可以报告及时的温度和湿度情况;

一个旅游相关的程序可以根据地磁和加速度模拟一个罗盘。

8.2.1Android传感器简介

总的来讲,传感器可以分为三大类:

●运动传感器:

与三维空间中的运动相关的传感器,包括加速度传感器、重力传感器、陀螺仪和旋转向量传感器等

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1