试试这个: 首先实现SensorEventListener并获得RotationSensor

sensorManager = (SensorManager)getActivity().getSystemService(Context.SENSOR_SERVICE);

rotationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);

sensorManager.registerListener(this, rotationSensor, SENSOR_INTERVAL);

int FROM_RADS_TO_DEGS = -57;

然后你就可以检测设备的这样的角度:

@Override

public void onSensorChanged(SensorEvent event) {

if(event.sensor == rotationSensor) {

if (event.values.length > 4) {

float[] truncatedRotationVector = new float[4];

System.arraycopy(event.values, 0, truncatedRotationVector, 0, 4);

updateRotation(truncatedRotationVector);

} else {

updateRotation(event.values);

}

}

}

private void updateRotation(float[] vectors) {

float[] rotationMatrix = new float[9];

SensorManager.getRotationMatrixFromVector(rotationMatrix, vectors);

int worldAxisX = SensorManager.AXIS_X;

int worldAxisZ = SensorManager.AXIS_Z;

float[] adjustedRotationMatrix = new float[9];

SensorManager.remapCoordinateSystem(rotationMatrix, worldAxisX, worldAxisZ, adjustedRotationMatrix);

float[] orientation = new float[3];

SensorManager.getOrientation(adjustedRotationMatrix, orientation);

float pitch = orientation[1] * FROM_RADS_TO_DEGS;

if(pitch < -45 && pitch > -135) {

// if device is laid flat on a surface, we don't want to change the orientation

return;

}

float roll = Math.abs(orientation[2] * FROM_RADS_TO_DEGS);

if((roll > 45 && roll < 135)) {

// The device is closer to landscape orientation. Enable fullscreen

if(!player.isFullScreen()) {

if(getActivity() != null) {

player.setFullScreenOn();

}

}

}

else {

// The device is closer to portrait orientation. Disable fullscreen

if(player.isFullScreen()) {

if(getActivity() != null) {

player.setFullScreenOff();

}

}

}

}

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

// Do nothing

}

这引起了原代码的教程,但不久前,所以我不记得教程的位置。该版本根据我的要求进行了大量定制,但如果有人从原始版本中识别出来,请将其放入链接中。

我使用此代码来检测视频播放器何时应该全屏内的ViewPage,我不想让横向方向上。除了一件事情,它运作良好:

它使用RotationSensor硬件,并非所有的Android设备都有RotationSensor。如果有人知道使用一些包含在所有设备上的硬件来做到这一点的方法(肯定有一种方法是因为Android知道何时切换方向),请在评论中告诉我,以便我可以更新自己的代码。

android 检测屏幕方向,在android中检测屏幕方向相关推荐

  1. python怎么检测按键_在python中检测按键?

    小智.. 41 Python有一个具有许多功能的键盘模块.安装它,也许使用此命令: pip3 install keyboard 然后在代码中使用它: import keyboard # using m ...

  2. Android测量图像中物体大小,android – 如何使用OpenCV从图像中检测(计数)头发?

    我使用OpenCV函数cvtColor,Canny和HoughLinesP尝试下面的代码,但在某些情况下无法获得准确的结果或无法工作. private boolean opencvProcessCou ...

  3. java 系统自动检测_如何在Java中检测OS(操作系统)名称?

    java 系统自动检测 To detect the OS (operating system) name in Java, we use the getProperties() method, whi ...

  4. php 检测 变量是否设置,PHP中检测一个变量是否有设置的函数是什么?

    汪汪一只猫 PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: ...

  5. 移动端获取当前屏幕的高度_css中获取屏幕的宽 高

    阅读数:26120 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body ...

  6. Android中检测应用是否安装

    Android中检测应用是否安装有多种方法,其中比较常用的有如下2种: 1.通过获取系统上已安装的所有app列表来查找[不推荐.因为要获取已安装的所有app信息,可能会有隐私泄露风险] public ...

  7. Android稳定性系列-01-使用 Address Sanitizer检测原生代码中的内存错误

    前言 想必大家曾经被各种Native Crash折磨过,本地测试没啥问题,一到线上或者自动化测试就出现各种SIGSEGV.SIGABRT.SIGILL.SIGBUS.SIGFPE异常,而且堆栈还是崩溃 ...

  8. Android开发之虹软人脸识别活体检测基本步骤

    首先,我简单说下虹软的人脸识别基本步骤: 1.你的设置好设置视频模式方向用于人脸检测 有如下几个可设置方向 //设置视频模式全方向人脸检测ConfigUtil.setFtOrient(this, Fa ...

  9. 【android系统】根据PMS中的屏幕锁WakeLock,做了一个限制儿童观看视频时长的方案

    背景 随着时代的发展.科技的进步,电子产品的拥有日趋低龄化.电子产品的不当使用可能造成很多问题,过度使用容易上瘾,影响孩子的社交生活.据资料显示看电视绝不仅仅只会影响孩子的视力,更严重的会影响到孩子的 ...

  10. Android 加固与监测,基于Android平台的恶意软件检测和软件加固技术研究

    摘要: 随着智能手机技术的发展,人们越来越多地把工作和生活的计算平台从传统的PC平台转移到移动平台.智能手机储存了大量的用户隐私,例如通信记录,位置信息等,因而成为攻击者的攻击目标.作为主流移动平台之 ...

最新文章

  1. 备忘:C语言void *
  2. mysql 类似 user__类似于微博 用户最后一条动态的查询
  3. centos7 安装 wireshark
  4. 基于机器学习方法的POI品类推荐算法
  5. 《Scikit-Learn与TensorFlow机器学习实用指南》第14章 循环神经网络
  6. linux自带mysql启动不_Linux系统自带的MySQL 数据库启动问题
  7. android 网络连接判断
  8. Atitit 提升开发效率 提升团队人员能力 目录 1. 多语言扩展 提升抽象度 2 2. 从上到下法 vs 从下倒上 问题诊断解决法 2 2.1. 培训机制 上到下法 2 2.2. 问题案例
  9. oracle 12c sp2 0667,关于数据库安装的问题SP2-0667: Message file sp1.msb not found
  10. InfoPath基础应用教程-2 表单中的规则(1)
  11. 数字信号处理(matlab版)(第3版) pdf,数字信号处理-(第3版)-(MATLAB版)
  12. jmeter接口测试
  13. zebradesginer zpl代码_斑马打印机连三菱PLC与VB.NET
  14. 8款逆天的在线实用工具
  15. c语言作业 分解质因数,深入分析C语言分解质因数的实现方法
  16. 短文阅读1:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate
  17. 【数字电路抢救】3 逻辑函数的卡诺图化简
  18. 幸运大转盘-jQuery+Java实现的抽奖程序
  19. Python数据采集案例(1):微博热搜榜采集
  20. 微信小程序 JS中遍历后台获取的data数据并赋值

热门文章

  1. 英国火箭设计者计划组建第一家私有太空游公司
  2. 这部史诗级大片,燃到爆!
  3. DTI脑影像处理流程-配准机器生成的特征图
  4. Debug:‘boost::this_thread‘ has not been declared; undefined reference to ‘boost::this_thread...‘
  5. 政策解读 | 传言PayPal要封杀独立站卖家?绝对不可能!
  6. STM32实战总结:HAL之FSMC控制TFT-LCD
  7. 苹果电脑快捷锁屏的几种方法
  8. 【验证狼人杀三行定律】
  9. FME 安装破解及与ArGIS冲突的解决方法
  10. 蓝桥杯真题:小朋友崇拜圈