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));
				}
			}
		}
	};
}
 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值