`

android的重力感应测试

阅读更多
由于重力感应是与手机硬件相关的,所以测试起来比较麻烦,有木有办法在模拟器上模拟测试呢?这也是本人比较关心的问题,还好,确实有。那就是sensorsimulator组件。
首先介绍下测试平台:
模拟器:android2.3.3
组件:sensorsimulator1.1.1(见附件)

步骤如下:
1.安装APK,在bin目录下有个SensorSimulatorSettings-1.1.1.apk文件,可通过adb install SensorSimulatorSetting-1.1.1.apk命令安装。
2.设置SensorSimulatorSetting,安装成功后,启动模拟器,进入SensorSimulatorSetting界面,如下:
设置IP:

设置测试模式配置:


有几种重力感应模式:

Fastest:最快更新率(范围在8ms-30ms)
Game:适合游戏的更新率(40ms)
Normal:系统默认值,适合于屏幕方向的变化的更新率(大约200ms)
UI:适合于用户界面的更新率(350ms)

本人在测试游戏的时候选择了game模式,也可以选其它模式试试。
3.第三步是关键,剩下的就是怎么把这个组件应用到实际应用中去了。
先要加上权限,在android的主xml中加入以下代码:
<uses-permission android:name="android.permission.INTERNET"/>


默认的重力感应侦听器代码如下:
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class AccelerometerHandler implements SensorEventListener {
	float accelX;
	float accelY;
	float accelZ;

	public AccelerometerHandler(Context context) {
		SensorManager manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
		if (manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) {
			Sensor accelerometer = manager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
			manager.registerListener(this, accelerometer,SensorManager.SENSOR_DELAY_GAME);
		}
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// nothing to do here
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		accelX = event.values[0];
		accelY = event.values[1];
		accelZ = event.values[2];
	}

	public float getAccelX() {
		return accelX;
	}

	public float getAccelY() {
		return accelY;
	}

	public float getAccelZ() {
		return accelZ;
	}
}


而我们现在要通过模拟器模拟这个类,所以我写了另一类来模拟这个类的行为,代码如下:
import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;

import android.content.Context;
import android.hardware.SensorManager;

public class AccelerometerSimulatorHandler implements SensorEventListener {
	float accelX;
	float accelY;
	float accelZ;

	public AccelerometerSimulatorHandler(Context context) {
		SensorManagerSimulator mSensorManager = SensorManagerSimulator.getSystemService(context,Context.SENSOR_SERVICE);
		if(mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)!=null){
			mSensorManager.connectSimulator();
			Sensor accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
			mSensorManager.registerListener(this, accelerometer,SensorManager.SENSOR_DELAY_GAME);
		}
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		accelX = event.values[0];
		accelY = event.values[1];
		accelZ = event.values[2];
	}

	public float getAccelX() {
		return accelX;
	}

	public float getAccelY() {
		return accelY;
	}

	public float getAccelZ() {
		return accelZ;
	}

}


这个类最主要的区别就在于导入的java类不同,然后在使用这个侦听器的地方将其替换成第二个类即可。
4.运行sensorsimulator,通过命令java -jar sensorsimulator-1.1.1.jar运行sensorsimulator组件,界面如下:

从这个图可知,控制手机的方式也有三种,yaw&pitch、roll&pitch、move,这几种都可以试下。它们分别代表围绕Z、X、Y轴为中心旋转角度(Z轴垂直于地面指向天空)。

5.启动应用,就可以通过sensorsimulator界面来控制感应带来的变化。

大体过程就是这样,总的来说,还是有点麻烦,不过也没其它办法,有总比没有好吧!



  • 大小: 23.3 KB
  • 大小: 10.4 KB
  • 大小: 6.4 KB
  • 大小: 28.1 KB
分享到:
评论
1 楼 不存在的希格斯玻色子 2014-10-17  

相关推荐

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

    该Android应用源码展示了如何利用Android设备的重力感应器来实现跑步测速功能。在Android平台上,开发者可以通过Android传感器API来访问设备的各种传感器数据,包括重力感应器。这个应用的核心技术点主要包括以下几...

    Android重力感应测试代码.rar

    Android 手机重力传感器调用 源码,作者:Himi,手机加速度传感器 ,也称为重力传感器,自SDK 1.5(api 3)就支持传感器了。解释:此传感器不仅对玩家反转手机的动作可以检测到,而且会根据反转手机的程度,得到传感器的...

    Android 重力感应的测试程序源码-IT计算机-毕业设计.zip

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

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

    android 重力感应测试项目源代码,作者:雨松MOMO。利用一个小球下落来模拟重力感应,进入游戏世界 - 强制横屏 -小球移动,显示自定义的游戏View,每50帧刷新一次屏幕,重力感应X轴 Y轴 Z轴的重力值,设置当前View...

    Android重力感应示例(源码)

    在Android开发中,重力感应是一项重要的功能,它允许应用程序响应设备的移动和方向变化。...通过理解并实践"Android重力感应示例(源码)",你将能够自如地利用这一功能,提升应用的交互性和实用性。

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

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

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

    【压缩包子文件的文件名称列表】中,"1-120R12102170-L.png"可能是一个截图或示例图像,展示了重力感应测试程序在设备上的运行情况。"源码说明.txt"很可能是对源代码的解释或指导,帮助开发者理解和使用提供的代码。...

    Android重力感应跑步测速应用.rar

    总的来说,开发一个Android重力感应跑步测速应用需要理解传感器的工作原理,掌握数据处理和计算技巧,以及具备良好的UI设计和性能优化能力。这个过程既考验技术功底,也体现了对用户体验的细腻把握。

    android重力感应禁止调用oncreat方法

    ### Android重力感应与禁止调用onCreate方法详解 #### 一、问题背景与解决方案概述 在Android开发过程中,有时我们需要让应用支持横竖屏自动切换,但又不希望每次屏幕方向改变时都重新调用`onCreate()`方法。这是...

    android 重力感应摇骰子游戏

    通过以上这些知识点,我们可以构建出一个基于Android重力感应的摇骰子游戏,让玩家享受科技带来的乐趣。在实际开发中,还需要结合具体需求进行功能扩展和细节调整,以打造一个既娱乐又具有技术含量的应用。

    Android重力感应跑步测速应用-IT计算机-毕业设计.zip

    该毕业设计项目是一个基于Android平台的重力感应跑步测速应用。这个应用利用了Android设备内置的传感器技术,特别是重力感应器,来追踪用户的运动数据,并计算出跑步速度。以下将详细介绍该项目涉及的主要知识点: ...

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

    这个“Android 重力感应的测试程序源码”是一个很好的学习资源,可以帮助开发者深入了解如何在Android应用程序中集成和利用重力感应器的数据。下面我们将详细探讨相关的知识点。 1. **传感器基础**: - Android...

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

    这个"Android重力感应的测试程序源码.zip"包含了一个示例项目,帮助开发者理解如何利用Android SDK来检测并处理设备的重力变化。下面将详细解释相关知识点。 1. **Android传感器系统**: - Android系统提供了丰富...

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

    在Android平台上,重力感应游戏是一种利用设备内置的传感器,如加速度计,来感知设备移动和旋转的游戏。"疯狂的小球"就是这样一个利用重力感应技术开发的Android应用程序。这款游戏中,玩家通过倾斜手机来控制小球在...

Global site tag (gtag.js) - Google Analytics