Android APP检查设备是否为平板

news/2024/11/30 12:40:30/

正文

Android APP判断设备是否为平板的三种方法:

  1. 通过屏幕尺寸判断。一般来说,平板电脑的屏幕尺寸比手机大很多,可以根据屏幕的长宽比和尺寸等信息来区分设备类型。
  2. 通过屏幕像素密度判断。一般来说,平板电脑的屏幕像素密度比手机低,可以通过像素密度来判断设备类型。
  3. 通过设备参数判断。可以通过读取设备硬件参数来区分设备类型,例如可以根据设备内存、CPU性能等参数来判断是否为平板电脑。

注:需要注意的是,这三种方法都有一定的局限性,不能百分之百地准确判断设备类型。

我们吸收参考网上的多种平板判断方案,同时也使用一些大厂 APP 对设备的判断进行交叉验证。
话不多说,直接上开源地址:https://github.com/gallonyin/PhoneOrTablet
为了方便大家快速验证,直接使用我们编译好的 APP: 下载地址

APP截图:
小米手机
app截图

蓝叠5(中国)
在这里插入图片描述
自制redroid
在这里插入图片描述
结论: 在蓝叠5和自制redroid上我们使用各大APP可以被验证为平板设备。

核心检查类:

package org.yameida.phoneortablet;import android.content.Context;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;public class CheckUtils {private static final String TAG = "CheckUtils";/*** 判断是否为平板*/public static boolean isPad() {boolean result = false;String mDeviceType = SysProp.get("ro.build.characteristics", "default");if (mDeviceType != null && mDeviceType.equalsIgnoreCase("tablet")) {result = true;}Log.d(TAG, "isPad:" + result);return result;}/*** 判断是否为平板*/public static boolean isPad(Context context) {boolean result = false;WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();DisplayMetrics dm = new DisplayMetrics();display.getMetrics(dm);double x = Math.pow(dm.widthPixels / dm.xdpi, 2);double y = Math.pow(dm.heightPixels / dm.ydpi, 2);// 屏幕尺寸double screenInches = Math.sqrt(x + y);// 大于7尺寸则为Padif (screenInches >= 7.0) {result = true;}Log.d(TAG, "screenInches:" + screenInches);Log.d(TAG, "isPad:" + result);return result;}/*** 判断是否为平板*/public static boolean isTablet(Context context) {return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;}/*** 判断屏幕尺寸*/public static double screenSize(Context context) {WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();DisplayMetrics dm = new DisplayMetrics();display.getMetrics(dm);double x = Math.pow(dm.widthPixels / dm.xdpi, 2);double y = Math.pow(dm.heightPixels / dm.ydpi, 2);// 屏幕尺寸return Math.sqrt(x + y);}}

参考文章

Android 判断是否为平板的三种方法

喜欢本文可以关注我~有问题可以留言或私信我。


http://www.ppmy.cn/news/34558.html

相关文章

从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构

目录引言技术选型正文创建基础架构IDEA创建项目添加Netty监听端口编写客户端进行测试总结引言 由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习…

嵌入式学习笔记——SysTick(系统滴答)

系统滴答前言SysTick概述SysTick是个啥SysTick结构框图1. 时钟选择2.计数器部分3.中断部分工作一个计数周期(从重装载值减到0)的最大延时时间工作流程SysTick寄存器1.控制和状态寄存器SysTick->CTRL2.重装载值寄存器SysTick->LOAD3.当前值寄存器Sy…

【CodeForces】Codeforces Round 859 (Div. 4) D

嘿嘿嘿,CF虐我千百遍,我待CF如初见! (doge) 目录 题目含义: 前缀和: 代码 🎆音乐分享(点击链接可以听哦) A Hundred Miles(一百英里)…

HAL库 STM32 串口通信

一、实验条件将STM32的PA9复用为串口1的TX,PA10复用为串口1的RX。STM32芯片的输出TX和接收RX与CH340的接收RX和发送TX相连(收发交叉且PCB上默认没有相连,所以需要用P3跳线帽进行手动连接),CH340的另一端通过USB口引出与…

用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X!

用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X! AI盛行的时代来临了,在这段时间,除了爆火的GPT3.5后,OpenAI发布了GPT4版本,同时微软也在Bing上开始加入了A…

Mysql数据库如何调优

MYSQL数据库调优 索引 1、对于常用的查询字段加索引,但如果常用字段只有几个常量值就不需要加索引,或者使用索引会失效的情况; 2、索引失效的情况: ​ 1、索引列使用函数,计算(加减乘除等) …

【Linux】进程优先级 环境变量

进程优先级 环境变量 一、进程优先级1、基本概念2、查看以及修改系统进程的优先级3、一些其他的关于进程优先级的指令和函数调用4、与进程优先级有关的一些进程性质二、环境变量1、基本概念2、和环境变量相关的命令3、Linux中的常见环境变量介绍4、环境变量的组织方式以及在C代…

基于XML的自动装配~

基于XML的自动装配之场景模拟: 自动装配:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或者接口类型赋值 之前我们学过的依赖注入,我们在为不同属性赋值时,例如类类型的属性…