当前位置: 首页 > news >正文

Android 网络 - NetworkCapabilities(NetworkCapabilities 概述、传输类型、网络能力、实例实操)

一、NetworkCapabilities 概述

  1. NetworkCapabilities 包含有关网络属性的信息,例如传输类型(Wi-Fi、移动网络、蓝牙等)以及网络能力

  2. 可以通过 NetworkCapabilities,确认网络是否能够发送彩信、是否通过强制门户接入、是否按流量计费等


二、NetworkCapabilities 传输类型

public static final int TRANSPORT_BLUETOOTH = 2;
public static final int TRANSPORT_CELLULAR = 0;
public static final int TRANSPORT_ETHERNET = 3;
public static final int TRANSPORT_LOWPAN = 6;
public static final int TRANSPORT_THREAD = 9;public static final int TRANSPORT_USB = 8;
public static final int TRANSPORT_VPN = 4;
public static final int TRANSPORT_WIFI = 1;
public static final int TRANSPORT_WIFI_AWARE = 5;
  1. 主要传输类型
传输类型说明
TRANSPORT_CELLULAR蜂窝移动网络(2G / 3G / 4G / 5G)
TRANSPORT_WIFIWi-Fi 无线网络
TRANSPORT_BLUETOOTH蓝牙网络
TRANSPORT_ETHERNET有线以太网
TRANSPORT_VPNVPN 虚拟专用网络
  1. 特殊用途传输类型
传输类型说明
TRANSPORT_WIFI_AWAREWi-Fi Aware(邻近感知网络)
TRANSPORT_LOWPAN低功耗无线个域网(IoT 设备)
TRANSPORT_USBUSB 网络共享
TRANSPORT_THREADThread 协议(物联网 Mesh 网络)

三、NetworkCapabilities 网络能力

public static final int NET_CAPABILITY_CAPTIVE_PORTAL = 17;
public static final int NET_CAPABILITY_CBS = 5;
public static final int NET_CAPABILITY_DUN = 2;
public static final int NET_CAPABILITY_EIMS = 10;
public static final int NET_CAPABILITY_ENTERPRISE = 29;public static final int NET_CAPABILITY_FOREGROUND = 19;
public static final int NET_CAPABILITY_FOTA = 3;
public static final int NET_CAPABILITY_HEAD_UNIT = 32;
public static final int NET_CAPABILITY_IA = 7;
public static final int NET_CAPABILITY_IMS = 4;public static final int NET_CAPABILITY_INTERNET = 12;
public static final int NET_CAPABILITY_MCX = 23;
public static final int NET_CAPABILITY_MMS = 0;
public static final int NET_CAPABILITY_MMTEL = 33;
public static final int NET_CAPABILITY_NOT_CONGESTED = 20;public static final int NET_CAPABILITY_NOT_METERED = 11;
public static final int NET_CAPABILITY_NOT_RESTRICTED = 13;
public static final int NET_CAPABILITY_NOT_ROAMING = 18;
public static final int NET_CAPABILITY_NOT_SUSPENDED = 21;
public static final int NET_CAPABILITY_NOT_VPN = 15;public static final int NET_CAPABILITY_PRIORITIZE_BANDWIDTH = 35;
public static final int NET_CAPABILITY_PRIORITIZE_LATENCY = 34;
public static final int NET_CAPABILITY_RCS = 8;
public static final int NET_CAPABILITY_SUPL = 1;
public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25;public static final int NET_CAPABILITY_TRUSTED = 14;
public static final int NET_CAPABILITY_VALIDATED = 16;
public static final int NET_CAPABILITY_WIFI_P2P = 6;
public static final int NET_CAPABILITY_XCAP = 9;
  1. 核心网络能力
网络能力说明
NET_CAPABILITY_INTERNET网络配置了互联网访问,但不一定真正连通
NET_CAPABILITY_VALIDATED系统已验证网络可以访问互联网
NET_CAPABILITY_NOT_METERED网络是非计费的,例如,Wi-Fi
NET_CAPABILITY_NOT_RESTRICTED网络没有带宽限制
NET_CAPABILITY_TRUSTED网络是可信的
NET_CAPABILITY_NOT_VPN网络不是 VPN
NET_CAPABILITY_CAPTIVE_PORTAL网络存在强制门户,需要网页认证
  1. 运营商专项服务能力
网络能力说明
NET_CAPABILITY_MMS支持 MMS(彩信)服务
NET_CAPABILITY_SUPL支持 SUPL(GPS 辅助定位)
NET_CAPABILITY_DUN支持拨号上网网络共享(DUN)
NET_CAPABILITY_FOTA支持固件无线升级(FOTA)
NET_CAPABILITY_IMS支持 IP 多媒体子系统(VoLTE 等)
NET_CAPABILITY_CBS支持运营商广播服务(CBS)
NET_CAPABILITY_RCS支持富通信服务(RCS)
NET_CAPABILITY_XCAP支持 XML 配置访问协议
NET_CAPABILITY_EIMS支持企业 IP 多媒体子系统
NET_CAPABILITY_MMTEL支持多媒体电话服务
  1. 网络状态与性能能力
