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.pswp.cn/news/215572.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215572.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215572.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JVM從入門到實戰】(一) 字節碼文件

一、什么是JVM JVM 全稱是 Java Virtual Machine&#xff0c;中文譯名 Java虛擬機。 JVM 本質上是一個運行在計算機上的程序&#xff0c;他的職責是運行Java字節碼文件。 二、JVM的功能 解釋和運行 對字節碼文件中的指令&#xff0c;實時的解釋成機器碼&#xff0c;讓計算機…

C++類模板不是一開始就創建的,而是調用時生成

類模板中的成員函數和普通類中成員函數創建時機有區別的&#xff1a; 普通類中的成員函數一開始就可以創建模板類中的成員函數調用的時候才可以創建 總結;類模板中的成員函數并不是一開始就創建的&#xff0c;再調用時才去創建 #include<iostream> using namespace st…

微信小程序:模態框(彈窗)的實現

效果 wxml <!--新增&#xff08;點擊按鈕&#xff09;--> <image classimg src"{{add}}" bindtapadd_mode></image> <!-- 彈窗 --> <view class"modal" wx:if"{{showModal}}"><view class"modal-conten…

Vue中$props、$attrs和$listeners的使用詳解

文章目錄 透傳屬性如何禁止“透傳屬性和事件”多根節點設置透傳訪問“透傳屬性和事件” $props、$attrs和$listeners的使用詳解 透傳屬性 透傳屬性和事件并沒有在子組件中用props和emits聲明透傳屬性和事件最常見的如click和class、id、style當子組件只有一個根元素時&#xf…

jOOQ指南中使用的數據庫

jOOQ指南中使用的數據庫 本指南中使用的數據庫將在本節中進行總結和創建 使用Oracle方言來創建 # 創建語言 CREATE TABLE language (id NUMBER(7) NOT NULL PRIMARY KEY,cd CHAR(2) NOT NULL,description VARCHAR2(50) );# 創建作者 CREATE TABLE author (id NUMBER(7) NOT …

mysql:需要準確存儲的帶小數的數據,要使用DECIMAL類型

需要準確存儲的帶小數的數據&#xff0c;要使用DECIMAL&#xff0c;特別是涉及金錢類的業務。而不要使用FLOAT或者DOUBLE。 因為DECIMAL是準確值&#xff0c;不會損失精度。 而FLOAT或者DOUBLE是近似值&#xff0c;會損失精度。 https://dev.mysql.com/doc/refman/8.2/en/fixe…

差生文具多系列之最好看的編程字體

&#x1f4e2;?聲明&#xff1a; &#x1f344; 大家好&#xff0c;我是風箏 &#x1f30d; 作者主頁&#xff1a;【古時的風箏CSDN主頁】。 ?? 本文目的為個人學習記錄及知識分享。如果有什么不正確、不嚴謹的地方請及時指正&#xff0c;不勝感激。 直達博主&#xff1a;「…

數據結構 | Floyd

參考博文&#xff1a; floyd算法 弗洛伊德算法 多源最短路徑算法_弗洛伊德算法例題-CSDN博客

【文心一言】AI試用寫代碼體會:delphi、php

一、前言&#xff1a; 二、讓【文心一言】編寫一個函數 1. Delphi 語言&#xff08;文心一言的回復&#xff09; 2. php 語言&#xff08;文心一言回復&#xff09; 三、總結 一、前言&#xff1a; 眾所周知&#xff0c;chatGPT是可以自動編寫程序的&#xff0c;甚至可以運…

MyBatis緩存機制流程分析

前言 在進行分析之前&#xff0c;建議快速瀏覽之前寫的理解MyBatis原理、思想&#xff0c;這樣更容易閱讀、理解本篇內容。 驗證一級緩存 MyBatis的緩存有兩級&#xff0c;一級緩存默認開啟&#xff0c;二級緩存需要手動開啟。 重復讀取跑緩存 可以看到&#xff0c;第二次…

OpenAI承認GPT-4變懶,即將發布修復方案提升性能

目錄 1OpenAI承認GPT-4變懶&#xff0c;即將發布修復方案提升性能 2一文秒懂人工智能全球近況 1OpenAI承認GPT-4變懶&#xff0c;即將發布修復方案提升性能 **劃重點:** 1. &#x1f92f; 用戶反饋:GPT-4使用者抱怨OpenAI破壞了體驗&#xff0c;稱模型幾乎“害怕”提供答案。…

Wireshark使用技巧

Wireshark作為網絡數據軟件&#xff0c;功能強大&#xff0c;本專欄介紹僅為冰山一角&#xff0c;僅僅是一個入門級別的介紹&#xff0c;大部分功能還需要在日常工作中進行挖掘。 總結Wireshark軟件的使用技巧如下&#xff1a; 1.合理部署Wireshark的位置&#xff0c;從源頭保障…

基于Java SSM框架實現電影售票系統項目【項目源碼+論文說明】

基于java的SSM框架實現電影售票系統演示 摘要 21世紀的今天&#xff0c;隨著社會的不斷發展與進步&#xff0c;人們對于信息科學化的認識&#xff0c;已由低層次向高層次發展&#xff0c;由原來的感性認識向理性認識提高&#xff0c;管理工作的重要性已逐漸被人們所認識&#…

界面控件DevExpress WPF導航組件,助力升級應用程序用戶體驗!(下)

DevExpress WPF的Side Navigation&#xff08;側邊導航&#xff09;、TreeView、導航面板組件能幫助開發者在WPF項目中添加Windows樣式的資源管理器欄或Outlook NavBar&#xff08;導航欄&#xff09;&#xff0c;DevExpress WPF NavBar和Accordion控件包含了許多開發人員友好的…

rsyslog配置以及原理

rsyslog 日志由程序產生&#xff0c;在內存中產生。通過Rsyslog來將內存中程序產生的日志持久化到硬盤&#xff0c;并且支持udp、tcp等協議來進行不同服務器的日志同步。 /var/log/messages:大多數系統日志信息紀錄在此/var/log/secure&#xff1a;安全和身份認證相關的消息和…

HTTP詳解

1. web 1.1 web相關概念 軟件架構 C /S&#xff1a;客戶端/服務器端 需要安裝客戶端應用 B/S&#xff1a;瀏覽器/服務器端 不需要安裝客戶端應用&#xff0c;對于用戶來說只需要記住域名訪問就可以,高效,客戶端零維護 資源分類 靜態資源&#xff1a;所有用戶訪問后&#x…

數據庫系統原理與實踐 筆記 #12

文章目錄 數據庫系統原理與實踐 筆記 #12事務管理和并發控制與恢復(續)并發控制SQL-92中的并發級別基于鎖的協議基于鎖的協議的隱患鎖的授予封鎖協議兩階段封鎖協議多粒度粒度層次的例子意向鎖類型相容性矩陣多粒度封鎖模式基于時間戳的協議基于時間戳協議的正確性基于有效性檢…

怎樣在PPT中加入音頻文件?記好這4個簡單操作!

“我要制作一個比較專業的PPT來匯報工作成果&#xff0c;想在PPT里加一段音樂&#xff0c;但是不知道應該如何操作&#xff0c;有沒有朋友可以指導一下呢&#xff1f;” PPT作為一種常用的文件形式&#xff0c;很多用戶會將其用于工作匯報&#xff0c;期末總結以及各種演講。在…

HTML---基礎

文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 一.HTML概述 HTML&#xff08;超文本標記語言&#xff09;是一種用于創建網絡頁面的標記語言。它以標記的形式編寫&#xff0c;該標記描述了文檔的結構和內容。HTML文件由一系列標記&#…