之前有看过IBM Eyes 关于SensorManager的代码,但因为没有手机,没法测试,今天把代码发布到手机上了(android版本为1.5),终于可以知道他的坐标(X,Y,Z)的重力位置,代码如下:
/*
*
* IBMEyes.java
* sample code for IBM Developerworks Article
* Author: W. Frank Ableson
* fableson@msiservices.com
*
*/
package com.msi.ibm.eyes;
import android.app.Activity;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class IBMEyes extends Activity implements SensorListener {
final String tag = "IBMEyes";
SensorManager sm = null;
TextView xViewA = null;
TextView yViewA = null;
TextView zViewA = null;
TextView xViewO = null;
TextView yViewO = null;
TextView zViewO = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
xViewA = (TextView) findViewById(R.id.xbox);
yViewA = (TextView) findViewById(R.id.ybox);
zViewA = (TextView) findViewById(R.id.zbox);
xViewO = (TextView) findViewById(R.id.xboxo);
yViewO = (TextView) findViewById(R.id.yboxo);
zViewO = (TextView) findViewById(R.id.zboxo);
}
public void onSensorChanged(int sensor, float[] values) {
synchronized (this) {
Log.d(tag, "onSensorChanged: " + sensor + ", x: " + values[0] +
", y: " + values[1] + ", z: " + values[2]);
if (sensor == SensorManager.SENSOR_ORIENTATION) {
xViewO.setText("Orientation X: " + values[0]);
yViewO.setText("Orientation Y: " + values[1]);
zViewO.setText("Orientation Z: " + values[2]);
}
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
xViewA.setText("Accel X: " + values[0]);
yViewA.setText("Accel Y: " + values[1]);
zViewA.setText("Accel Z: " + values[2]);
}
}
}
public void onAccuracyChanged(int sensor, int accuracy) {
Log.d(tag,"onAccuracyChanged: " + sensor + ", accuracy: " + accuracy);
}
@Override
protected void onResume() {
super.onResume();
sm.registerListener(this,
SensorManager.SENSOR_ORIENTATION |
SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStop() {
sm.unregisterListener(this);
super.onStop();
}
}
我把手机平放在桌面,屏幕朝上,(x,y,z)的值分别为(0,0,-10);
手机翻过来放(与平放相反,即屏幕朝下),(x,y,z)的值分别为(0,0,10);
手机竖着放,(x,y,z)的值分别为(0,-10,0);
手机倒过来放(与竖相反),(x,y,z)的值分别为(0,10,0);
说明一下,实际输出为float值,为了好确认方向,我取整了;
对这个值有个什么疑问呢,与
raymondlueng在博客写的正好相反,这就奇怪了。
分享到:
相关推荐
本项目“Android重力感应的测试程序源码”提供了一个实用的示例,帮助开发者理解如何在Android应用中集成并利用重力感应器的数据。下面将详细解析这个项目的知识点。 1. **Android传感器服务**: - Android系统...
不过,由于提供的信息有限,这里没有直接关联到重力感应监听的实现,但如果需要在SurfaceView上显示重力感应的视觉反馈,那么SurfaceView会是一个合适的组件。 总的来说,利用Android的重力感应监听功能,可以实现...
这个"Android 重力感应的测试程序源码.zip"文件可能包含了一个示例应用,用于演示如何利用Android SDK中的SensorManager类来获取和处理这些数据。 首先,Android系统的SensorManager类是与硬件传感器交互的主要接口...
这个"android重力传感测试源码"项目是针对这种传感器的一个实例,旨在模拟飞信应用中的“摇一摇”功能,允许用户通过摇动手机来触发打电话或发送短信的操作。 首先,我们需要了解Android的Sensor框架。Android系统...
8. **用户界面设计**:一个良好的跑步测速应用不仅要有准确的测速功能,还需要直观易用的用户界面。UI应该包含开始/停止按钮,速度显示区域,历史记录等常见元素,并确保在不同屏幕尺寸和方向下都能正常工作。 9. *...
`event.values`是一个浮点数数组,包含了三个轴(X、Y、Z)的重力值。这些值表示了设备在对应轴上的重力加速度,单位是m/s²。通过对这些值的分析,可以确定设备的移动和旋转。 为了开启和关闭重力感应,我们需要...
利用一个小球下落来模拟重力感应,进入游戏世界 - 强制横屏 -小球移动,显示自定义的游戏View,每50帧刷新一次屏幕,重力感应X轴 Y轴 Z轴的重力值,设置当前View拥有触摸事件,将mSurfaceHolder添加到Callback回调...
这个传感器提供了一个3D向量,表示设备感受到的地球引力,单位是m/s²。向量的x、y、z轴分别对应设备屏幕的水平方向、垂直方向(屏幕朝下)和设备的厚度方向。当设备静止时,重力传感器通常会返回(0, 0, -9.8)的值,...
这个"Android重力感应实例"可能是为了展示如何利用Android SDK中的传感器API来开发一个控制小车的应用。下面将详细阐述Android重力感应的工作原理、相关API以及如何在实际开发中应用。 一、Android重力感应工作原理...
【标题】"安卓Android源码——重力感应的测试程序源码.zip" 是一个与安卓应用开发相关的资源,其中包含了实现重力感应功能的源代码。在安卓平台上,利用重力感应器可以让应用程序感知到设备的移动和方向变化,从而为...
这个“android重力感应实例代码”提供了一个具体的示例,帮助开发者理解如何在Android应用中集成并使用重力感应数据。下面将详细介绍相关知识点。 1. **Android传感器系统服务** Android系统提供了Sensor Service...
总的来说,"Android重力感应Demo"是一个用于演示如何在Android应用中获取和处理重力感应数据的实例。通过这个Demo,开发者可以学习到如何利用Android的Sensor API,结合SensorEventListener接口,实现对设备运动和...
首先,你需要创建一个`SensorEventListener`的实现类,用于处理传感器事件。在`onCreate()`方法中注册监听器,并在`onResume()`中激活,`onPause()`时取消激活,以确保在应用暂停或后台时停止监听,节省系统资源。 ...
这个"android_重力感应demo"是一个示例项目,旨在帮助初学者理解如何从设备获取并处理重力感应数据。下面我们将深入探讨这个话题。 首先,我们需要了解Android中的传感器系统。Android系统提供了丰富的传感器接口,...
这个源码对于Android开发者,尤其是初学者来说,是一个极好的学习资源,因为它揭示了如何利用Android SDK中的传感器API来实现类似功能。 1. **Android项目结构**: - 一个标准的Android项目包含`AndroidManifest....
这个Demo展示了如何集成和利用Android系统的传感器API,特别是重力感应器,来实现一个可交互的小球游戏,用户可以通过倾斜设备来控制小球在屏幕上的移动。下面将详细介绍涉及的技术点。 首先,Android系统提供了...
Android 重力感应游戏-疯狂的小球源码程序,基于Android 平台的重力感应游戏-疯狂的小球。
android系统里面常常没用做关闭重力感应的软件。。。。。o(∩_∩)o 哈哈
总之,"疯狂的小球"作为一款基于Android重力感应技术的游戏,融合了硬件传感器、物理引擎、用户交互和关卡设计等多个方面的技术,为玩家带来独特且刺激的体验。通过不断优化和创新,开发者可以创造出更加引人入胜的...