Java获取设备信息

  1. 因为要做登入日志的记录,需要记录用户的设备信息、比如ip、操作系统

           需要使用工具使用jar包 

<!-- UA解析工具 -->
<dependency>
   <groupId>eu.bitwalker</groupId>
   <artifactId>UserAgentUtils</artifactId>
   <version>1.21</version>
</dependency>
<!-- UA解析工具 -->

 通过浏览器带的hand来获取(User-Agent)获取操作系统

/**
     * 获取操作系统名称
     *
     * @return
     */
    public String getOpenSystem(HttpServletRequest request) {
        String userAgent = request.getHeader("User-Agent");
        String openSystem=getDevice(userAgent);
        return openSystem;
    }


/**
     * 解析 用户代理(User-Agent)
     * @param userAgent 用户代理User-Agent ,UA
     * @return "操作系统:%s
     * @author ghl
     */
    private static String getDevice(String userAgent) {
        //解析agent字符串
        UserAgent ua = UserAgent.parseUserAgentString(userAgent);
        //获取操作系统对象
        OperatingSystem os = ua.getOperatingSystem();
        return String.format("%s",os.getName());
    }

获取ip地址

/**
     * 获取ip地址
     *
     * @param request
     * @return
     */
    private String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

通过ip地址获取登入的地址

  private String getAddress(String jsonAddr) {
        JSONObject jsonObject = JSON.parseObject(jsonAddr);
        JSONObject date = jsonObject.getJSONObject("data");
        String region = date.getString("region");
        if ("XX".equals(region)) {
            return date.getString("city");
        }
        return region;
    }

/**
     * 获取到json得地址数据
     *
     * @param ip
     * @return
     */
    private String getJsonAddress(String ip) {
        StringBuffer result = null;
        try {
            // String strIP = "36.27.47.234";
            URL url = new URL("http://ip.taobao.com/outGetIpInfo?ip=" + ip + "&accessKey=alibaba-inc");
            URLConnection conn = url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            String line = null;
            result = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
            reader.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            return "读取失败";
        }
        return result.toString();
    }

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Java 的 `java.awt.Toolkit` 类的 `getScreenSize` 方法来获取用户设备的屏幕大小。 例如: ``` import java.awt.Dimension; import java.awt.Toolkit; public class Main { public static void main(String[] args) { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); double screenWidth = screenSize.getWidth(); double screenHeight = screenSize.getHeight(); System.out.println("Screen width: " + screenWidth + " pixels"); System.out.println("Screen height: " + screenHeight + " pixels"); } } ``` 你也可以使用 Java 的 `java.lang.System` 类的 `getProperty` 方法来获取关于操作系统、用户名、用户的当前工作目录等信息。例如,要获取用户名,可以使用如下代码: ``` String userName = System.getProperty("user.name"); ``` 要获取操作系统名称和版本号,可以使用如下代码: ``` String osName = System.getProperty("os.name"); String osVersion = System.getProperty("os.version"); ``` ### 回答2: 要使用Java获取用户设备信息,可以采取以下步骤: 1. 使用Java的网络编程库,例如Java.net包来获取用户的IP地址。通过获取用户的IP地址,可以大致定位用户的地理位置。 2. 通过Java的系统属性System.getProperty()方法来获取用户的操作系统信息。例如,可以使用System.getProperty("os.name")方法获取用户的操作系统名称,使用System.getProperty("os.version")方法获取操作系统版本。 3. 使用Java的System类的getenv()方法获取用户的环境变量信息。例如,通过getenv("USERPROFILE")方法可以获取用户的主目录路径,通过getenv("PROCESSOR_IDENTIFIER")方法可以获取用户的处理器标识符。 4. 使用Java的AWT(Abstract Window Toolkit)或JavaFX库来获取用户的显示器信息。通过获取显示器的分辨率、屏幕大小等信息,可以了解用户的显示器配置。 5. 借助Java的用户代理解析库,例如User-Agent-Utils或ua-parser-java,来解析用户的浏览器信息。通过获取浏览器的名称、版本号、操作系统信息等,可以了解用户所使用的浏览器和操作系统。 需要注意的是,以上步骤只能获取到用户设备的一部分信息,且获取结果可能因操作系统、硬件设备等因素而有所差异。此外,为了获取更详细的设备信息,可能需要结合其他技术手段,例如使用JavaScript来获取浏览器相关信息。 ### 回答3: 要获取用户设备信息,可以使用Java编程语言中的一些库和API来实现。下面以Android设备为例介绍如何使用Java获取用户设备信息。 1. 获取设备的型号和制造商信息: ``` String model = Build.MODEL; // 获取设备型号 String manufacturer = Build.MANUFACTURER; // 获取设备制造商 ``` 2. 获取设备的操作系统版本: ``` String osVersion = System.getProperty("os.version"); ``` 3. 获取设备的唯一标识符(IMEI): 需要在AndroidManifest.xml文件中添加权限: ``` <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 然后可以通过以下代码获取IMEI: ``` TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId(); ``` 4. 获取设备的屏幕分辨率: ``` DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int width = displayMetrics.widthPixels; int height = displayMetrics.heightPixels; ``` 5. 获取设备的网络连接状态: 需要在AndroidManifest.xml文件中添加权限: ``` <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` 然后可以通过以下代码获取网络连接状态: ``` ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 获取网络类型 int networkType = networkInfo.getType(); } ``` 除了上述方法以外,还可以使用其他类和函数来获取更多设备信息,例如获取设备的语言设置、获取设备的电池状态等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值