• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发10:传感器器及地图相关应用,android传感器

Android开发10:传感器器及地图相关应用,android传感器

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android传感器开发,android开发模拟器,android阅读器开发,android 播放器开发,android开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发10:传感器?及地图相关应用,android传感器


前言

  啦啦啦~各位小伙伴们好~经过这一学期的Android知识的学习,我们学到了很多和Android开发相关的知识,这一学期的学习也要告一段落了。(博客中有很多照片上有代码,代码文本较小,各位可按下Ctrl和前滚轮放大后再看~)

  一起进入我们今天的相关内容~这次我们将一起学习使用 android 手机不同的传感器,包括磁强计、加速度传感器等。学会使用 android 位置服务获得经纬度信息。学会使用百度地图基础API进行地图应用的开发。

 

基础知识

一、传感器简介

      手机中内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息。Android 手机通常都会支持多种类型的传感器,如光照传感器、加速度传感器、地磁传感器、压力传感器、温度传感器等。

      当然,Android 系统只是负责将这些传感器所输出的信息传递给我们,至于具体如何去利用这些信息就要充分发挥开发者的想象力了。

二、Android传感器框架

  Android SDK为我们提供了ASF,可以用来访问当前Android设备内置的传感器。ASF提供了很多类和接口,帮助我们完成各种与传感器有关的任务。例如:

1)确定当前Android设备内置了哪些传感器。

2)确定某一个传感器的技术指标。

3)获取传感器传回来的数据,以及定义传感器回传数据的精度。

4)注册和注销传感器事件监听器,这些监听器用于监听传感器的变化,通常从传感器回传的数据需要利用这些监听器完成。

  ASF允许我们访问很多传感器类型,这些传感器有一些是基于硬件的传感器,还有一些是基于软件的传感器。基于硬件的传感器就是直接以芯片形式嵌入到Android设备中,这些传感器直接从外部环境获取数据。基于软件的传感器并不是实际的硬件芯片,基于软件的传感器传回的数据本质上也来自于基于硬件的传感器,只是这些数据通常会经过二次加工。所以基于软件的传感器也可以称为虚拟(virtual)传感器或合成(synthetic)传感器。

  Android对每个设备的传感器都进行了抽象,其中SensorManger类用来控制传感器,Sensor用来描述具体的传感器,SensorEventListener用来监听传感器值的改变。

 

(1)SensorManager类

  用于创建sensor service的实例。该类提供了很多用于访问和枚举传感器,注册和注销传感器监听器的方法。而且还提供了与传感器精度、扫描频率、校正有关的常量。

(2)Sensor类

  Sensor类为我们提供了一些用于获取传感器技术参数的方法。如版本、类型、生产商等。例如所有传感器的TYPE类型如下:

序号传感器Sensor类中定义的TYPE常量
1 加速度传感器 TYPE_ACCELEROMETER
2 温度传感器 TYPE_AMBIENT_TEMPERATURE
3 陀螺仪传感器 TYPE_GYROSCOPE
4 光线传感器 TYPE_LIGHT
5 磁场传感器 TYPE_MAGNETIC_FIELD
6 压力传感器 TYPE_PRESSURE
7 临近传感器 TYPE_PROXIMITY
8 湿度传感器 TYPE_RELATIVE_HUMIDITY
9 方向传感器 TYPE_ORIENTATION
10 重力传感器 TYPE_GRAVITY
11 线性加速传感器 TYPE_LINEAR_ACCELERATION
12 旋转向量传感器 TYPE_ROTATION_VECTOR

  注意:1-8是硬件传感器,9是软件传感器,其中方向传感器的数据来自重力和磁场传感器,10-12是硬件或软件传感器。

(3)SensorEvent类

  系统使用该类创建传感器事件对象。该对象可以提供与传感器事件有关的信息。传感器事件对象包括的信息有原始的传感器回传数据、传感器类型、数据的精度以及触发事件的时间。

(4)SensorEventListener接口

该接口包含两个回调方法,当传感器的回传值或精度发生变化时,系统会调用这两个回调方法。

/**
 * 传感器精度变化时回调
 */
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
/**
 * 传感器数据变化时回调
 */
@Override
public void onSensorChanged(SensorEvent event) {
}

 到了这里,我们就可以进行传感器开发工作了。

 

实验内容

