博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android之传感器(二)之电子罗盘
阅读量:6690 次
发布时间:2019-06-25

本文共 1659 字,大约阅读时间需要 5 分钟。

电子罗盘:

1.  /* 取得SensorManager */

    SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 

 

2.   /* 取得需要的Sensor,并注册SensorEventListener */

   
mSensorManager.registerListener(mSensorEventListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_NORMAL); 

 

3.   /*实现监听器,并重写其中的方法*/

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值资料        

 * x_data是水平值     

 * 由于分成8个方向,所以每个方向为45°

 * */       

float x_data = event.values[SensorManager.DATA_X];       

//北方为337.5°至22.5°       

if ((x_data > 0 && x_data <= 22.5) || x_data > 337.5)        {

TextView01.setText("北方" + String.valueOf(x_data));        }        

//东北方为22.5°至67.5°       

else if (x_data > 22.5 && x_data <= 67.5)        {         

TextView01.setText("东北方" + String.valueOf(x_data));        }        

//东方为67.5°至112.5°       

else if (x_data > 67.5 && x_data <= 112.5)        {         

TextView01.setText("东方" + String.valueOf(x_data));        }        

//东南方为112.5°至157.5°       

else if (x_data > 112.5 && x_data <= 157.5)        {         

TextView01.setText("东南方" + String.valueOf(x_data));        }        

//南方为157.5°至202.5°       

else if (x_data > 157.5 && x_data <= 202.5)        {         

TextView01.setText("南方" + String.valueOf(x_data));        }        

//西南方为202.5°至247.5°       

else if (x_data > 202.5 && x_data <= 247.5)        {         

TextView01.setText("西南方" + String.valueOf(x_data));        }        

//西方为247.5°至292.5°       

else if (x_data > 247.5 && x_data <= 292.5)        {         

TextView01.setText("西方" + String.valueOf(x_data));        }        

//西北方为292.5°至337.5°       

else if (x_data > 292.5 && x_data <= 337.5)        {         

TextView01.setText("西北方" + String.valueOf(x_data));        }      }    }  };

 

 

转载地址:http://aqhao.baihongyu.com/

你可能感兴趣的文章
第24课 经典问题解析二
查看>>
Material Design 组件之NavigationView
查看>>
【Android】3.13 路径规划功能
查看>>
工作中记录一 list转树
查看>>
spring踩坑
查看>>
[HDU 2665&POJ 2104]K-th Number(主席树)
查看>>
重读模电教材一_童诗白、华成英
查看>>
linux 常用命令
查看>>
在textarea中鼠标指定的位置插入字符或表情
查看>>
Ansible 安装
查看>>
sychronized关键字
查看>>
C++ 控制台代码输出控制
查看>>
Delphi按名字调用方法高级解决方案
查看>>
用openssl生成SSL使用的私钥和证书,并自己做CA签名(转)
查看>>
HRBUST 1311 火影忍者之~忍者村
查看>>
Android中Java反射技术的使用示例
查看>>
Ajax[1] - 关于 jquery html 动态添加的元素绑定事件
查看>>
Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案
查看>>
linux安装elasticsearch及遇到的各种问题
查看>>
C#进阶--WebApi异常处理机制
查看>>