Sensor(ORIENTATION)
package com.example.sensor01; import java.util.List; import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener{ private SensorManager mSensorManager;
private TextView textview;
private float[] mags;
private float[] accs;
private float[] oris;
private float[] rotate; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textview = (TextView) findViewById(R.id.content); mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//Sensor.TYPE_ORIENTATION 在新版本中已经放弃
Sensor magsensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
Sensor accsensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensorManager.registerListener(this, magsensor, SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, accsensor, SensorManager.SENSOR_DELAY_FASTEST); mags = new float[3];
accs = new float[3];
oris = new float[3];
rotate = new float[9];
} @Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
} @Override
public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
mags = event.values;//x轴地磁强度
} if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
accs = event.values;//x轴地磁强度
} mSensorManager.getRotationMatrix(rotate, null, accs, mags);
mSensorManager.getOrientation(rotate, oris);
/*oris[0] :azimuth 方向角,但用(磁场+加速度)得到的数据范围是(-180~180),也就是说,0表示正北,90表示正东,180/-180表示正南,-90表示正西。
oris[1] :pitch 倾斜角 即由静止状态开始,围绕X轴前后翻转
oris[2] :roll 旋转角 即由静止状态开始,围绕Y轴左右翻转*/
double azimuth = Math.toDegrees(oris[0]);
if (azimuth<0) {
azimuth=azimuth + 360;
}
double pitch = Math.toDegrees(oris[1]);
double roll = Math.toDegrees(oris[2]); textview.setText(String.valueOf(azimuth) + " "
+ String.valueOf(pitch) + " " + String.valueOf(roll));
}
}
Sensor(ORIENTATION)的更多相关文章
- 高通 8x26 andorid light sensor(TSL258x) 开发【转】
		
本文转载自:http://www.voidcn.com/blog/u012296694/article/p-1669831.html 前言 8926平台的sensor架构与之前的平台完全不同,实际上已 ...
 - Sensor(PROXIMITY)
		
package com.example.sensor01; import android.hardware.Sensor; import android.hardware.SensorEvent; i ...
 - Sensor(GYROSCOPE)
		
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
 - Sensor(ACCELEROMETER)
		
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
 - Sensor(LIGHT)
		
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
 - Android传感器编程带实例(转)
		
源:http://www.cnblogs.com/xiaochao1234/p/3894751.html 看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推 ...
 - ArcGIS中的坐标系:基本概念和常用操作(一)
		
本文呢是主要是借鉴李郎平李大大的博士论文和百度百科,里面还有一点点我自己的理解,希望能帮助自己加深对于坐标系的认识. 李大大的博客:http://blog.sciencenet.cn/u/Brume ...
 - OpenCascade 边界表示法(BRep)
		
转自 http://www.cppblog.com/eryar/archive/2013/08/20/202678.html Topology and Geometry in OpenCascade- ...
 - (转)CMOS Sensor的调试经验分享
		
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
 
随机推荐
- 用TypeScript开发爬虫程序
			
全局安装typescript: npm install -g typescript 目前版本2.0.3,这个版本不再需要使用typings命令了.但是vscode捆绑的版本是1.8的,需要一些配置工作 ...
 - 用ajax获取后台数据,返回json数据,怎么在前台使用?
			
用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...
 - ue4 plugin的编译加载
			
插件Plugin: 本来应该是指一种纯以接口与外界打交道的程序模块,在同一接口背后可以有多种实现,更换实现完全不影响客户端代码(不用重编). 但是在ue4的世界里,插件似乎不是这个意思,仅仅是一种可以 ...
 - ppt 制作海报 导出高分辨率图片
			
用ppt做海报,导出图片的时候,发现导出的图片的分辨率只有96ppi,清晰度不太好. 怎么能这样呢! 网上搜了一下,发现微软提供了一个修改注册表的方法,点击这里访问.不过那里讲的最新只有2010,我的 ...
 - SQL Server 大数据量分页建议方案
			
简单的说就是这个 select top(20) * from( select *, rowid = row_number() over(order by xxx) from tb with(noloc ...
 - 面向对象程序设计 第二次作业<1>
			
Github链接:https://github.com/zora02/object-oriented/tree/master/1001.A%2BB%20Format%20(20) 一.解题 题目 解题 ...
 - C#中的using和yield return混合使用
			
最近写代码为了为了省事儿用了几个yield return,因为我不想New一个List<T>或者T[]对象再往里放元素,就直接返回IEnumerable<T>了.我的代码里还有 ...
 - iOS 单例模式
			
主要用于做应用程序的资源共享控制.用途很多⋯⋯ 实质为,单例是在程序声明周期里 有且仅有 被实例化过一次的类.为确保实例化的唯一,利用类的 类(static)方法来生成和访问对象. 至此,你便可以在程 ...
 - 1154. Easy sort
			
#include<iostream>#include<cmath>#include<iomanip>#include<algorithm>using n ...
 - Oracle中rownum和rowid的理解(转)
			
本文转自地址http://www.linuxidc.com/Linux/2012-04/58300.htm rownum,rowid都叫伪列. 但是,rownum是逻辑上的编号,且其值总是从1开始,每 ...