已结贴√

问题点数:20 回复次数:7

Android传感器API之:加速度Accelerometer功能源码

加速度传感器,主要是感应手机的运动。捕获三个参数,分别表示空间坐标系中X、Y、Z轴方向上的加速度减去重力加速度在相应轴上的分量,其单位均为m/s2。和之前几篇传感器功能介绍中的一样,这几个方向就不再多说了~~

Rexsee的源码如下,有兴趣的朋友可以再去找找,社区公开的源码里有包括加速度在内的,重力、磁场、温度、距离和方向等传感器功能。http://www.

/*

* Copyright (C) 2011 The Rexsee Open Source Project

*

* Licensed under the Rexsee License, Version 1.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

*      http://www.

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package rexsee.sensor;

import rexsee.core.browser.JavascriptInterface;

import rexsee.core.browser.RexseeBrowser;

import android.content.Context;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

public class RexseeSensorAccelerometer implements JavascriptInterface {

private static final String INTERFACE_NAME = "Accelerometer";

@Override

public String getInterfaceName() {

return mBrowser.application.resources.prefix + INTERFACE_NAME;

}

@Override

public JavascriptInterface getInheritInterface(RexseeBrowser childBrowser) {

return this;

}

@Override

public JavascriptInterface getNewInterface(RexseeBrowser childBrowser) {

return new RexseeSensorAccelerometer(childBrowser);

}

public static final String EVENT_ONACCELERATE = "onAccelerometerChanged";

private final Context mContext;

private final RexseeBrowser mBrowser;

private final SensorManager mSensorManager;

private final SensorEventListener mSensorListener;

private final Sensor mSensor;

private int mRate = SensorManager.SENSOR_DELAY_NORMAL;

private int mCycle = 100;

private int mEventCycle = 100;

private float mAccuracyX = 0;

private float mAccuracyY = 0;

private float mAccuracyZ = 0;

private long lastUpdate = -1;

private long lastEvent = -1;

private float x = -999, y = -999, z = -999;

public RexseeSensorAccelerometer(RexseeBrowser browser) {

mContext = browser.getContext();

mBrowser = browser;

browser.eventList.add(EVENT_ONACCELERATE);

mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);

mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

mSensorListener = new SensorEventListener() {

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

@Override

public void onSensorChanged(SensorEvent event) {

if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) return;

long curTime = System.currentTimeMillis();

if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {

lastUpdate = curTime;

float lastX = x;

float lastY = y;

float lastZ = z;

x = event.values[SensorManager.DATA_X];

y = event.values[SensorManager.DATA_Y];

z = event.values[SensorManager.DATA_Z];

if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {

if (

(mAccuracyX >= 0 && Math.abs(x - lastX) > mAccuracyX)

|| (mAccuracyY >= 0 && Math.abs(y - lastY) > mAccuracyY)

|| (mAccuracyZ >= 0 && Math.abs(z - lastZ) > mAccuracyZ)

) {

lastEvent = curTime;

mBrowser.eventList.run(EVENT_ONACCELERATE);

}

}

}

}

};

}

public String getLastKnownX() {

return (x == -999) ? "null" : String.valueOf(x);

}

public String getLastKnownY() {

return (y == -999) ? "null" : String.valueOf(y);

}

public String getLastKnownZ() {

return (z == -999) ? "null" : String.valueOf(z);

}

public void setRate(String rate) {

mRate = SensorRate.getInt(rate);

}

public String getRate() {

return SensorRate.getString(mRate);

}

public void setCycle(int milliseconds) {

mCycle = milliseconds;

}

public int getCycle() {

return mCycle;

}

public void setEventCycle(int milliseconds) {

mEventCycle = milliseconds;

}

public int getEventCycle() {

return mEventCycle;

}

public void setAccuracy(float x, float y, float z) {

mAccuracyX = x;

mAccuracyY = y;

mAccuracyZ = z;

}

public float getAccuracyX() {

return mAccuracyX;

}

public float getAccuracyY() {

return mAccuracyY;

}

public float getAccuracyZ() {

return mAccuracyZ;

}

public boolean isReady() {

return (mSensor == null) ? false : true;

}

public void start() {

if (isReady()) {

mSensorManager.registerListener(mSensorListener, mSensor, mRate);

} else {

mBrowser.exception(getInterfaceName(), "Accelerometer is not found.");

}

}

public void stop() {

if (isReady()) {

mSensorManager.unregisterListener(mSensorListener);

}

}

}

android 加速度模块,Android传感器API之:加速度Accelerometer功能源码相关推荐

  1. android 距离传感器 api,Android传感器API之:近距离感应Proximity功能源码

    并不是所有Android手机上都保留有距离感应器.基于这个感应器可以有一些很不错的小应用,比如近距离感应锁屏.解锁-- 分享Rexsee的距离感应功能源码,回头可以自个儿做..更多的传感器API我这几 ...

  2. android setting模块,android O版本 设置(Settings)模块总结--设置的一级界面的加载

    O版本的设置界面相对有N有了一些变化,O上面增加了顶级类别的菜单,而之前一些在一级菜单的则移动到了二级界面里面, 如"WIFI","移动网络"等之前是在一级界面 ...

  3. 组件文件已损坏或android内部模块,android - Android Q更新后,模块化系统组件在托管配置文件中不可用 - 堆栈内存溢出...

    在从工作配置文件配置的设备设置应用中将操作系统从Android 9升级到10后,请停止运行. java.lang.RuntimeException: Unable to start activity ...

  4. Android GPS及地磁传感器 API

    Android 提供的位置包括经纬度和时间戳,可选地包含高度和方位,高度以WGS84椭球体为参照,方位以真北为参考. 地磁传感器以磁北为北.有2种传感器可提供方位信息:地磁场(Geomagnetic) ...

  5. 开源安卓Android流媒体音视频播放器实现声音自动停止、恢复、一键静音功能源码

    本文转自EasyDarwin团队John的博客:http://blog.csdn.net/jyt0551/article/details/60802145 我们在开发安卓Android流媒体音视频播放 ...

  6. android钛备份功能源码,TitaniumBackup钛备份专业增捐赠版 — 安卓备份神器

    本文最后更新于2019-04-17 00:00:08,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜. 钛备份是安卓阵营最强悍的系统以及应用备份工具,能够对整个系统或者部分软件进行备份和 ...

  7. MTK Android操作系统11种传感器介绍

    Android操作系统11种传感器介绍 1 加速度传感器 2 磁力传感器 3 方向传感器 4 陀螺仪传感器 5 光线感应传感器 6 压力传感器 7 温度传感器 8 接近传感器 9 重力传感器 10 线 ...

  8. android 传感器 balance filter,Android 传感器 API.doc

    Android 传感器 API 1.1 序言 ? ?[Android蛋蛋网]在这一章我们主要针对Android的传感器(Sensor)进行说明.如果说Java的程序和硬件有些远的感觉,那么可以说传感器 ...

  9. Android蓝牙开发(一)蓝牙模块及核心API

    本文主要介绍Android蓝牙开发中基础知识:蓝牙模块及核心API. 关于蓝牙的连接及通讯功能实现,欢迎查阅下一篇文章:Android蓝牙开发(二)蓝牙消息传输实现. 蓝牙模块 从蓝牙4.0开始包含两 ...

最新文章

  1. Redis5.0之Stream案例应用解读
  2. 第三次作业---读《构造之法》1-5章有感
  3. Oracle连接查询
  4. HTTP协议那些不得不说的事
  5. Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩
  6. Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)
  7. 你用计算机做过什么事情,他偷偷干了什么?(电脑)
  8. php里面什么是u函数,ThinkPHP内置函数----U方法
  9. Android RecyclerView之PagerSnapHelper原理解析(二)
  10. 程序设计语言与语言程序处理程序基础(软件设计师备考笔记)
  11. linux 有道 离线词典,有道词典离线版
  12. 万字长文深度分析华为智能汽车战略
  13. 百度地图开发-在百度地图上面显示出运动的轨迹
  14. 这2个在线资源网千万别错过,老司机人手一份,一年省下好几千
  15. Failed dependencies: libX11-xcb.so.1()(64bit) is needed by google-chrome-stable 安装Google chrome 报错
  16. C#获取字符串的长度
  17. Windows下安装Redis及可视化工具
  18. python制作一个网易音乐下载器
  19. 【计算机操作系统基本概念】
  20. 谷歌开放问答搜索最大语料库NQ,包含30万自然发生提问

热门文章

  1. 勤哲EXCEL服务器财务进销存系统
  2. 小程序前端view内容重叠问题
  3. WGestures全局鼠标手势设置指南
  4. 华为Mate20系列赢得各界盛誉,棋圣聂卫平也对其AI性能称赞
  5. 神经网络与深度学习编程练习(coursera 吴恩达 )(3)
  6. 计算机系统记忆部件是,什么是计算机系统的记忆部件
  7. Apache Durid (HDFS原理 特性 读写测试 集群部署 架构设计)
  8. 苹果手机之间怎么传照片_如何使用蓝牙手机之间传照片
  9. 【SCSS】1300- 这些 SCSS 使用技巧真好用~
  10. Android---App Widget(官方文档翻译)