首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当Android/GoogleTV与WAN断开连接时收听

当Android/GoogleTV与WAN断开连接时收听
EN

Stack Overflow用户
提问于 2013-07-30 02:29:19
回答 1查看 263关注 0票数 0

我要监听GoogleTV设备断开连接的时间,然后显示弹出警告。

我认为我已经通过下面的代码实现了这一点,但随后发现,只有当设备的以太网电缆断开连接时才会警告我断开连接:即LAN。当路由器的输入以太网电缆断开时,我不会收到警报:即WAN。

我发现,当断开LAN电缆时,GTV设备将失去其IP地址,但当断开WAN电缆时,GTV设备仍将具有IP地址-这就是为什么我没有收到应用程序断开连接的警报的原因。

那么,当GoogleTV设备不再连接到广域网时,我如何检查?要做到这一点,我需要在下面的代码中添加什么?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
startListeningToNetwork();
private void startListeningToNetwork() {
   if(_networkStateReceiver == null){
      //Listen for when the network changes. If app loses internet before webView has loaded, then display error message.
      _networkStateReceiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
            if(!isConnected()){
              showNetworkErrorDialog();
            } else {
                      closeNetworkError();
            }
          }

      };


      IntentFilter networkFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); 

      getActivity().registerReceiver(_networkStateReceiver, networkFilter);
   }

}
private boolean isConnected() {
    ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
    Toast.makeText(getActivity(), "isConnected? " + (cm.getActiveNetworkInfo() != null  && cm.getActiveNetworkInfo().isConnected()) , Toast.LENGTH_SHORT).show();
    return (cm.getActiveNetworkInfo() != null  && cm.getActiveNetworkInfo().isConnected());
}
EN

回答 1

Stack Overflow用户

发布于 2013-07-31 15:24:38

为BroadcastReceiver注册CONNECTIVITY_ACTION

  1. 您可以尝试以下两个选项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- Use the `Context` that `BroadcastReceiver` is passed with to get the `ConnectivityManager`  and get current info about any active network
- Use parcerable [extras](http://developer.android.com/reference/android/net/ConnectivityManager.html#EXTRA_EXTRA_INFO) sent to the `Intent`

  1. 获取从点1

中的任一选项获取的活动网络的详细状态

公共类LANConnectionReceiver扩展了BroadcastReceiver{

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Override
    public void onReceive(Context context, Intent i) {

            NetworkInfo info = (NetworkInfo)i.getParcelableExtra(ConnectivityManager.EXTRA_EXTRA_INFO);
            /*or use the context to get the connection manager whenever the broadcast is sent to this receiver 
             * ConnectivityManager conmng = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
                NetworkInfo activeNetwork = conmng.getActiveNetworkInfo();
             */
            Log.d("ConnectionReceiver", "State=" + info.getDetailedState());
            if(info.getType() ==ConnectivityManager.TYPE_ETHERNET){ //optional, we are interested in case when it looses WAN 
                switch(info.getDetailedState()){
                case AUTHENTICATING:
                    break;
                case BLOCKED:
                    break;
                case CAPTIVE_PORTAL_CHECK:
                    break;
                case CONNECTED:
                    break;
                case CONNECTING:
                    break;
                case DISCONNECTED:
                    break;
                case DISCONNECTING:
                    break;
                case FAILED:
                    break;
                case IDLE:
                    break;
                case OBTAINING_IPADDR:
                    break;
                case SCANNING:
                    break;
                case SUSPENDED:
                    break;
                case VERIFYING_POOR_LINK:
                    break;
                default:
                    break;

                }
            }
    }



}

注意,我们对网络的类型不感兴趣,因为我们感兴趣的是电视是否可以访问广域网,这就是为什么我将条件info.getType()==ConnectivityManager.TYPE_ETHERNET设置为可选的原因。

编辑:在上面的评论中,我提到了在不阻止应用程序的情况下递归检查网络。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void listenForConnection(final Context c, final Handler h){
                h.postAtFrontOfQueue(new Runnable(){

                    @Override
                    public void run() {
                         ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
                        NetworkInfo networkInfo = cm.getActiveNetworkInfo();
                        if(networkInfo!=null && networkInfo.isConnectedOrConnecting()){
                            Intent i = new Intent(ConnectivityManager.CONNECTIVITY_ACTION);
                            i.putExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, networkInfo.getType());
                            i.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
                            i.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, networkInfo.isFailover());
                            i.putExtra("MY_CUSTOM_KEY_HAS_WAN", true);
                            c.sendBroadcast(i);
                        }else {
                            //do something else
                        }
                        h.postDelayed(this, 100);
                    }});
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17937366

