1. 程式人生 > >Android感測器——方向感測器TYPE_ORIENTATION

Android感測器——方向感測器TYPE_ORIENTATION

All values are angles in degrees.

values[0]: Azimuth, angle between the magnetic north direction and the y-axis, around the z-axis (0 to 359). 0=North, 90=East, 180=South, 270=West

values[1]: Pitch, rotation around x-axis (-180 to 180), with positive values when the z-axis movestowardthe y-axis.

values[2]: Roll, rotation around y-axis (-90 to 90), with positive values when the x-axis movestoward

the z-axis.

Note:This definition is different fromyaw, pitch and rollused in aviation where the X axis is along the long side of the plane (tail to nose).

Note:This sensor type exists for legacy reasons, please usein conjunction withandto compute these values instead.

Important note:For historical reasons the roll angle is positive in the clockwise direction (mathematically speaking, it should be positive in the counter-clockwise direction).

由圖可以知道values[0]是繞Yaw軸旋轉得到的值,values[1]是繞Pitch軸旋轉得到的值,values[2]是繞Roll軸旋轉得到的值。

例程如下:

OrientationSensorDemoActivity.java程式碼:

package com.lau.orientation;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class OrientationSensorDemoActivity extends Activity implements SensorEventListener {
	
	private SensorManager sensorManager = null;
	private boolean mRegister = false;
	private Sensor sensor = null;
	
	private TextView tvAzimuth = null;
	private TextView tvPitch = null;
	private TextView tvRoll = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tvAzimuth = (TextView) findViewById(R.id.azimuth);
        tvPitch = (TextView) findViewById(R.id.pitch);
        tvRoll = (TextView) findViewById(R.id.roll);
        
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        
        
    }
	
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		if(mRegister) {
			sensorManager.unregisterListener(this);
		}
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		mRegister = sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		// TODO Auto-generated method stub
		tvAzimuth.setText("Azimuth 方位角: " + event.values[0] + "\n(0 - 359) 0=North, 90=East, 180=South, 270=West");
		tvPitch.setText("Pitch 傾斜角: " + event.values[1] + "\n(-180 to 180)");
		tvRoll.setText("Roll 旋轉角: " + event.values[2] + "\n(-90 to 90)");
	}
    
}

佈局檔案main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/azimuth"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <TextView
        android:id="@+id/pitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    
    <TextView
        android:id="@+id/roll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>

相關推薦

Android感測器——方向感測器TYPE_ORIENTATION

