@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;
}
}
分享到:
相关推荐
5. **特性检测**:`mobile-detect.js`还可以帮助检测设备特性,比如是否有触摸屏、设备方向(横竖屏)等。 使用这个库时,你需要在HTML中引入`mobile-detect.js`,然后创建一个`MobileDetect`实例,并调用其方法来...
这个压缩包文件“使用html5得到手机设备信息的.rar”很可能是包含了一个或多个示例,教你如何利用HTML5的API来获取移动设备的各种信息,如屏幕尺寸、操作系统、电池状态等。 在HTML5中,主要通过以下API来获取设备...
本教程将详细介绍如何将Vue与Cordova集成,以实现获取地理位置、手机振动、调用手机图片以及扫描二维码等原生功能。 首先,我们需要安装并配置Cordova环境。确保已经安装了Node.js,然后通过命令行运行`npm install...
【标题】:“安卓浏览器WebViewJSHTML5相关-使用html5得到手机设备信息的.zip”指出,这个压缩包包含了关于在Android环境下,通过WebView组件利用HTML5技术获取手机设备信息的相关资料。WebView是Android SDK中的一...
该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发 该项目采用wmi技术开发
在Android开发中,获取手机的屏幕分辨率是一项基本操作,这对于创建适配不同设备的应用程序至关重要。下面我们将深入探讨如何在Android系统中获取设备的分辨率,以及相关的重要知识点。 首先,我们要明白屏幕分辨率...
在Android平台上,获取手机传感器是一项常见的任务,它涉及到设备的各种硬件功能,如加速度计、陀螺仪、磁力计等。这些传感器为开发者提供了丰富的数据,可用于实现各种创新功能,比如运动检测、方向判断、游戏控制...
在Android系统中,获取手机的各种传感器数据是一项关键的开发任务,这使得应用程序能够与物理环境交互,提供丰富的用户体验。本文将深入探讨如何利用Android SDK中的SensorManager类来获取包括陀螺仪、方向传感器和...
本文将详细介绍如何利用百度地图API获取手机当前的位置,并在地图上进行展示。 首先,我们需要在百度地图开放平台(http://lbsyun.baidu.com/)注册一个账号,创建一个新的应用并获取API密钥(Key)。这个Key是连接...
它提供了设备在3D空间中的姿态信息,可以帮助开发者构建各种基于移动设备方向的应用,如导航、游戏或者虚拟现实体验。 首先,理解Android的坐标系统至关重要。Android设备的坐标系由X、Y、Z三个轴构成: - X轴:...
值得一提的是,这项技术的应用前景广阔,它不仅适用于手机设备,还可能扩展到其他具备音频硬件的智能设备上。考虑到当前市场上的许多电子设备都配备了麦克风和扬声器,这一技术的广泛应用可能会带来人机交互方式的...
- **设备型号**:通过`Build.MODEL`可以获取手机的型号,例如"Samsung Galaxy S10"。 - **操作系统版本**:使用`Build.VERSION.RELEASE`可获取Android系统的版本号,如"10.0"。 - **设备制造商**:`Build....
在Android应用开发中,了解和获取手机屏幕的尺寸是非常重要的,这可以帮助我们适配不同的设备,提供良好的用户体验。本文将详细解析如何通过源码获取手机屏幕尺寸,并介绍相关的编程概念。 首先,Android系统提供了...
标题“手机方向传感器+Unity3D”涉及到的关键技术领域是移动设备传感器的使用与Unity3D游戏引擎的集成。在现代智能手机和平板电脑中,方向传感器(也称为姿态传感器或陀螺仪)是一种重要的硬件组件,它能够检测设备...
在Android开发中,获取手机传感器列表以及手机加速度是一项常见的任务。这涉及到Android系统的硬件抽象层(HAL)和传感器框架,使得应用能够访问并处理来自各种传感器的数据。本篇文章将详细探讨这一主题。 首先,...
同时,用户设备,如智能手机,也包含信息获取装置,如Wi-Fi模块和移动网络模块,用于接入网络并进行数据交换。 用户设备在信息获取系统中扮演着重要角色。它们不仅是信息的发送源,也是接收端。用户设备通常具有...
2. 获取手机的IP地址和开放的端口。 3. 在电脑端启动UI应用,并输入手机的IP和端口信息。 4. 建立连接后,手机端应用开始实时发送传感器数据。 5. 电脑端应用接收数据并进行可视化展示或进一步处理。 在实际应用中...
在Android开发中,陀螺仪(Gyroscope)传感器是一种重要的硬件组件,它能够提供设备在三维空间中的角速度信息,这对于实现精确的运动跟踪和方向感知至关重要。本篇文章将详细探讨如何通过编程来获取并利用Android...
本文将深入探讨如何获取手机屏幕的大小和密度,并以此为基础进行适配工作。 首先,我们要理解屏幕大小和屏幕密度的概念。屏幕大小通常指的是屏幕的物理尺寸,以英寸为单位,衡量屏幕对角线的长度。而在Android系统...