Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >wifi广播接收机多意图

wifi广播接收机多意图
EN

Stack Overflow用户
提问于 2016-11-01 05:04:22
回答 1查看 326关注 0票数 2

我已经用Wifi广播接收器开发了一个应用程序。我的要求是在Wifi通过获取IP地址连接到路由器时获得功能调用,以及当Wifi与先前连接的路由器断开连接时调用另一个函数。

--我在Manifest中使用了这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<action android:name="android.net.wifi.STATE_CHANGE" />

用于注册广播接收器。

OnReceive中的广播接收类中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = networkInfo.getState(); 

if (state == NetworkInfo.State.CONNECTED) {

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wi = wifiManager.getConnectionInfo();

    Log.e("++++WiFi Conected","++++WiFi Conected");

    Flags.wifiState = true;
    updateWifiSyncTrue(context);

    if (wi.getIpAddress() != 0) {
        intent = new Intent(context, ConnectionService.class);
        intent.putExtra("intentValue", "signalOn");
        intent.putExtra("bssId", wi.getBSSID());
        context.startService(intent);
    }
}

if (state == NetworkInfo.State.DISCONNECTED) {
    Log.e("++++WiFi DisConected","++++WiFi DisConnected");
    Flags.wifiState = false;
    updateWifiSyncFalse(context);
    updateRouterSyncFalse(context);

    intent = new Intent(context, ConnectionService.class);
    intent.putExtra("intentValue", "signalOff");
    context.startService(intent);
}

每样东西都能工作到KitKat为止,但是当我用棒棒糖版本进行测试时,收到了很多次请求。

当我把我的WiFi打开其结果的为状态时:空闲--连接有时也会断线。

同时关闭。连接--断开--断开

NetworkInfo 的调试结果如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/OBTAINING_IPADDR, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]

[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ     Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false].

我也恳请你帮助我。使用我的代码打开wifi时,CONNECTED状态会执行多次,DISCONNECTED状态也会执行多次。

当WIFI被关闭时,连接状态被生成,然后4-5断开状态。

我用HTC手机做测试。

我使用了简单的编码,是否需要对此进行更深入的条件检查?(详细情况等)

处理此解决方案的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-29 02:04:51

当您使用意图过滤器android.net.wifi.STATE_CHANGE时,它将多次触发广播接收器.例如,如果您正在打开wifi,那么广播的onreceive将在任何地方调用1-5次多次。因此,它将为您提供多个NetworkInfo.State.CONNECTED,与断开连接相同。

因此,如果您只想有一个连接或断开,它的输出意味着只需使用一个布尔标志,并正确设置它的方式,首先,如果启用wifi,意味着它应该忽略剩余的wifi连接意图和类似的wifi断开也。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40360665

