`

SensorManager判断手机指向方向

 
阅读更多

public class GetPosition extends Activity {
	private TextView TextView01;
	private SensorManager mSensorManager;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.get_position);
		TextView01 = (TextView) findViewById(R.id.textView1);
		mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
	}

	protected void onResume() {
		super.onResume();
		/* 取得方守性的Sensor,并注册SensorEventListener */
		mSensorManager.registerListener(mSensorEventListener,
				mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
				SensorManager.SENSOR_DELAY_NORMAL);
	}

	protected void onPause() {
		mSensorManager.unregisterListener(mSensorEventListener);
		super.onPause();
	}

	private final SensorEventListener mSensorEventListener = new SensorEventListener() {

		public void onAccuracyChanged(Sensor sensor, int accuracy) {

		}

		public void onSensorChanged(SensorEvent event) {
			/* 判断Sensor的种类 */
			if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
				/* 取得X值资料 */
				float x_data = event.values[SensorManager.DATA_X];
				if ((x_data > 0 && x_data <= 22.5) || x_data > 337.5) {
					TextView01.setText("北方" + String.valueOf(x_data));
				} else if (x_data > 22.5 && x_data <= 67.5) {
					TextView01.setText("东北方" + String.valueOf(x_data));
				} else if (x_data > 67.5 && x_data <= 112.5) {
					TextView01.setText("东方" + String.valueOf(x_data));
				} else if (x_data > 112.5 && x_data <= 157.5) {
					TextView01.setText("东南方" + String.valueOf(x_data));
				} else if (x_data > 157.5 && x_data <= 202.5) {
					TextView01.setText("南方" + String.valueOf(x_data));
				} else if (x_data > 202.5 && x_data <= 247.5) {
					TextView01.setText("西南方" + String.valueOf(x_data));
				} else if (x_data > 247.5 && x_data <= 292.5) {
					TextView01.setText("西方" + String.valueOf(x_data));
				} else if (x_data > 292.5 && x_data <= 337.5) {
					TextView01.setText("西北方" + String.valueOf(x_data));
				}
			}
		}
	};
}
 


 

 

  • 大小: 11.2 KB
分享到:
评论

相关推荐

    Android利用方向传感器获得手机的相对角度实例说明

    - X轴:沿着屏幕的水平方向从左向右,假设手机为正方形,较短的边应水平放置。 - Y轴:从屏幕左下角开始,沿着垂直方向指向屏幕顶端。 - Z轴:当手机平放在桌面上时,Z轴指向天空。 方向传感器主要提供三个值,分别...

    安卓摇一摇传感器相关-手机摇一摇DEMO代码实现摇一摇执行特定程序.zip

    当手机在短时间内快速改变方向时,加速度传感器的值会有显著变化。通过比较相邻事件之间的差异,我们可以确定用户是否进行了摇一摇操作: ```java float x, y, z; int shakeCount = 0; // 在onSensorChanged方法中...

    zhinanzhen.rar_android_android 指南针_指南针

    首先,Android指南针的核心是利用手机硬件中的磁力传感器(Magnetic Field Sensor)和加速度传感器(Accelerometer)。这两个传感器的数据结合可以计算出设备相对于地球磁场的方位角,从而显示指南针的方向。在...

    Android之摇一摇与指南针

    最后,将计算出的azimuth角转换为0到360度的范围,并在界面上绘制指南针指针,使其指向正确的方向。 在开发过程中,为了提高用户体验,还需考虑一些附加功能,例如添加指南针精度指示、罗盘锁定、屏幕常亮等。同时...

    android 罗盘 源码

    通过这两个传感器的结合,我们可以计算出设备的绝对方向,即真北方向。 1. 注册传感器 首先,需要在`onCreate()`或`onResume()`方法中注册传感器监听器,使用`SensorManager`的`registerListener()`方法。注册时...

    Android传感器之摇一摇与指南针

    为了准确识别出摇动动作,通常需要设定一个阈值,当加速度超过这个阈值并在短时间内恢复,就可以判断为一次摇动。此外,还需要考虑设备静止状态下的基础加速度值(重力),并排除由于重力引起的误判。 实现指南针...

    Android-加速传感器或者OrientationEventListener做横竖屏切换

    在这个方法中,我们将根据加速度值判断设备的方向: ```java @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { float x = event.values...

    指南针demo

    地球磁场在北半球指向北极,在南半球指向南极,因此,通过测量设备所在位置的磁场强度和方向,可以推算出设备的朝向。 2. 磁力计:现代电子设备中的磁力计是一种传感器,能够检测到环境磁场的变化。在指南针应用中...

    重力传感器

    当用户摇动手机时,加速度计会检测到运动变化,通过计算和分析这些变化,可以判断出手机的运动状态和方向。 3. **坐标系与运动分析** 重力传感器的数据通常以三轴加速度表示,即X、Y、Z轴的加速度值。当手机在不同...

    仿微信的摇一摇

    - "点这里查看更多优质源码~.url"可能是指向一个资源库的链接,你可以在这里找到更多关于实现摇一摇功能的示例代码和学习资料。 通过以上步骤,我们可以创建出一个类似微信的摇一摇功能。这个功能不仅限于社交应用...

    基于安卓Android的指南针定位源码.zip

    通过结合加速度计和磁力计的信息,我们可以判断出设备是在平移还是转动,从而提供更准确的指南针指向。 此外,Android应用的UI设计也是指南针功能的关键部分。我们需要创建一个可以旋转的图像或指示箭头,随着设备...

    Android利用Sensor(传感器)实现指南针小功能

    指南针的主要工作原理是通过获取手机传感器返回的数据,特别是方向传感器(Orientation Sensor)提供的角度信息,来判断设备相对于地磁北极的方向。下面我们将详细介绍如何在Android中实现这样一个功能。 首先,...

    Compass-master.zip

    在这个指南针应用中,关键的是磁力计,它能检测地球磁场的变化,从而判断设备的北向。 2. **SensorManager**: - Android系统提供了`SensorManager`类,用于管理和访问设备上的传感器。开发者需要注册监听器,以便...

    Android指南针

    这个"Android指南针"项目主要利用了设备内置的方向传感器来获取实时的方位信息,并在屏幕上显示出来,帮助用户判断方向。接下来,我们将深入探讨实现这样一个指南针应用所需要的知识点。 1. **Android Sensor API**...

    安卓摇一摇传感器相关-android姿态传感器源代码.zip

    它主要用于检测设备的三维空间方向和转动,例如手机的倾斜、翻转或者摇动。这在游戏、运动追踪以及像我们所说的“摇一摇”交互等场景中非常有用。 "JavaApk源码说明.txt"可能是对源代码的一个简要说明,可能包括了...

    安卓开发-Android 4.0下指南针开发源码,可在Nexus 4上完美运行.zip.zip

    在安卓平台上,开发一款指南针应用是相当有趣的实践,它涉及到手机硬件传感器的使用,特别是磁力传感器(也称为地磁传感器)。这个“安卓开发-Android 4.0下指南针开发源码,可在Nexus 4上完美运行.zip”压缩包提供了...

    Android源码——重力传感器源码.zip

    在Android中,重力传感器通常用来识别设备的方向、移动和振动。其工作原理基于牛顿第二定律,即F=ma,其中F是作用力,m是质量,a是加速度。通过测量由于地球引力引起的加速度,重力传感器可以确定设备相对于地球坐标...

    Android应用源码仿Iphone抖动效果Shake Icon.zip

    在iOS中,当用户尝试删除一个应用而输入错误密码时,应用图标会以一种有节奏的、随机的方向快速抖动,同时显示一个“删除”按钮。在Android上实现这一效果,我们需要关注以下几个关键点: 1. **手势检测**:首先,...

Global site tag (gtag.js) - Google Analytics