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 null
        val networkCapabilities: NetworkCapabilities = cm.getNetworkCapabilities(activeNetwork) ?: return null
        if (!networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) return null
        val linkProperties: LinkProperties = cm.getLinkProperties(cm.activeNetwork) ?: return null
        return 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呢。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UnoCSS 原子化开发初体验

UnoCSS 是一个即时的原子化 CSS 引擎&#xff0c;旨在灵活和可扩展。核心是不拘一格的&#xff0c;所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 classname 类名而烦恼了。 一、UnoCSS 特点 完全可定制&#xff1a;无核心工具&#xff0c;所有功能都通过预设提供…

【Fastadmin】根据Fieldlist键值组件做一个等级配置的完整示例

目录 1.效果展示&#xff1a; ​编辑 2.建表&#xff1a; 3.html页面 4.controller控制器 5.js 6.model 1.效果展示&#xff1a; 2.建表&#xff1a; 表名&#xff1a;fa_xxfb_config /*Navicat Premium Data TransferSource Server : rootSource Server Type …

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式&#xff0c;如下图&#xff1a; 前面一篇已讲解了WPS Office宏编辑器操作方法&#xff0c;这里不细讲了&#xff0c;如有不清楚可以查看该篇&#xff1a;https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

制作蓝牙小车(一)

制作控制蓝牙小车app 想制作一个蓝牙小车&#xff0c;通过手机app程序操控小车运行&#xff0c;制作分2个部分&#xff08;app制作&#xff0c;蓝牙小车硬件以及程序制作&#xff09;&#xff0c;先完成第一个部分app制作&#xff0c;本次app是通过androidstudio软件来制作安卓…

私域爆款案例拆解-元气森林

一、背景调研 二、引流策略 三、私域运营策略

第十一章 React 封装自定义组件

一、专栏介绍 &#x1f30d;&#x1f30d; 欢迎加入本专栏&#xff01;本专栏将引领您快速上手React&#xff0c;让我们一起放弃放弃的念头&#xff0c;开始学习之旅吧&#xff01;我们将从搭建React项目开始&#xff0c;逐步深入讲解最核心的hooks&#xff0c;以及React路由、…

客户案例:EDLP在央国企邮件数据合规中的价值与优势

客户背景 某机械制造企业&#xff0c;作为动力设备领域的领军企业&#xff0c;专门从事动力设备的研发、制造与销售。凭借丰富的经验与卓越的技术实力&#xff0c;该企业致力于深度研究动力设备的核心技术&#xff0c;为客户提供高效且可靠的解决方案。 客户需求 作为企业健康…

4 向微服务架构转变

文章目录 小型单体系统为什么选择小型单体系统微服务与生俱来的问题小型单体系统适用于小团队拥抱重构 规划未来拆分的小型单体应用程序新需求和游戏化用户故事游戏化&#xff1a;积分、徽章和排行榜 转向微服务独立的工作流程水平可伸缩性细粒度的非功能需求其他优势劣势 架构…

【带头学C++】----- 九、类和对象 ---- 9.10 C++设计模式之单例模式设计

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️麻烦您点个关注&#xff0c;不迷路❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目 录 9.10 C设计模式之单例模式设计 举例说明&#xff1a; 9.10 C设计模式之单例模式设计 看过我之前的文章的&#xff0c;简单讲解过C/Q…

微信小程序---页面导航

1.声明式导航 &#xff08;1&#xff09;跳转到tabBar &#xff08;2&#xff09;跳转到非tabBar 注意&#xff0c;这个open-type"navigate"可以省略 &#xff08;3&#xff09;后退式导航 注意&#xff0c;如果只是后退到上一个页面&#xff0c;可以省略delta属性…

C++指针常量与常量指针

指针常量 const int * ptr new int(10); // 1&#xff09;常量指针 指针指向一个常量即指向的值不可改变 指针常量是指这个指针是一个常量&#xff0c;即指针的指向(地址)不可改变&#xff0c;但是地址对应的值是可以改变的。 常量指针 int * const ptr2 new int(20); // …

