`

java识别当前设备类型

 
阅读更多
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;
	}
	

 

分享到:
评论

相关推荐

    基于java speech api规范的语音识别引擎的实现

    例如,在识别过程中,当检测到新的语音输入时,可以通过触发相应的事件来更新当前状态,进一步处理语音数据。这种基于事件的状态转移机制确保了识别过程的流畅性和响应性。 ##### 3.3 状态转移系统详解 根据JSAPI...

    扫描二维码下载 JAVA实现20190403

    本文将深入探讨如何使用JAVA实现扫描二维码自动下载对应客户端类型的APP功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,存储的数据可以是网址、文字、图片、联系人...

    基于Java Speech API规范的语音识别引擎的实现

    ### 基于Java Speech API规范的语音识别引擎的实现 #### 一、Java Speech API (JSAPI) 概览 Java Speech API (JSAPI) 是由Sun Microsystems和其他几家知名的语音技术公司联合开发的一套标准化的接口规范。这套规范...

    判断当前设备是Pad还是手机.txt

    - **配置文件**:某些 Android 版本的配置文件中可能会包含关于设备类型的描述,如 `config.isSmallScreen` 和 `config.isLargeScreen`。 - **设备型号**:通过 `Build.MODEL` 获取设备型号,并根据型号列表判断是否...

    java生成UUID通用唯一识别码.docx

    例如,`UUID.randomUUID()`方法可以生成一个基于时间的UUID,这是最常见的类型,它结合了当前时间戳、随机数和机器标识,确保生成的ID在全球范围内是唯一的。 以下是一个简单的Java程序示例,展示了如何生成和使用...

    麻将识别源代码Demo实例

    在当前的IT行业中,人工智能(AI)的应用已经深入到各个领域,其中之一便是图像识别技术。本文将探讨一个基于人工智能的麻将识别源代码Demo实例,它不仅能够识别麻将,还可以进行定制化物体识别,展示了AI技术在游戏...

    郝斌Java笔记.pdf

    - **Path 变量**:设置 Path 变量可以让系统在任何目录下都识别并执行 Java 程序。具体步骤包括设置 JAVA_HOME 环境变量指向 JDK 安装目录,然后将 JDK 的 bin 目录添加到 Path 变量中。 - **Classpath 变量**:用于...

    android判断网络状态、网络运营商、网络类型

    接下来,**识别网络类型**有助于我们理解用户当前连接的是哪种网络,比如2G、3G、4G或Wi-Fi。依旧使用TelephonyManager类,可以获取到如下信息: ```java int networkType = telephonyManager.getNetworkType(); ...

    Java servlet判断是否是移动设备

    首先,我们可以通过分析HTTP请求头中的`User-Agent`字段来识别设备类型。`User-Agent`包含了浏览器发送请求时的设备信息,包括浏览器类型、版本以及操作系统等。例如,移动设备的`User-Agent`通常会包含"Mobile"、...

    java获取网络类型的方法

    在Java编程中,获取设备当前连接的网络类型是常见的需求,特别是在开发依赖网络功能的应用时。这篇内容主要讲解了如何利用Android SDK中的`ConnectivityManager`和`TelephonyManager`类来判断网络连接的类型。以下是...

    智能垃圾分类系统案例介绍:结合Java和图像识别技术,设计智能垃圾分类系统,实现自动识别和分类垃圾

    为了确保图像识别的准确性,系统会利用Java中的图像处理库(例如Java Advanced Imaging API)来进行预处理工作,这包括但不限于图像裁剪、缩放、灰度化、二值化等操作。这些预处理步骤可以有效提高后续图像识别的...

    基于android的饮食识别系统

    然而,当前系统面临的主要挑战是识别速度较慢,这可能是由于SIFT算法计算量大,以及Java-JNA-C的跨语言调用带来的性能损耗。未来可以通过优化算法、提升硬件性能、使用并行计算技术等方式来提高识别效率。 五、未来...

    java基础知识总结(超级经典)

    JAVASE(Java Platform Standard Edition)用于桌面应用开发,是其他两者的基础,而JAVAME(Java Platform Micro Edition)则针对电子消费产品和嵌入式设备,如手机应用。 Java开发涉及的主要工具有JDK(Java ...

    基于Java的飞机大战游戏开发.pdf

    此外,文档还提到了与Java相关的其他技术,例如Java Web、Java Android和Java iOS,这些技术让Java的应用可以扩展到移动平台,使得开发者可以在不同的设备上使用Java技术进行应用开发。文档中还出现了一些与网络协议...

    java学习笔记

    - `export PATH=/opt/jdk/bin:$PATH`:更新PATH环境变量,以便系统能够识别`javac`和`java`命令。 #### 第二章:Java基本类型变量 ##### 变量定义 - **变量**:用来存储数据的容器。 - **声明与初始化**: - ...

    毕向东java基础总结_超详细版.doc

    - **javac命令**:Java的编译器,用于将源代码(.java文件)编译成Java虚拟机可识别的字节码(.class文件)。 - **java命令**:启动Java虚拟机,加载运行时所需类库,并执行.class文件。程序执行始于main函数。 **...

    java判断是内网ip还是公网ip

    1. **获取IP地址**:首先,我们需要获取当前设备的IP地址。这可以通过多种方式实现,例如使用`InetAddress`类的静态方法`getLocalHost()`,或者通过HTTP请求获取远程服务器返回的IP。 ```java InetAddress ...

    基于android的饮食识别系统.rar

    5. 结果展示:显示识别出的食物类型,并提供可能的营养价值和饮食建议。 四、挑战与优化 当前系统存在的主要问题是识别速度较慢,这可能是由于SIFT算法计算量较大,对于实时处理有一定压力。为提升性能,可考虑...

    java程序设计 实验指导一

    - **面向对象**:Java是一种纯面向对象的语言,所有数据类型都是对象,包括基本类型对应的包装类。理解类、对象、封装、继承、多态等概念是基础。 - **关键字与语法**:学习if、for、while等控制结构,以及类、...

Global site tag (gtag.js) - Google Analytics