`

获取手机设备方向

 
阅读更多

@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;
		}
	}
 
分享到:
评论

相关推荐

    javascript获取设备类型,设备名称操作系统等

    5. **特性检测**:`mobile-detect.js`还可以帮助检测设备特性,比如是否有触摸屏、设备方向(横竖屏)等。 使用这个库时,你需要在HTML中引入`mobile-detect.js`,然后创建一个`MobileDetect`实例,并调用其方法来...

    使用html5得到手机设备信息的.rar

    这个压缩包文件“使用html5得到手机设备信息的.rar”很可能是包含了一个或多个示例,教你如何利用HTML5的API来获取移动设备的各种信息,如屏幕尺寸、操作系统、电池状态等。 在HTML5中,主要通过以下API来获取设备...

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

    本教程将详细介绍如何将Vue与Cordova集成,以实现获取地理位置、手机振动、调用手机图片以及扫描二维码等原生功能。 首先,我们需要安装并配置Cordova环境。确保已经安装了Node.js,然后通过命令行运行`npm install...

    安卓浏览器WebViewJSHTML5相关-使用html5得到手机设备信息的.zip

    【标题】:“安卓浏览器WebViewJSHTML5相关-使用html5得到手机设备信息的.zip”指出,这个压缩包包含了关于在Android环境下,通过WebView组件利用HTML5技术获取手机设备信息的相关资料。WebView是Android SDK中的一...

    C#winform获取外接USB设备信息

    该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发

    获取android手机的分辨率

    在Android开发中,获取手机的屏幕分辨率是一项基本操作,这对于创建适配不同设备的应用程序至关重要。下面我们将深入探讨如何在Android系统中获取设备的分辨率,以及相关的重要知识点。 首先,我们要明白屏幕分辨率...

    Android获取手机传感器

    在Android平台上,获取手机传感器是一项常见的任务,它涉及到设备的各种硬件功能,如加速度计、陀螺仪、磁力计等。这些传感器为开发者提供了丰富的数据,可用于实现各种创新功能,比如运动检测、方向判断、游戏控制...

    获取Android手机的各类传感器数据

    在Android系统中,获取手机的各种传感器数据是一项关键的开发任务,这使得应用程序能够与物理环境交互,提供丰富的用户体验。本文将深入探讨如何利用Android SDK中的SensorManager类来获取包括陀螺仪、方向传感器和...

    百度地图获取手机当前的位置

    本文将详细介绍如何利用百度地图API获取手机当前的位置,并在地图上进行展示。 首先,我们需要在百度地图开放平台(http://lbsyun.baidu.com/)注册一个账号,创建一个新的应用并获取API密钥(Key)。这个Key是连接...

    Android利用方向传感器获得手机的相对角度实例说明

    它提供了设备在3D空间中的姿态信息,可以帮助开发者构建各种基于移动设备方向的应用,如导航、游戏或者虚拟现实体验。 首先,理解Android的坐标系统至关重要。Android设备的坐标系由X、Y、Z三个轴构成: - X轴:...

    手机声音信号获取手指移动轨迹

    值得一提的是,这项技术的应用前景广阔,它不仅适用于手机设备,还可能扩展到其他具备音频硬件的智能设备上。考虑到当前市场上的许多电子设备都配备了麦克风和扬声器,这一技术的广泛应用可能会带来人机交互方式的...

    Android 使用html5得到手机设备信息的-IT计算机-毕业设计.zip

    - **设备型号**:通过`Build.MODEL`可以获取手机的型号,例如"Samsung Galaxy S10"。 - **操作系统版本**:使用`Build.VERSION.RELEASE`可获取Android系统的版本号,如"10.0"。 - **设备制造商**:`Build....

    Android应用源码获取手机屏幕尺寸的代码段.zip

    在Android应用开发中,了解和获取手机屏幕的尺寸是非常重要的,这可以帮助我们适配不同的设备,提供良好的用户体验。本文将详细解析如何通过源码获取手机屏幕尺寸,并介绍相关的编程概念。 首先,Android系统提供了...

    手机方向传感器+Unity3D

    标题“手机方向传感器+Unity3D”涉及到的关键技术领域是移动设备传感器的使用与Unity3D游戏引擎的集成。在现代智能手机和平板电脑中,方向传感器(也称为姿态传感器或陀螺仪)是一种重要的硬件组件,它能够检测设备...

    获取手机传感器列表、手机加速度

    在Android开发中,获取手机传感器列表以及手机加速度是一项常见的任务。这涉及到Android系统的硬件抽象层(HAL)和传感器框架,使得应用能够访问并处理来自各种传感器的数据。本篇文章将详细探讨这一主题。 首先,...

    Android陀螺仪编程获取旋转角度

    在Android开发中,陀螺仪(Gyroscope)传感器是一种重要的硬件组件,它能够提供设备在三维空间中的角速度信息,这对于实现精确的运动跟踪和方向感知至关重要。本篇文章将详细探讨如何通过编程来获取并利用Android...

    电信设备-信息获取方法、信息获取装置及用户设备.zip

    同时,用户设备,如智能手机,也包含信息获取装置,如Wi-Fi模块和移动网络模块,用于接入网络并进行数据交换。 用户设备在信息获取系统中扮演着重要角色。它们不仅是信息的发送源,也是接收端。用户设备通常具有...

    DCP连接获取安卓手机感应器数据

    2. 获取手机的IP地址和开放的端口。 3. 在电脑端启动UI应用,并输入手机的IP和端口信息。 4. 建立连接后,手机端应用开始实时发送传感器数据。 5. 电脑端应用接收数据并进行可视化展示或进一步处理。 在实际应用中...

    获取 Android 设备的系统信息 包含屏幕信息、内存信息、IMEI、存储、传感器、CPU等信息.zip

    - IMEI是每个手机设备的唯一标识,可以使用`TelephonyManager`的`getDeviceId()`方法获取。 4. **存储信息**: - 存储总空间:`StatFs`类可以用于获取外部或内部存储的总块数,通过`blockCountLong()`方法。 - ...

Global site tag (gtag.js) - Google Analytics