`

获取手机设备方向

 
阅读更多

@Override

public void onSensorChanged(SensorEvent event) {

float[] values = event.values;

int orientation = Configuration.ORIENTATION_UNDEFINED;

float X = -values[0];

float Y = -values[1];

float Z = -values[2];

float magnitude = X * X + Y * Y;

// Don't trust the angle if the magnitude is small compared to the y

// value

// 这里是关键,来至于谷歌官方

if (magnitude * 4 >= Z * Z) {

float OneEightyOverPi = 57.29577957855f;

float angle = (float) Math.atan2(-Y, X) * OneEightyOverPi;

orientation = 90 - (int) Math.round(angle);

// normalize to 0 - 359 range

while (orientation >= 360) {

orientation -= 360;

}

while (orientation < 0) {

orientation += 360;

}

}

if(orientation < 45 || orientation >= 315){

screentDirection = 0;

}else if(orientation >= 45 && orientation < 135){

screentDirection = 90;

}else if(orientation >= 135 && orientation < 225){

screentDirection = 180;

}else{

screentDirection = 270;

}

} @Override

	public void onSensorChanged(SensorEvent event) {
		float[] values = event.values;
		int orientation = Configuration.ORIENTATION_UNDEFINED;
		float X = -values[0];
		float Y = -values[1];
		float Z = -values[2];
		float magnitude = X * X + Y * Y;
		// Don't trust the angle if the magnitude is small compared to the y
		// value
		// 这里是关键,来至于谷歌官方
		if (magnitude * 4 >= Z * Z) {
			float OneEightyOverPi = 57.29577957855f;
			float angle = (float) Math.atan2(-Y, X) * OneEightyOverPi;
			orientation = 90 - (int) Math.round(angle);
			// normalize to 0 - 359 range
			while (orientation >= 360) {
				orientation -= 360;
			}
			while (orientation < 0) {
				orientation += 360;
			}
		}
		if(orientation < 45 || orientation >= 315){
			screentDirection = 0;
		}else if(orientation >= 45 && orientation < 135){
			screentDirection = 90;
		}else if(orientation >= 135 && orientation < 225){
			screentDirection = 180;
		}else{
			screentDirection = 270;
		}
	}
 
分享到:
评论

相关推荐

    Vue集成Cordova的Navtive功能:获取地理位置,手机振动,调取手机图片,扫描二维码等

    Vue集成实现拍照,选择本地图片、定位、扫一扫。手机app

    安卓设备读取USB外设信息

    带OTG功能安卓设备读取USB外设信息 可以通过AS调试读出 , 过滤关键字 "Li_Debug" , 一次显示使用USB外设 格式举例 厂商/VendorId: 0x10C4 产品/ProductId: 0xEA60 设备/DeviceId: 0x7D2 接口数/InterfaceCount: 1 ...

    Android 传感器数据采集 – 方位角、俯仰角和滚转角:从运行 MATLAB 的计算机捕获移动设备的方向。-matlab开发

    此示例展示了如何捕获 Android 移动设备(如手机或平板电脑)的方向。 方向定义为三个角度量的组合:方位角、俯仰角和滚转角。 该示例显示了如何访问当前的方向值,还演示了如何绘制记录的方向值。 此示例要求用户...

    在 iOS 或 Android 上获取设备航向信息

    React Native Heading 在 iOS 或 Android 上获取设备航向信息 What 以度数报告设备方向,0-360,0 为北。 示例 const { DeviceEventEmitter } = require('react-native'); const ReactNativeHeading = require('...

    【代码工程】Unity 工具 之简单镭射 Laser Ray 交互的封装可交互物体 GameObject 和 UI 基于/可用于眼镜插手机上交互

    2、手机设备中通过获取陀螺仪 gyro 数据旋转为 镭射线的旋转数据 3、镭射使用(这里使用LookAt方式,具体见代码)上边获取到的旋转数据,然后作为射线发射方向,碰撞到物体的距离作为 镭射实体的长度 4、物体...

    电子设计方向.doc

    设计内容可涵盖:物联网应用(城市交通,医疗,港口物流,环境监测,多网融合等 )、消费类电子、数字电视、GPS导航、智能手机、数字家电、多媒体、视频编码解码、 图像处理、安防监控、无线通讯、信息识别、工业...

    来自 MATLAB 的 Android 传感器支持(R2013a、R2013b):使用 MATLAB 从 Android 设备上的内置传感器获取传感器数据。-matlab开发

    通过此提交,您可以直接从计算机上运行的 MATLAB 访问移动设备的加速度计、磁力计、位置、方向和指南针信息。 您可以访问当前和记录的传感器数据,并且可以使用 MATLAB 来可视化和分析移动传感器数据或根据获取的...

    node-wss-osc-deviceorientation:Node.js https websocket用于客户端设备方向数据

    套接字/ OSC /设备示例-IMGD 5100 用您的IP或&lt;your&gt;.local替换vengeance.local 安装并运行mkcert(对于Windows,我使用Chocolatey)确保将... 单击获取加速度计权限按钮 观看设备定向数据进入您的node.js服务器!

    基于汽车方向盘测量脉搏率、呼吸率和ECG的心率-电路方案

    该参考设计还包含全套 BLE 连接设计,可轻松连接到已启用 BLE 的智能手机、平板电脑等设备 特性采用 AFE4400 通过手掌测量脉搏 采用 AFE4300 测量心率和呼吸率 采用 MSP430F5528 MCU 保留每次测量的算法数据 采用 TI...

    PopularMovies:Ancroid应用程序,用于从TMDB获取流行电影列表

    使用的概念Android Layout支持不同的设备内容解析器和游标适配器,用于将数据放入数据库并更新listView 同步适配器,可有效地获取数据。 用于生成正方形图块的自定义视图。 异步任务,用于获取与tariler和评论相关...

    Android开发应用实战详解源代码

    3.5 获取手机分辨率 3.6 样式修饰处理 3.7 按钮事件响应 3.8 页面间的转换 3.9 activity调用 3.10 多个activity间的数据传递 3.11 将数据返回到前一个activity 3.12 对话框交互处理 3.13 文字颜色置换 3.14 文字字体...

    apache-tomcat-8.0.35.zip

    互联网:互联网是一个全球性的网络系统,它连接了世界各地的计算机和设备,使得人们可以随时随地获取信息、交流思想、共享资源。互联网的出现极大地拓宽了人们的视野和思维方式,改变了人们的生活方式和社会结构。 ...

    Typora.zip

    互联网:互联网是一个全球性的网络系统,它连接了世界各地的计算机和设备,使得人们可以随时随地获取信息、交流思想、共享资源。互联网的出现极大地拓宽了人们的视野和思维方式,改变了人们的生活方式和社会结构。 ...

    mindmaster_cn_setup_full5587.zip

    互联网:互联网是一个全球性的网络系统,它连接了世界各地的计算机和设备,使得人们可以随时随地获取信息、交流思想、共享资源。互联网的出现极大地拓宽了人们的视野和思维方式,改变了人们的生活方式和社会结构。 ...

    EmpManager3.rar

    互联网:互联网是一个全球性的网络系统,它连接了世界各地的计算机和设备,使得人们可以随时随地获取信息、交流思想、共享资源。互联网的出现极大地拓宽了人们的视野和思维方式,改变了人们的生活方式和社会结构。 ...

    基于Android的手机音乐播放器的开题报告.doc

    越来越多的人希望在移动的过" "程中高速地接入互联网,获取急需的信息,完成想做的事情。所以,移动互联网的" "出现是历史的必然。 " "而Android是移动互联下诞生的产物。Android:是Google于2007年11月推出的一款" ...

    51单片机红外遥控小车+安卓旧手机+AgoraRTC=远程视频监控小车-电路方案

    使用安卓手机作为控制端,通过无线网络对监控平台进行移动方向、速度的控制,平台上的摄像头实时采集视频图像信号并通过无线WiFi网络将视频信号实时传输到手机端观看,然后可实时拍照录像并可实时存储。由于监控端可...

    Android APP 小工具测试“利器”

    Android 测试小工具基于Maven的Java Swing GUI桌面应用开发并集成adb命令完成应用程序信息快速查看,工具的主要用途用于快速获取安卓设备当前正在运行的最顶层APP的相关信息,如:PackName、PackBit、Launchable_...

    物联网专业调研报告(2011).doc

    在此之前,也在网上收集整理了一些物联网的相关知识,也从其他 兄弟院校上获取了一些资料,整理成如下初步报告,以后半年再加调研,争取完成一份 物联网专业的人才培养方案。 1. 物联网产业及其产业体系构造 物联网...

    Google Android SDK开发范例大全(第3版) 1/5

    5.14 获取手机现存桌面 5.15 文件资源管理器再进化 5.16 取得目前File与Cache的路径 5.17 打开/关闭WiFi服务 5.18 取得SIM卡内的信息 5.19 调用拨号按钮 5.20 DPAD按键处理 5.21 任务管理器正在运行的程序 5.22 动态...

Global site tag (gtag.js) - Google Analytics