复制
相关文章
Android Studio 项目断开SVN连接
Android Studio 忽略文件及关联SVN:http://blog.csdn.net/yechaoa/article/details/65443003
yechaoa
2022/06/10
3.1K0
Android Studio 项目断开SVN连接
浅谈TCP协议(建立与断开连接)
TCP是面向连接的,可靠的进程到进程通信的协议。 TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据。 TCP将若干个字节构成一个分组,成为报文段(segment) TCP报文段封装在IP数据报中:
小手冰凉
2019/09/10
2.6K0
浅谈TCP协议(建立与断开连接)
mysql使用druid时自动断开连接解决方案
今天接手了一个上了年龄的项目,用的是smm,数据库连接池用的druid,数据库版本较老,是5.0的mysql,我升级成mysql8.0后,一开始还没问题,然后大概每次无连接2分钟后数据库自动断开。。。
阿超
2022/08/16
5.7K0
当 HTTP 连接池遇上 KeepAlive 时
最近在使用netty作为http客户端通过pool连接tomcat的时候,出现了很多Connection reset by peer 的IOException的异常。便对问题的根源做了细致的调研。
芋道源码
2018/12/29
2.4K0
当 HTTP 连接池遇上 KeepAlive 时
mysql使用druid时自动断开连接解决方案二
原理和我之前写的那个定时任务一样的,也就是定时请求数据库,只不过是druid帮我们写好
阿超
2022/08/16
3.3K0
rabbitMQ连接断开问题
按这样说法,应该还是没有把心跳值给设置好。上面的程序期望是10秒发一次心跳,但是理论上发送心跳的间隔会比10秒多一点。所以艾玛,我应该是把heartbeat_interval的作用搞错了, 它是指超过这个时间间隔不发心跳或不给server任何信息,server就会断开连接, 而不是说pika会按这个间隔来发心跳。 结果我把heartbeat_interval值设置高一点(比实际发送心跳/信息的间隔更长),比如上面设置成60秒,就正常运行了。
周小董
2019/03/25
6.3K0
连接断开的线
前一段参加安图举办的用户大会,其中讲了一个案例:连接断开的线。今天将这个整理下分享给大家。魔板整体截图
数据处理与分析
2019/07/31
2.4K0
连接断开的线
PHP主动断开与浏览器的连接
曾经整理过一篇《关于PHP连接处理中set_time_limit()、connection_status()和ignore_user_abort()深入解析》
后端技术探索
2018/08/09
1.8K0
iOS开发之BLE(二)——外设连接与断开
在iOS开发之BLE(一)——理论知识一文中,主要对iOS开发中BLE的基本理论知识进行了介绍,本文以中心模式为例讲解蓝牙的连接过程,并进行案例实践。
YungFan
2019/03/22
3.1K0
iOS开发之BLE(二)——外设连接与断开
Http协议时无状态的,没有记忆功能,连接--传送--断开
private 字段十+,然后输出到页面上,然后重复刷新页面。服务器不记的上次给了浏览器什么,否则服务器的压力会太大。
静心物语313
2020/03/24
6060
CDC和CDZ与腾讯云断开连接的情况
但请注意,您将无法创建,读取,刷新或者删除本地的资源。CDC或者CDZ上的CVM实例和云硬盘(CBS)卷将继续正常操作。然而,API可用性将会降低,例如,运行/启动/停止/终止。实例指标和日志将继续在本地缓存一段时间,并且将在连接返回时推送到腾讯公有云区域。对于腾讯云对象存储在分布式云上的部署,如果与CDZ或者CDC的网络连接丢失,您将无法访问您的对象。系统使用主Region腾讯云访问管理(CAM)服务来验证对象存储和检索请求,如果CDZ或者CDC无法连接到主腾讯云区域,您就不能访问您的数据。在连接断开期间,您的数据仍然安全地存储在CDC或者CDZ,在连接恢复后,身份验证和请求便会恢复。
腾讯云计算产品团队
2023/06/25
3480
mysql数据库(1):连接与断开服务器
(1)登录:mysql -h localhost -u root -p  回车,然后输入密码,回车
川川菜鸟
2021/10/18
8.1K0
振弦采集模块参数配置工具的连接与断开
在指令区的【 COM 端口】组合框内操作完成。【端口】 下拉框:列出了本计算机当前已经存在的所有 COM 端口名称,若与模块连接的端口名称未在下拉框中列出,还可通过手工输入端口名的方法自由输入。
河北稳控科技
2023/01/12
7740
振弦采集模块参数配置工具的连接与断开
WebSocket断开原因、心跳机制防止自动断开连接
WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。
安德玛
2022/03/09
17K0
Netty是如何断开连接的?
多路复用器(Selector) 接收到OP_READ事件: 处理OP_READ事件: NioSocketChannel.NioSocketChannelUnsafe.read()
JavaEdge
2021/02/22
2K0
SSH连接linux时,长时间不操作就断开的解决方案
修改/etc/ssh/sshd_config文件,找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号("#")去掉,
菲宇
2019/06/12
5.4K0
SecureCRT 设置超时自动断开连接时长
中文:选项->编辑默认会话->如下图。 English:Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP
全栈程序员站长
2022/08/09
4.8K0
SecureCRT 设置超时自动断开连接时长
TCP连接建立、断开过程详解
TCP连接建立过程需要经过三次握,断开过程需要经过四次挥手,为什么? 有没有其他的连接建立、断开方式?
coderhuo
2018/08/29
12K0
TCP连接建立、断开过程详解
【TKE】设置 Websocket 空闲连接断开时间
通过 Ingress-nginx(TKE 组件) 代理 ws 连接成功后, 空闲连接会在默认 60s 后 断开,有时业务中想要配置空闲连接更长时间再断开。
Jokey
2023/09/22
2.2K0
协议栈-断开连接,删除套接字
客户端调用socket程序库的close程序,该程序会委托协议栈生成一个包含断开连接信息的tcp头部(fin比特为1),委托ip模块将数据发送给服务端,并更改当前socket状态(断开连接)
小柔
2022/10/09
1.8K0
协议栈-断开连接,删除套接字

相似问题

收听断开连接的节点

12

当设备与PC断开连接时未能连接

12

SSIS -当连接断开时

11

当连接断开时重试

57

当与蓝牙设备断开连接时,Android应用程序会冻结。

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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