Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android方向傳感器(SENSOR_TYPE_ORIENTATION)

android方向傳感器(SENSOR_TYPE_ORIENTATION)

編輯:關於Android編程

SENSOR_TYPE_ORIENTATION這個android 2.2之後就不推薦用了!!!



手機狀態

數值狀態

數值范圍

手機水平放置,頂部指向正北方

x、y、z方向值為0

0

水平逆時針旋轉

x不斷減少

360 ~ 0

水平順時針旋轉

x不斷增大

0 ~ 360

當手機左側抬起時

z不斷減少

0 ~ -180

當手機右側抬起時

z不斷增大

0 ~ 180

當手機頂部抬起時

y不斷減少

0 ~ -180

當手機底部抬起時

y不斷增大

0 ~ 180


經過實驗,我們發現當手機頂部指向正北方時方向值為0,頂部指向正東方時方向值為90,頂部指向正南方時方向值為180,頂部指向正西方時方向值為270。根據這些數據我們就可以根據方向值的范圍盤端當前我們的方位,可以確定指南針的讀數。


示例代碼:

package com.example.sensors;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity implements SensorEventListener{

	private TextView changeText;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE) ;
		Sensor gyposcope = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
		sensorManager.registerListener(this, gyposcope, SensorManager.SENSOR_DELAY_GAME);
		changeText = (TextView) findViewById(R.id.changeText);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		Log.i("test", event.values.toString());
		changeText.setText(event.values[0]+" "+event.values[1]+" "+event.values[2]);
	}

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



}





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved