`
yinter
  • 浏览: 243978 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对android重力测试的一个疑问

阅读更多
之前有看过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 重力感应的测试程序源码-IT计算机-毕业设计.zip

    本项目“Android重力感应的测试程序源码”提供了一个实用的示例,帮助开发者理解如何在Android应用中集成并利用重力感应器的数据。下面将详细解析这个项目的知识点。 1. **Android传感器服务**: - Android系统...

    android 利用重力感应监听

    不过,由于提供的信息有限,这里没有直接关联到重力感应监听的实现,但如果需要在SurfaceView上显示重力感应的视觉反馈,那么SurfaceView会是一个合适的组件。 总的来说,利用Android的重力感应监听功能,可以实现...

    Android 重力感应的测试程序源码.zip

    这个"Android 重力感应的测试程序源码.zip"文件可能包含了一个示例应用,用于演示如何利用Android SDK中的SensorManager类来获取和处理这些数据。 首先,Android系统的SensorManager类是与硬件传感器交互的主要接口...

    android重力传感测试源码

    这个"android重力传感测试源码"项目是针对这种传感器的一个实例,旨在模拟飞信应用中的“摇一摇”功能,允许用户通过摇动手机来触发打电话或发送短信的操作。 首先,我们需要了解Android的Sensor框架。Android系统...

    Android应用源码之Android重力感应跑步测速应用_源码.zip

    8. **用户界面设计**:一个良好的跑步测速应用不仅要有准确的测速功能,还需要直观易用的用户界面。UI应该包含开始/停止按钮,速度显示区域,历史记录等常见元素,并确保在不同屏幕尺寸和方向下都能正常工作。 9. *...

    android重力感应源代码

    `event.values`是一个浮点数数组,包含了三个轴(X、Y、Z)的重力值。这些值表示了设备在对应轴上的重力加速度,单位是m/s²。通过对这些值的分析,可以确定设备的移动和旋转。 为了开启和关闭重力感应,我们需要...

    android 重力感应 小球测试源码.rar

    利用一个小球下落来模拟重力感应,进入游戏世界 - 强制横屏 -小球移动,显示自定义的游戏View,每50帧刷新一次屏幕,重力感应X轴 Y轴 Z轴的重力值,设置当前View拥有触摸事件,将mSurfaceHolder添加到Callback回调...

    Android 重力传感器源码

    这个传感器提供了一个3D向量,表示设备感受到的地球引力,单位是m/s²。向量的x、y、z轴分别对应设备屏幕的水平方向、垂直方向(屏幕朝下)和设备的厚度方向。当设备静止时,重力传感器通常会返回(0, 0, -9.8)的值,...

    Android重力感应实例

    这个"Android重力感应实例"可能是为了展示如何利用Android SDK中的传感器API来开发一个控制小车的应用。下面将详细阐述Android重力感应的工作原理、相关API以及如何在实际开发中应用。 一、Android重力感应工作原理...

    安卓Android源码——重力感应的测试程序源码.zip

    【标题】"安卓Android源码——重力感应的测试程序源码.zip" 是一个与安卓应用开发相关的资源,其中包含了实现重力感应功能的源代码。在安卓平台上,利用重力感应器可以让应用程序感知到设备的移动和方向变化,从而为...

    android重力感应实例代码

    这个“android重力感应实例代码”提供了一个具体的示例,帮助开发者理解如何在Android应用中集成并使用重力感应数据。下面将详细介绍相关知识点。 1. **Android传感器系统服务** Android系统提供了Sensor Service...

    Android重力感应Demo

    总的来说,"Android重力感应Demo"是一个用于演示如何在Android应用中获取和处理重力感应数据的实例。通过这个Demo,开发者可以学习到如何利用Android的Sensor API,结合SensorEventListener接口,实现对设备运动和...

    Android重力感应示例(源码)

    首先,你需要创建一个`SensorEventListener`的实现类,用于处理传感器事件。在`onCreate()`方法中注册监听器,并在`onResume()`中激活,`onPause()`时取消激活,以确保在应用暂停或后台时停止监听,节省系统资源。 ...

    android_重力感应demo

    这个"android_重力感应demo"是一个示例项目,旨在帮助初学者理解如何从设备获取并处理重力感应数据。下面我们将深入探讨这个话题。 首先,我们需要了解Android中的传感器系统。Android系统提供了丰富的传感器接口,...

    重力球 android源码

    这个源码对于Android开发者,尤其是初学者来说,是一个极好的学习资源,因为它揭示了如何利用Android SDK中的传感器API来实现类似功能。 1. **Android项目结构**: - 一个标准的Android项目包含`AndroidManifest....

    android 重力球demo

    这个Demo展示了如何集成和利用Android系统的传感器API,特别是重力感应器,来实现一个可交互的小球游戏,用户可以通过倾斜设备来控制小球在屏幕上的移动。下面将详细介绍涉及的技术点。 首先,Android系统提供了...

    Android 重力感应游戏-疯狂的小球源码程序

    Android 重力感应游戏-疯狂的小球源码程序,基于Android 平台的重力感应游戏-疯狂的小球。

    android关闭重力感应

    android系统里面常常没用做关闭重力感应的软件。。。。。o(∩_∩)o 哈哈

    Android 重力感应游戏-疯狂的小球

    总之,"疯狂的小球"作为一款基于Android重力感应技术的游戏,融合了硬件传感器、物理引擎、用户交互和关卡设计等多个方面的技术,为玩家带来独特且刺激的体验。通过不断优化和创新,开发者可以创造出更加引人入胜的...

Global site tag (gtag.js) - Google Analytics