本次实验主要是涉及传感器及地图相关应?,实现简单的地图功能。

实现最终结果实现效果如图所示:

    

                                             实验效果图

 

主要分为以下三部分

a) 调用百度地图SDK实现地图的展示以及交互,其中包括左下角的按钮要求实现的功能如下:

i. 当按钮处于状态时:如果GPS位置有更新,那么更新用户当前所在位置,并使得当前位置的箭头图标一直保持在屏幕中心。

ii. 按钮处于 状态时,更新当前位置的箭头的时候不移动地图。

iii. 点击按钮可以切换这两种状态,当按钮进入状态的时候,使得表示当前位置的箭头位于屏幕中央。

iv. 如果按钮处于 的状态手动平移百度地图的时候,地图进行平移并且按钮变为 状态。

b) 获取当前所在位置与方向,并在百度地图上显示出来,如图中黑色箭头所示,箭头中心位置为定位结果,箭头方向为手机的朝向。

c) 实现简单摇一摇功能,当晃动手机的时候作出相应的响应。

 

实验过程

  1. 首先要申请百度的开发者密钥(申请密钥 Android SDK http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key),申请地址:http://lbsyun.baidu.com/apiconsole/key

首先,在申请AK的表单中选择AndroidSDK,发现还要输入发布版SHA1以及报名这两个信息。

 

  其中,应用包名为build.gradle里的ApplicationId,并且保证这个ApplicationId与Manifest里的package字段名是一样的(如下图所示)。

                              Manifest 里的应用包名

 

                               build.gradle 里的应用包名

 

  发布版SHA1为了方便直接使用Android默认的debug.keystore里的SHA1,进入用户文件夹(Windows为C:\Users\username,Linux为/home/username,Mac为/Users/username)后,输入如下命令即可看到SHA1值(输入密钥库口令里直接回车)

证书指纹里的SHA1值为在申请应用AK的时候需要填写的。


点击确定后即可得到一个Android SDK的应用AK:

              成功申请应用 AK

 

  下载百度地图SDK的依赖库<BaiduLBS_AndroidSDK_Lib.zip>,按照百度地图SDK配置环境与发布 (配置环境及发布 Android SDK :http://lbsyun.baidu.com/index.php?title=androidsdk/guide/buildproject) 把依赖库放到相应的文件夹并添加到工程里,并按照HelloBaiduMap (Hello BaiduMap:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap)中的步骤,在AndroidManifest.xml文件里添加权限以及应用AK。

 

  特别的,由于Android API 23以上需要动态申请权限,这里使用一个Github上的开源工具RxAndroid( https://github.com/ReactiveX/RxAndroid)进行处理,也可以自己根据Android官方的API进行或者其他的工具。首先需要在build.gradle中加入需要的依赖项:

  然后新建一个启动的Activity,在这个单独的Activity的onCreate方法里检查是否获取需要的权限,如果没有则直接退出程序,实现代码参考如下:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发10:传感器器及地图相关应用,android传感器
  • android 水准仪的实现(方向传感器的使用)

相关文章

  • 2017-05-26Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式,静态库与动态库编程
  • 2017-05-26Android开发代码规范,android开发代码
  • 2017-05-26android:常用的AlertDialog对话框及自定义对话框
  • 2017-05-26仿天天动听5应用项目源码,项目源码
  • 2017-05-26Android项目使用Dagger2进行依赖注入
  • 2017-05-26技术贴汇总,技术汇总
  • 2017-05-26Drawable资源的初步使用
  • 2017-05-26AsyncTask源码探究,asynctask源码
  • 2017-05-26android测试工具MonkeyRunner--google官网翻译
  • 2017-05-26android权限大全

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java虚拟机 JVM,java虚拟机jvm
    • android插件开发-就是你了!启动吧!插件的activity(二)
    • 用原生VideoView进行全屏播放时的问题,videoview全屏播放
    • Android 框架启动流程
    • Android中View自定义XML属性详解以及R.attr与R.styleable的区别
    • Android中的多线程断点下载,android断点下载
    • Android开发6:Service的使用(简单音乐播放器的实现),androidservice
    • Android中AsyncTask分析--你所不注意的坑,androidasynctask
    • GsonFormat插件从配置到使用,gsonformat插件配置
    • dpdk内存管理——内存初始化

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有