Android获取Wifi网关

公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后我们用手机连接上这个热点,这样手机和球机就有了连接,我们想通过手机来修改球机的设置,这需要在球机上运行一个Web服务器,以便提供一些API接口来让手机访问,访问不同的API修改不同的设置。现在的问题是,手机连接热点之后,我们要访问球机时需要知道球的ip地址是多少,而且球机分享的热点的本机ip地址每次都不一样,如何通过代码在手机上获取到球机的ip地址,以便进行http通信。解决方案如下:

  1. 添加权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  2. 代码

    fun getWifiRouteIpAddress(): String? {val cm = (getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager)val activeNetwork: Network = cm.activeNetwork ?: return nullval networkCapabilities: NetworkCapabilities = cm.getNetworkCapabilities(activeNetwork) ?: return nullif (!networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) return nullval linkProperties: LinkProperties = cm.getLinkProperties(cm.activeNetwork) ?: return nullreturn linkProperties.routes.first { it.isDefaultRoute }?.gateway?.hostAddress
    }
    

如上代码可以获取到连接的wifi的路由ip地址,它和wifi的网关是一样的,通过该ip地址,手机就能访问到球机。我们公司的wifi是192.168.1.xxx网段的,如果连接上公司的wifi,拿到的网关地址为:192.168.1.1

另外:linkProperties.dhcpServerAddress也可以获取到球机的dhcp服务器地址,它也是和网关一样的,但是这个函数是Android 11才出的api,在低版本不可用。linkProperties.dnsServers拿到的是dns服务器的地址,和网关也是一样的,这个函数在Android 5.0的时候就出了。不知道是否所有的Android设备分享的热点都会把 dhcp服务器地址 和 dns服务器地址都设置成和网关一样,大家如果要用这两个函数的话可以多找几台设备分享热点,然后连接这些热点看获取的 dhcp 和 dns 地址是否都和网关一样。在Windows系统上,通过查看网络状态可以看到这些信息,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我们可能通过路由、dhcp、dns来获取网关地址,奇怪的是Android官网为什么不提供一个直接获取网关的api呢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267595.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flex布局一行n个

上图 缩小后 主要用了 flex-basis flex-grow flex-shrink flex的三个属性 有兴趣的可以看看 深入理解CSS之flex精要之 flex-basis flex-grow flex-shrink 实战讲解 .bg{background-color: aquamarine;width: 100%;height: 100%;display: flex;flex-wrap: wrap;}.box1{backgr…

亚马逊鲲鹏系统全自动模拟真人下单更真实

在亚马逊鲲鹏系统下&#xff0c;我们可以通过模拟真人购物习惯来进行自动下单流程&#xff0c;通过设置关键词、多个ASIN进行货比三家&#xff0c;然后执行一系列点击、浏览、滑动滚动条、查看详情、下单购买等操作&#xff0c;以完成整个下单过程。以下介绍这一自动化下单流程…

贪心算法:理论基础 分发饼干 摆动序列 最大子序和

理论基础 什么是贪心算法&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。什么时候用贪心算法&#xff1f; 贪心算法并没有固定的套路。唯一的难点就是如何通过局部最优&#xff0c;推出整体最优。如何验证可不可以用贪心算法&#xff1f; 最…

EasyV易知微数字孪生助力解决实际行业问题与痛点

数字孪生技术在当前多个领域得到了广泛的应用&#xff0c;特别是在航空航天、工业、城市和医学等领域&#xff0c;它被视为许多科技企业所关注的焦点。这种技术已经成为实现智能化的重要手段&#xff0c;它可以应用于项目设计、建造和运营等各个阶段&#xff0c;能够解决实际问…

vue-如何实现带参数跳转页面

文/朱季谦 在vue框架的前端页面上&#xff0c;若要实现页面之间的带参数跳转&#xff0c;可参考以下实现过程&#xff1a; 例如&#xff0c;点击截图中的“查看试卷”&#xff0c;可实现带参跳转到相应的试卷页面&#xff0c;该功能类似查看试卷的详情页面&#xff1a; 假如以…

C++类与对象(一)

目录 一&#xff0c;面向过程和面向对象初步认识 二&#xff0c;类的引入 三&#xff0c;类的定义 四&#xff0c;类的访问限定符及封装 五&#xff0c;类的实例化 六&#xff0c;类对象模型 七&#xff0c;this指针 一&#xff0c;面向过程和面向对象初步认识 c语言是面…

高通SDX12:nand flash适配

一、SBL阶段 代码流程如下: boot_images\core\storage\flash\src\dal\flash_nand_init.c nand_probe ->nand_intialize_primary_hal_device ->>nand_get_device_list_supportedboot_images\core\storage\flash\src\dal\flash_nand_config.c ->>>flash_n…

饮料行业供应链主数据解决方案

引用GB/T10789-2015《饮料通则》中定义&#xff0c;饮料共11大类。饮料企业中&#xff0c;有的会包含所有的分类&#xff0c;有的会涉及其中的一类或几个分类。 但&#xff0c;不同的饮料企业在运营管理方式和经营的重点&#xff0c;延伸到企业主数据管理的重点和策略都是有所不…

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解前言MobleNet_V3讲解SE模块(Squeeze Excitation)重新设计激活函数反向残差结构(Inverted Residua…

屏幕分辨率修改工具SwitchResX mac功能特点

SwitchResX mac是可用于修改和管理显示器的分辨率和刷新率。 SwitchResX mac功能和特点 支持多种分辨率和刷新率&#xff1a;SwitchResX可以添加和管理多种分辨率和刷新率&#xff0c;包括自定义分辨率和刷新率。 自动切换分辨率&#xff1a;SwitchResX可以根据应用程序和窗口…

使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面xsync

目录 1&#xff0c;功能2&#xff0c;注意点3&#xff0c;shell脚本介绍4&#xff0c;bash内容 1&#xff0c;功能 使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面。 2&#xff0c;注意点 需要修改的地方&#xff1a;hadoop250 hadoop251 hadoop252 hadoop253 hado…

QT 入门

目录 QT 概述 QT5安装 QT环境介绍 编写第一个QT的程序 QT项目文件介绍 QT 概述 QT简介 QT是一个跨平台的C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 QT的发…