Android 换种方式监听网络变化_android 监听 网卡 linkup-程序员宅基地

技术标签: 转载  java  网络  android  

转载 https://www.jianshu.com/p/66afbd05c9b9

以前监听网络变化都是使用的广播,现在换一种方式 ConnectivityManager.NetworkCallback

可以监听到 蜂窝网络,wifi,USB外接网卡网络变化,没有过多测试,我主要测试的 USB 网卡网络变化,应该各种网络变化都可以监听到。

1、写一个监听类

package com.tky.phm.net;

import android.net.ConnectivityManager;

import android.net.Network;

import android.net.NetworkCapabilities;

import android.os.Build;

import android.support.annotation.RequiresApi;

import android.util.Log;

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

public class NetworkCallbackImplextends ConnectivityManager.NetworkCallback {

private StringTAG ="NetworkCallbackImpl";

    @Override

    public void onAvailable(Network network) {

super.onAvailable(network);

        Log.d(TAG, "onAvailable: 网络已连接");

    }

@Override

    public void onLost(Network network) {

super.onLost(network);

        Log.e(TAG, "onLost: 网络已断开");

    }

@Override

    public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {

super.onCapabilitiesChanged(network, networkCapabilities);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

if (networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {

if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {

Log.d(TAG, "onCapabilitiesChanged: 网络类型为wifi");

                }else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {

Log.d(TAG, "onCapabilitiesChanged: 蜂窝网络");

                }else {

Log.d(TAG, "onCapabilitiesChanged: 其他网络");

                }

}

}

}

}

2、注册监听类

try {

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {

NetworkCallbackImpl networkCallback =new NetworkCallbackImpl();

        NetworkRequest.Builder builder =null;

        builder =new NetworkRequest.Builder();

        NetworkRequest request = builder.build();

        ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        if (connMgr !=null) {

connMgr.registerNetworkCallback(request, networkCallback);

        }

}

}catch (Exception e) {

e.printStackTrace();

}

3、添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

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

4、结束

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LHBTM/article/details/120902396

智能推荐

待编辑:SAS入门——多元统计(聚类分析)初学者笔记(四)欢迎指正_sas 医学场景 聚类分析-程序员宅基地

文章浏览阅读629次,点赞7次,收藏17次。8.method=算法--包括 ward(离差平方和法 )average(类平均法),centroid(重心法)complete(最长距离法),single(最短距离法)median(中间距离法),density(密度法)flexible(可变类平均法),twostage(两阶段密度法),eml(最大似然法),mcquitty(相似分析法)2)根据所确定的样品(或变量)“距离”公式,把距离较近的两个样品(或变量)聚合为一类,其它的样品(或变量)仍各自聚为一类,共聚成 n-1类;_sas 医学场景 聚类分析

R语言中定义函数、调用函数及常用编程技巧_r语言定义函数-程序员宅基地

文章浏览阅读1.2k次,点赞12次,收藏20次。介绍定义函数调用函数常用编程循环结构apply 函数族apply()lapply()sapply()vapply()mapply()R语言是一种功能强大的统计分析编程语言,广泛应用于数据挖掘、机器学习、统计建模等领域。掌握R语言的编程技巧,可以让我们在处理数据分析任务时更加得心应手。本文将从基础的函数定义和调用开始,逐步介绍R语言中的条件语句、循环结构等常用编程技巧。在R语言中,函数是用来执行特定任务的代码块。通过定义函数,我们可以将复杂的代码重复使用,提高代码的可读性和可维护性。_r语言定义函数

5 打印选课学生名单 (25分) HBU-DS 实验_7-95 打印学生选课清单 分数 25 作者 ds课程组 单位 浙江大学 假设全校有最多4000-程序员宅基地

