Android传感器应用

package com.example.helloworld;

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

public class MainActivity extends Activity {
	
	private SensorManager mSensorManager;
	
	private double PI = 3.1415926;
	
	private TextView TextView01;
	private TextView TextView02;
	private TextView TextView03;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        TextView01 = (TextView)findViewById(R.id.textView1);
        TextView02 = (TextView)findViewById(R.id.textView2);
        TextView03 = (TextView)findViewById(R.id.textView3);
        
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    }
    
    
    @Override
    protected void onResume()
    {
      mSensorManager.registerListener
      (
    		  mSensorEventListener, 
    		  mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
    		  SensorManager.SENSOR_ORIENTATION 
      );
      super.onResume();
    }
    
    @Override
    protected void onPause()
    {
      mSensorManager.unregisterListener(mSensorEventListener);
      super.onPause();
    }

    private final SensorEventListener mSensorEventListener = new SensorEventListener()
    {
    	public void onAccuracyChanged(Sensor arg0, int arg1)
    	{
			// TODO Auto-generated method stub
			
		}

		public void onSensorChanged(SensorEvent event)
		{
			if (event.sensor.getType() == Sensor.TYPE_ORIENTATION)
			{
				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));
		        }
		        
		        float y_data = event.values[SensorManager.DATA_Y];
		        y_data = -(float)Math.tan(y_data*PI/180)*100;
		        TextView02.setText(String.valueOf(y_data)+"%");
		        
		        float z_data = event.values[SensorManager.DATA_Z];
		        z_data = (float)Math.tan(z_data*PI/180)*100;
		        TextView03.setText(String.valueOf(z_data)+"%");
			}
		}
    };
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值