遥感图像之多模态检索AMFMN(支持关键词、句子对图像的检索)论文阅读、环境搭建、模型测试、模型训练

一、论文阅读 1、摘要背景 遥感跨模态文本图像检索以其灵活的输入和高效的查询等优点受到了广泛的关注。然而&#xff0c;传统的方法忽略了遥感图像多尺度和目标冗余的特点&#xff0c;导致检索精度下降。为了解决遥感多模态检索任务中的多尺度稀缺性和目标冗余问题&#xff…

机器学习硬件十年:性能变迁与趋势

本文分析了机器学习硬件性能的最新趋势&#xff0c;重点关注不同GPU和加速器的计算性能、内存、互连带宽、性价比和能效等指标。这篇分析旨在提供关于ML硬件能力及其瓶颈的全面视图。本文作者来自调研机构Epoch&#xff0c;致力于研究AI发展轨迹与治理的关键问题和趋势。 &…

RocketMQ源码

RocketMQ的核心三流程 启动流程 RocketMQ服务端由两部分组成NameServer和Broker&#xff0c;NameServer是服务的注册中心&#xff0c;Broker会把自己的地址注册到NameServer&#xff0c;生产者和消费者启动的时候会先从NameServer获取Broker的地址&#xff0c;再去从Broker发…

山东烟台一汽配城发生火灾 探索富维AI神器如何及时报警

近日&#xff0c;山东烟台一汽配城发生火灾&#xff0c;引起了广泛关注。火灾虽然被及时控制&#xff0c;但这一事件再次提醒我们&#xff0c;火灾预防的重要性不容忽视。在这一背景下&#xff0c;北京富维图像公司的FIS智能图像识别系统为我们提供了新的防范措施。 这一系统利…

使用人工智能优化常见业务流程

在现代商业环境中&#xff0c;人工智能(AI)正在改变企业的运营方式。将人工智能集成到业务流程中可以提高效率和准确性&#xff0c;从而节省大量时间和成本。 这使员工能够专注于更具战略性的任务。人工智能在商业中的应用范围从自动化日常任务到提供高级分析&#xff0c;以做…

Vue H5项目,怎么引入uni.webview sdk,调用uni postMessage实现手机蓝牙连接打印功能(uniapp)

前言 目前公司Vue H5项目&#xff0c;用webview打包成APP&#xff0c;现产品提出这样打包出来的app运行较慢&#xff0c;需要用uniapp方式&#xff08;即使用HBuilder编辑器来打包H5&#xff09;来打包&#xff0c;那需要的基座就不是安卓的基座而是uniapp的基座&#xff0c;而…

Appium 自动化测试从入门到精通,零基础也能听懂

1.Appium介绍 1&#xff0c;appium是开源的移动端自动化测试框架&#xff1b; 2&#xff0c;appium可以测试原生的、混合的、以及移动端的web项目&#xff1b; 3&#xff0c;appium可以测试ios&#xff0c;android应用&#xff08;当然了&#xff0c;还有firefoxos&#xff09…

记一次mybatis-plus的argument type mismatch报错

起初以为是boolean和数据库的tinyint不匹配导致&#xff0c;找了一天之后想起来把整个lambda注释掉发现list直接无法运行&#xff0c;说明问题不在boolean List<BmsBillboard> list bmsBillboardService.list(new LambdaQueryWrapper<BmsBillboard>().eq(BmsBillb…

盘点六款颇具潜力的伪原创AI工具

写作作为信息传递的主要媒介&#xff0c;在庞大的信息海洋中&#xff0c;为了在激烈的竞争中脱颖而出&#xff0c;伪原创AI工具成为越来越多写手的神秘利器。在本文中&#xff0c;我们将深入盘点六款颇具潜力的伪原创AI工具&#xff0c;为你揭开它们神秘的面纱。 1. 文心一言 …