All values are angles in degrees. values[0]: Azimuth, angle between the magnetic north direction and the y-axis, around the z-axis (0 to

Android利用方向感測器獲得手機的相對角度例項說明

1.android 的座標系是如何定義x, y z 軸的 x軸的方向是沿著螢幕的水平方向從左向右,如果手機不是正方形的話,較短的邊需要水平放置,較長的邊需要垂直放置。 Y軸的方向是從螢幕的左下角開始沿著螢幕的的垂直方向指向螢幕的頂端。 將手機放在桌子上,z軸的方向是從手

Android 利用方向感測器獲得手機的相對角度

下面以例項向大家介紹喜愛Android利用方向感測器獲得手機的相對角度,不瞭解的朋友可以參考下1.android 的座標系是如何定義x, y z 軸的 x軸的方向是沿著螢幕的水平方向從左向右,如果手機不是正方形的話,較短的邊需要水平放置,較長的邊需要垂直放置。Y軸的方向是從

關於Android方向感測器的終極解釋

關於getOrientation() 返回的三個座標的角度問題,網友用實測的方式給出了以下答案 方向感測器返回的都是角度值,以度數為單位。 第一個角度:Azimuth (degrees of rotation around the z axis).範圍 0-360度

Android開發之感測器(加速度感測器方向感測器

目前手機集成了多個不同用途的感測器。最近專案中需要用到加速度感測器和方向感測器,故做一下筆記。加速度感測器,用於檢測手機運動狀態。方向感測器,用於檢測手機方向狀態。感測器呼叫方式:1、初始化SensorManager manager = (SensorManager) get

android 百度地圖系列之結合方向感測器的地圖定位

因為這是關於百度地圖的系列部落格,本文章的百度地圖定位在上一篇(android 百度地圖系列之地圖初始化及定位)中已經詳細介紹過,就在上篇部落格的基礎上,新增方向感測器來使定點陣圖標顯示自己在地圖上的方向。 首先需要一張方向朝上的定位標誌圖。(CSDN上傳圖片

Android使用百度地圖SDK實現定位與方向感測器匹配

public class MylocationListener implements BDLocationListener { //定位請求回撥介面 private boolean isFirstIn=true; //定位請求回撥函式,這裡面會得到定位資

Android 方向感測器與磁力計和加速度感測器之間的關係

        一般情況下,在android系統中獲取手機的方位資訊azimuth似乎是很簡單的事情,在api中有TYPE_ORIENTATION常量,可以像得到加速度感測器那樣得到方向感測器sm.getDefaultSensor(Sensor.TYPE_ORIENTATI

Android感測器的使用(方向感測器,重力感測器

package cn.itcast.sensor; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import andro

百度地圖開發(七)方向感測器指向方向--指南針

效果圖: 用到的小圖,自行下載: 原理就是利用方向感測判斷機頭方向傳值給定位: 方向感測程式碼: import android.content.Context; import android.hardware.Sensor; import android.hardware

Android 實現姿態感測器kalman濾波

採用卡爾曼濾波器實現,java程式碼如下 https://download.csdn.net/download/jyq297160132/10838321 對於要輸入三個方向的測量角度,可參考以下程式碼重新定義kalman filter https://stackoverflow.com

SensorManager的方向感測器Orientation -- 指南針的簡易實現

通過SensorManager獲取手機方位,從而實現指南針功能。 在很多舊的文件介紹中,都是通過SensorManager .getDefaultSensor(Sensor.TYPE_ORIENTATION); 但是,這個方法其實是已經被android拋棄的方法,現在我們

Android開發——使用感測器

1.Sensor相關的類:Sensor,SensorManager Sensor 常用感測器型別 TYPE_ALL——A constant describing all sensor types. TYPE_ACCELEROMETE TYPE_LINEAR_ACCE

android Sensor driver 感測器驅動博文彙總備忘

1. Android上Sensor移植的總結 Android Sensor感測器系統架構初探 http://www.xuebuyuan.com/863027.html 2. G-sensor,Gyroscope驅動移植舉例 http://blog.csdn.net/nxh_

Android平臺 Psensor感測器除錯方法

1|[email protected]:/sys/class/input/input5 $ cat activecat active0[email protected]:/sys/class/input/input5 $ echo 1 >activeecho 1 >active

React Native Android原生方向進階一

雖然說react native的設計初衷是為了敏捷開發,write once,run anywhere,但是還是開放了原生接入這一高階功能,而原生也是一位這個開發方向一個繞不過去的坎,今天先跑了一下流程,總結一下先 1、react-native init mengft_module

android 垂直方向上下滑動阻尼效果

在開發過程時,View中需要上下阻尼效果,有網上有很多,直接上程式碼。 package com.android.feature; import android.content.Context; import android.graphics.Rect;

android 垂直方向進度條progressbar

在實際需求會碰到使用垂直方向的是進度條 一 水平方向進度條 1.先看看原生的水平方向進度條 <ProgressBar android:id="@+id/progress3" style="?android:attr/progre

獲取Android裝置的方向 ,使用加速度重力感測器

帶有g-sensor的Android裝置上可通過API獲取到裝置的運動加速度,應用程式通過一些假設和運算,可以從加速度計算出裝置的方向 獲取裝置運動加速度的基本程式碼是: SensorManager sm = (SensorManager) contex

Pro Android學習筆記(一五五) 感測器(5) 磁場感測器和方位(上)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!