网络能力说明
NET_CAPABILITY_NOT_ROAMING设备不在漫游状态
NET_CAPABILITY_FOREGROUND应用在前台运行,网络优先级较高
NET_CAPABILITY_NOT_CONGESTED网络不拥堵
NET_CAPABILITY_NOT_SUSPENDED网络未被挂起
NET_CAPABILITY_TEMPORARILY_NOT_METERED临时性非计费状态
NET_CAPABILITY_PRIORITIZE_LATENCY优先考虑低延迟
NET_CAPABILITY_PRIORITIZE_BANDWIDTH优先考虑高带宽
  1. 特殊用途能力
网络能力说明
NET_CAPABILITY_WIFI_P2P支持 Wi-Fi 直连(P2P)
NET_CAPABILITY_IA支持初始连接
NET_CAPABILITY_MCX支持任务关键通信
NET_CAPABILITY_ENTERPRISE支持企业网络
NET_CAPABILITY_HEAD_UNIT支持车载主机单元

四、NetworkCapabilities 实例实操

1、获取网络类型
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivityManager == null) {Log.i(TAG, "connectivityManager 为 null");return;
}Network activeNetwork = connectivityManager.getActiveNetwork();if (activeNetwork == null) {Log.i(TAG, "activeNetwork 为 null");return;
}NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork);if (networkCapabilities == null) {Log.i(TAG, "networkCapabilities 为 null");return;
}String networkType = "其他";
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {networkType = "WIFI";
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {networkType = "移动网络";
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {networkType = "以太网";
}Log.i(TAG, "网络类型:" + networkType);
2、监听网络状态变化
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivityManager == null) {Log.i(TAG, "connectivityManager 为 null");return;
}NetworkRequest networkRequest = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build();connectivityManager.registerNetworkCallback(networkRequest, new ConnectivityManager.NetworkCallback() {// 当网络连接成功且可用时调用@Overridepublic void onAvailable(@NonNull Network network) {super.onAvailable(network);Log.i(TAG, "网络已连接");}// 当网络连接丢失时调用@Overridepublic void onLost(@NonNull Network network) {super.onLost(network);Log.i(TAG, "网络已断开");}// 当网络能力发生变化时调用@Overridepublic void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) {super.onCapabilitiesChanged(network, networkCapabilities);String networkType = "其他";if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {networkType = "WIFI";} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {networkType = "移动网络";} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {networkType = "以太网";}Log.i(TAG, "网络类型:" + networkType);if (networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {Log.i(TAG, "系统已验证网络可以访问互联网");} else {Log.i(TAG, "系统未验证网络");}}
});
  1. 启动应用
# 输出结果网络已连接
网络类型:WIFI
系统已验证网络可以访问互联网
  1. 关闭 Wi-Fi
# 输出结果网络已断开
  1. 重新打开 Wi-Fi
# 输出结果网络已连接
网络类型:WIFI
系统未验证网络
网络类型:WIFI
系统已验证网络可以访问互联网
网络类型:WIFI
系统已验证网络可以访问互联网
网络类型:WIFI
系统已验证网络可以访问互联网
网络类型:WIFI
系统已验证网络可以访问互联网
网络类型:WIFI
系统已验证网络可以访问互联网
网络类型:WIFI
系统已验证网络可以访问互联网
http://www.dtcms.com/a/407271.html

相关文章:

  • iOS 26 软件性能测试全流程,启动渲染资源压力对比与优化策略
  • 05-vue3+ts中axios的封装
  • 升阳广州做网站公司手游传奇发布网站999
  • 企业备案网站名称怎么填做网站策划需要什么技能
  • 智能体(Agent)的记忆架构:深入解析短期记忆与长期记忆
  • Tongweb708命令行脚本使用指引(by lqw)
  • python学智能算法(三十九)|使用PyTorch模块的normal()函数绘制正态分布函数图
  • wordpress the_content() 截取盐城网站优化推广服务
  • (6) tauri之前端框架性能对比
  • 网站收录查询临沂seo网站建设费入什么科目
  • 做电商网站电商公司wordpress添加标签后哪里显示
  • 优化排名推广技术网站个人网站怎样申请
  • golang面经——context模块
  • Go基础:Go语言能用到的常用时间处理
  • ppt网站超链接怎么做网站报备流程
  • HTTP安全响应头--CSP(Content-Security-Policy)
  • 建筑网站排行榜网站界面设计专利
  • 如何开始第一个开源项目?
  • Moviechat论文阅读
  • 做电影网站算侵权吗上海建设安检站网站
  • 品牌网站模板wordpress判断是否登录
  • 门户网站建设主要内容为什么建设营销型网站
  • 双语版网站引导页常德尚一网
  • Day70 基本情报技术者 单词表05 数据结构
  • 百色高端网站建设网站建设登记表
  • Redis - Hyperloglog类型
  • 配置 Oracle Linux 8 仓库为 yum 源
  • 移动网站建设优势滁州公司做网站
  • 用网站模板 侵权 做了修改seo优化提升排名
  • Golang语言基础篇008_接口详解