文章浏览阅读505次。5 打印选课学生名单 (25分)假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。输出格式:顺序输出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号和选课学生总数(_7-95 打印学生选课清单 分数 25 作者 ds课程组 单位 浙江大学 假设全校有最多4000

复制输入的字符串,将多个空格变成一个空格_编程实现:任意输一个字符串,把词语之间的空格全部调整为一个空格。-程序员宅基地

这段代码的功能是复制输入的字符串,并将多个连续的空格替换为一个空格。代码使用了一个while循环,不断将输入的字符赋给变量c,直到遇到结束符EOF。如果字符c是空格,则打印一个空格,从而将多个连续的空格替换为一个空格。最后,打印输入的字符串。

基于HLW8112的直流测量原理及校准方法-程序员宅基地

文章浏览阅读4.2k次,点赞6次,收藏18次。芯片介绍HLW8112是一款高精度的电能计量IC,它采用CMOS制造工艺,该器件内部集成了三个∑-Δ型ADC和一个高精度的电能计量内核。HLW8112用于单相应用,也可以测量直流信号。HLW8112可以通过多种通讯接口访问片内寄存器,包括SPI和UART。HLW8112电能计量IC采用3.3V或5.0V电源供电,内置振荡器,采用16脚SSOP封装。直流典型应用下图是HLW8112直流应用的典型电路,直流测量和交流测量的采样方法的原理是相同的,因为交流测量一般是220V电源,而直流测量以12V和2_hlw8112

使用iOS上的Google Chrome浏览器在ASP.NET网站上进行FormsAuthentication-程序员宅基地

文章浏览阅读214次。A few people have said that they have noticed problems the new iPhone/iPad Google Chrome apps as well as trouble with applications that use hosted Safari inside of UIWebView (which is what Chrome is) ..._ios

随便推点

jsp SmartUpload上传和下载代码全攻略_jspsmartupload源码-程序员宅基地

文章浏览阅读619次。一、安装篇   jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点: 1、使用简单。在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。 2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全_jspsmartupload源码

nvue和vue通信的问题_vue跟nvue通信,没法监听到为什么-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏5次。一.过期的版本1.消息发送页 index.nvue:export default { methods:{ postMessage(num){ console.log("准备发送"+num) uni.postMessage('page-send', { data: num, from: "index" }) } }}2.在App.vue里使用onUniNViewMessage进行监听export default { onUniNVi..._vue跟nvue通信,没法监听到为什么

还一场精彩绝伦的时装秀,为努力奋斗的这些年-程序员宅基地

文章浏览阅读68次。成为一名合格的服装设计师,其实是一个稍显漫长的过程,这其中你需要经过不断地学习-实践-打磨-再学习。还记得莱佛士服装设计专业的学生Tiffany吗?Tiffany Dhara ANGGIONO,从中国古代传统工艺中获取灵感设计的“Distant Memory”系列,一举夺得“2019 Frankfurt Style Award”一等奖。并赢得巴黎时装周往返机票,在YSL的助理设计师的陪同下参观圣罗兰博物馆。同年年底,Tiffany设计的小黑裙在服饰品牌Metro的线下实体门店上.

大象机器人人工智能套装aikit 2023 3D与机械臂结合!-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏22次。这个套装以用户友好的方式,提供了一个理想的平台,让初学者可以在实践中探索和学习机械臂操作和机器视觉的知识,更重要的是,它提供了一个独特的机会,让用户能够深入理解和掌握3D相机算法。从中间的是被区域可以看到,3D版本已经没有了二维码的标识,在2D版本上二维码的标识的主要功能是确定识别的区域,以及提供一个固定高度的值。因为投影仪和摄像头的位置是固定的,所以通过计算光点在摄像头中的位置偏移,可以推算出每个光点对应的物体距离摄像头的距离,从而得到场景的深度信息。在未来的,3D摄像头的趋势必然是飞速增长的!

Java Web开发构想_java需求开发思想-程序员宅基地

文章浏览阅读399次。1.背景、形势 能够进行Web开发的编程语言和技术很多 (1) 动态解释语言 PHP; Perl; Python (Zope, Plone); Ruby (Ruby on Rails); (2) 编译语言 Java; .net Java Web开发远非一枝独秀: 除了受到来自.net 这个重量级对手的最大挑战之外,更受到Zope, Ruby on Rail 等_java需求开发思想

寻找zcmu(upper_bound算法)-程序员宅基地

文章浏览阅读499次。2013: 寻找zcmuTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 466 Solved: 75[Submit][Status][Web Board]DescriptionInput 多组数据 每组数据包含一个字符串 1 Output 输出一个整数表示最少需要删除的字符数,_寻找zcmu

推荐文章

热门文章

相关标签