复制
相关文章
Sketch 矢量图形设计
Sketch是一款Mac操作系统上的矢量绘图软件,主要用于设计师进行UI界面、网页设计等领域的工作。Sketch提供了丰富的绘图工具和功能,可以轻松创建各种复杂的图形、图标和模式。
对影三人
2023/04/20
8180
Sketch 矢量图形设计
[译] 在 Android 应用中使用矢量资源
在之前的文章中,我们研究了 Android 的 VectorDrawable 图像格式以及它能够实现的功能:
Android 开发者
2019/05/14
1.5K0
R中实现生命游戏简单图形
注意,代码中判断下个状态是否有细胞存在这句改了一下,之前理解的有点问题,另外规则也不完全对。判断规则参考https://conwaylife.com/wiki/Main_Page
Listenlii-生物信息知识分享
2022/03/31
7550
R中实现生命游戏简单图形
在 iPhone 上使用 Popover Segue
iOS 系统提供了4种基本的转场方式:Show、Show Detail、Present Modally、Present as Popover。我们平常用的最多的是 Show ,就是从右向左滑入新页面,这也是最符合用户习惯的转场方式。
Sheepy
2018/09/10
1K0
在 iPhone 上使用 Popover Segue
SVG可伸缩的矢量图形
SVG是对画该图形时的一些路径,做出精准的,必要的与分辨率无关的一种描述。即对矢量图的描述
mySoul
2018/10/11
1.1K0
Android开发笔记(一百三十二)矢量图形与矢量动画
与水波图形RippleDrawable一样,矢量图形VectorDrawable也是Android5.0之后新增的图形类。矢量图不同于一般的图形,它是由一系列几何曲线构成的图像,这些曲线以数学上定义的坐标点连接而成。具体到实现上,则需开发者提供一个xml格式的矢量图形定义,然后系统根据矢量定义自动计算该图形的绘制区域。因为绘图结果是动态计算得到,所以不管缩放到多少比例,矢量图形都会一样的清晰,不像位图那样拉大后会变模糊。 矢量图形的xml定义有点复杂,其结构可分为三个层次:根标签、组标签、路径标签。
aqi00
2019/01/18
2K0
Illustrator 2022 for mac (矢量图形设计)
Illustrator 2022 for Mac是由Adobe公司开发的一款矢量图形设计软件。它主要用于创建和编辑各种矢量图形元素,例如标志、图标、插图、图表、海报等等。与位图不同,矢量图形使用数学方程式来定义形状,因此可以在放大或缩小时保持高质量并避免像素化。
用户10520003
2023/04/25
3680
如何用Scratch 3绘制矢量图形 【Gaming】
Scratch是一种流行的用于创建视频游戏和动画的可视化编程语言。它还具有矢量绘图工具,任何人都可以使用它来创建独特的游戏和艺术。
五月Rambo
2019/11/10
5.6K0
如何用Scratch 3绘制矢量图形 【Gaming】
iPhone使用教程_iphone基础使用
大家好,又见面了,我是你们的朋友全栈君。 iPhone史上最全的使用教程 iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别 这几天看见好多新人问这几个词的含义及区别。我在这儿说说我的看法,不是官方解释,不懂的学习一下,懂的绕道,如有错误,敬请指正! 第一次买来时或恢复官方固件后,iPhone会处于那种只能拨打紧急电话状态,不能使用其它功能,如果要使用其它功能,就必须进行一项操作,那就是“激活”。一般有锁版的只有使用对应运营商的卡(如美国的AT&T卡)或者无锁版使用任何卡,才可以激活。激活之
全栈程序员站长
2022/09/29
13.9K0
碉堡了,游戏中!我们可以使用SVG矢量绘图啦!
Cocos-iPhone Cocos2d-x Cocos2d-html5 Cocos2d-js Cocos Creator
张晓衡
2020/11/25
2.6K0
碉堡了,游戏中!我们可以使用SVG矢量绘图啦!
SVG可伸缩的矢量图形「建议收藏」
SVG可伸缩的矢量图形 SVG是对画该图形时的一些路径,做出精准的,必要的与分辨率无关的一种描述。即对矢量图的描述 在此安利一个svg绘图的网址,可以直接手动绘图,然后生成相关的svg描述,即可实现图片
全栈程序员站长
2022/08/04
5120
SVG可伸缩的矢量图形「建议收藏」
HT全矢量化的图形组件设计
HT for Web
2018/01/03
1.5K0
HT全矢量化的图形组件设计
在微信小游戏中使用three.js显示3D图形
笔者之前从未接触过微信小程序和WebGL的开发,但是却一直有留意相关技术的发展,大概听说原来微信小程序是不支持WebGL 3D技术的。这次借着微信大力推广小游戏,看了一下API文档,发现小游戏是可以使用的WebGL进行开发的。而最近正好又有点时间,就随便搞搞,试试小游戏的效果。因为小游戏“跳一跳”是用three.js所制作的,所以我就选择了three.js所。那么开始吧。
bering
2019/12/02
4.9K0
【 图形游戏 Tetris 】原生 JavaScript 做小游戏
俄罗斯方块 (俄罗斯开发经典游戏) 游戏简介 《俄罗斯方块》(Tetris, 俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。 该游戏曾经被多家公司代理过。经过多轮诉讼后,该游戏的代理权最终被任天堂获得。任天堂对于俄罗斯方块来说意义重大,因为将它与GB搭配在一起后,获得了巨大的成功。《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。 名字起源 顾名思义,俄罗斯方块自然是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫
QUXINGDONG.COM
2018/04/17
1.2K0
Illustrator 2022 Mac最新激活版(Ai矢量图形软件)
Illustrator 2022 for Mac一款矢量图形软件,能够一次修改多个画板上的重复文本或对象来为您节省时间,帮助大家制作各类平面设计作品。
Mac知识分享
2022/08/08
5070
在ASP.NET中随意创建图形信息
如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点在ASP.NET中改变了。现在,我们只需要使用内置功能,就能够很容易动态创建图形,并向客户端发送具有最佳配置的图形。   用命令行程序创建图形   在讨论一大堆ASP.NET代码之前,我们先执行一个简单的命令行程序做一个测试,然后使用这些源代码作为 ASP.NET 脚本的基础。实际上,两者的区别在于:命令行程序将图形保存在一个文件中,而ASP.NET 脚本将图形直接发送到客户端。   举例的程序做什么呢?按照惯例,我们从众所周知的"Hello World" 程序开始,把这个文本信息输出到一个图形文件中,这个图形的大小要与当前选中的 "Hello World" 文本的字体和字号完全相同。   下面的脚本pagecounter.cs是一个典型的简单命令行程序:如果忽略包围在其周围的必须的类代码,就只剩下程序运行时要调用的主函数了,这也正是生成图形的代码所在处:   using System;   using System.IO;   using System.Drawing;   using System.Drawing.Imaging;   public class CTestBitmapFunctionality   {   public static void Main()   {   Bitmap newBitmap = null;   Graphics g = null ;   try   {   Font fontCounter = new Font("Lucida Sans Unicode", 12);   // calculate size of the string.   newBitmap = new Bitmap(1,1,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   SizeF stringSize = g.MeasureString("Hello World", fontCounter);   int nWidth = (int)stringSize.Width;   int nHeight = (int)stringSize.Height;   g.Dispose();   newBitmap.Dispose();   newBitmap = new Bitmap(nWidth,nHeight,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   g.FillRectangle(new SolidBrush(Color.White),   new Rectangle(0,0,nWidth,nHeight));   g.DrawString("Hello World", fontCounter,   new SolidBrush(Color.Black), 0, 0);   newBitmap.Save("c://test.png", ImageFormat.PNG);   }   catch (Exception e)   {   Console.WriteLine(e.ToString());   }   finally   {   if (null != g) g.Dispose();   if (null != newBitmap) newBitmap.Dispose();   }   }   }   在任何情况下,执行上面代码后,就会生成下面的图形test.png,它将存放在C驱动器上:   我们来仔细研究一下源代码,看看这个图形是如何创建的。关键一点是生成的图形必须与文本 "Hello World" 的字体和字号相同。因此,首先要计算文本的尺寸,为此我们使用了一个尺寸为1 x 1的虚拟图形。计算结束之后,再废弃这个虚拟图形并生成一个适当尺寸的图形。   源代码中有一点很有趣,这就是 Graphics 对象。要创建一个位图时,用这个对象做什么呢?奥妙在于:这是可以向其中绘图的上下文环境。我们可以在屏幕上、打印机上和内存中使用一个图形上下文环境,准确地说就是一个位图。图形的上下文环境使我们能够在任何设备上进行绘图操作,甚至是在虚拟设备上。   接着,用DrawString将文本 "Hello World"按照规格输出到一个白色背景的矩形(用 FillRectangle创建的)中。图形完成后,将其保存在磁盘上。凡是亲自研究过图形文件格式的人都知道这有多困难,但是使用 GDI+
Java架构师必看
2021/03/22
1.2K0
使用 Meld 在 Linux 中以图形方式比较文件和文件夹
如何比较两个相似的文件来检查差异?答案显而易见,就是使用 Linux 中的 diff 命令。
用户8639654
2021/09/10
3.8K0
图形用户界面和游戏开发
GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
用户8442333
2021/05/19
1.7K0
在Excel中玩拼单词游戏
学习累了,工作累了,也可以在Excel中放松放松。下面是在myspreadsheetlab.com中看到的一个在Excel中进行拼单词的游戏,如下图1所示。
fanjy
2022/11/16
1.2K0
在Excel中玩拼单词游戏
点击加载更多

相似问题

在iphone上绘制矢量图形

34

关于在iPhone上使用矢量图形的建议

10

iPhone游戏图形用户界面

21

哪个?ipad游戏图形的插图或矢量

12

在iPhone游戏中处理图形的最佳方式

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文