package com.tgb.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 检测是否为移动端设备访问 * * @author : Cuichenglong * @group : tgb8 * @Version : 1.00 * @Date : 2014-7-7 下午01:34:31 */ public class CheckMobile { // \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔), // 字符串在编译时会被转码一次,所以是 "\\b" // \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔) static String phoneReg = "\\b(ip(hone|od)|android|opera m(ob|in)i" +"|windows (phone|ce)|blackberry" +"|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp" +"|laystation portable)|nokia|fennec|htc[-_]" +"|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b"; static String tableReg = "\\b(ipad|tablet|(Nexus 7)|up.browser" +"|[1-4][0-9]{2}x[1-4][0-9]{2})\\b"; //移动设备正则匹配:手机端、平板 static Pattern phonePat = Pattern.compile(phoneReg, Pattern.CASE_INSENSITIVE); static Pattern tablePat = Pattern.compile(tableReg, Pattern.CASE_INSENSITIVE); /** * 检测是否是移动设备访问 * * @Title: check * @Date : 2014-7-7 下午01:29:07 * @param userAgent 浏览器标识 * @return true:移动设备接入,false:pc端接入 */ public static boolean check(String userAgent){ if(null == userAgent){ userAgent = ""; } // 匹配 Matcher matcherPhone = phonePat.matcher(userAgent); Matcher matcherTable = tablePat.matcher(userAgent); if(matcherPhone.find() || matcherTable.find()){ return true; } else { return false; } } }
使用方式:
/** * 检查访问方式是否为移动端 * * @Title: check * @Date : 2014-7-7 下午03:55:19 * @param request * @throws IOException */ public boolean check(HttpServletRequest request,HttpServletResponse response) throws IOException{ boolean isFromMobile=false; HttpSession session= request.getSession(); //检查是否已经记录访问方式(移动端或pc端) if(null==session.getAttribute("ua")){ try{ //获取ua,用来判断是否为移动端访问 String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase(); if(null == userAgent){ userAgent = ""; } isFromMobile=CheckMobile.check(userAgent); //判断是否为移动端访问 if(isFromMobile){ System.out.println("移动端访问"); session.setAttribute("ua","mobile"); } else { System.out.println("pc端访问"); session.setAttribute("ua","pc"); } }catch(Exception e){} }else{ isFromMobile=session.getAttribute("ua").equals("mobile"); } return isFromMobile; }
相关推荐
例如,在识别过程中,当检测到新的语音输入时,可以通过触发相应的事件来更新当前状态,进一步处理语音数据。这种基于事件的状态转移机制确保了识别过程的流畅性和响应性。 ##### 3.3 状态转移系统详解 根据JSAPI...
本文将深入探讨如何使用JAVA实现扫描二维码自动下载对应客户端类型的APP功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,存储的数据可以是网址、文字、图片、联系人...
### 基于Java Speech API规范的语音识别引擎的实现 #### 一、Java Speech API (JSAPI) 概览 Java Speech API (JSAPI) 是由Sun Microsystems和其他几家知名的语音技术公司联合开发的一套标准化的接口规范。这套规范...
- **配置文件**:某些 Android 版本的配置文件中可能会包含关于设备类型的描述,如 `config.isSmallScreen` 和 `config.isLargeScreen`。 - **设备型号**:通过 `Build.MODEL` 获取设备型号,并根据型号列表判断是否...
例如,`UUID.randomUUID()`方法可以生成一个基于时间的UUID,这是最常见的类型,它结合了当前时间戳、随机数和机器标识,确保生成的ID在全球范围内是唯一的。 以下是一个简单的Java程序示例,展示了如何生成和使用...
在当前的IT行业中,人工智能(AI)的应用已经深入到各个领域,其中之一便是图像识别技术。本文将探讨一个基于人工智能的麻将识别源代码Demo实例,它不仅能够识别麻将,还可以进行定制化物体识别,展示了AI技术在游戏...
- **Path 变量**:设置 Path 变量可以让系统在任何目录下都识别并执行 Java 程序。具体步骤包括设置 JAVA_HOME 环境变量指向 JDK 安装目录,然后将 JDK 的 bin 目录添加到 Path 变量中。 - **Classpath 变量**:用于...
接下来,**识别网络类型**有助于我们理解用户当前连接的是哪种网络,比如2G、3G、4G或Wi-Fi。依旧使用TelephonyManager类,可以获取到如下信息: ```java int networkType = telephonyManager.getNetworkType(); ...
首先,我们可以通过分析HTTP请求头中的`User-Agent`字段来识别设备类型。`User-Agent`包含了浏览器发送请求时的设备信息,包括浏览器类型、版本以及操作系统等。例如,移动设备的`User-Agent`通常会包含"Mobile"、...
在Java编程中,获取设备当前连接的网络类型是常见的需求,特别是在开发依赖网络功能的应用时。这篇内容主要讲解了如何利用Android SDK中的`ConnectivityManager`和`TelephonyManager`类来判断网络连接的类型。以下是...
为了确保图像识别的准确性,系统会利用Java中的图像处理库(例如Java Advanced Imaging API)来进行预处理工作,这包括但不限于图像裁剪、缩放、灰度化、二值化等操作。这些预处理步骤可以有效提高后续图像识别的...
然而,当前系统面临的主要挑战是识别速度较慢,这可能是由于SIFT算法计算量大,以及Java-JNA-C的跨语言调用带来的性能损耗。未来可以通过优化算法、提升硬件性能、使用并行计算技术等方式来提高识别效率。 五、未来...
JAVASE(Java Platform Standard Edition)用于桌面应用开发,是其他两者的基础,而JAVAME(Java Platform Micro Edition)则针对电子消费产品和嵌入式设备,如手机应用。 Java开发涉及的主要工具有JDK(Java ...
此外,文档还提到了与Java相关的其他技术,例如Java Web、Java Android和Java iOS,这些技术让Java的应用可以扩展到移动平台,使得开发者可以在不同的设备上使用Java技术进行应用开发。文档中还出现了一些与网络协议...
- `export PATH=/opt/jdk/bin:$PATH`:更新PATH环境变量,以便系统能够识别`javac`和`java`命令。 #### 第二章:Java基本类型变量 ##### 变量定义 - **变量**:用来存储数据的容器。 - **声明与初始化**: - ...
- **javac命令**:Java的编译器,用于将源代码(.java文件)编译成Java虚拟机可识别的字节码(.class文件)。 - **java命令**:启动Java虚拟机,加载运行时所需类库,并执行.class文件。程序执行始于main函数。 **...
1. **获取IP地址**:首先,我们需要获取当前设备的IP地址。这可以通过多种方式实现,例如使用`InetAddress`类的静态方法`getLocalHost()`,或者通过HTTP请求获取远程服务器返回的IP。 ```java InetAddress ...
5. 结果展示:显示识别出的食物类型,并提供可能的营养价值和饮食建议。 四、挑战与优化 当前系统存在的主要问题是识别速度较慢,这可能是由于SIFT算法计算量较大,对于实时处理有一定压力。为提升性能,可考虑...
- **面向对象**:Java是一种纯面向对象的语言,所有数据类型都是对象,包括基本类型对应的包装类。理解类、对象、封装、继承、多态等概念是基础。 - **关键字与语法**:学习if、for、while等控制结构,以及类、...