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

android wifi AsyncChannel(WifiManager和WifiP2pManager)

AynscChannel的讲解

[Android]AsyncChannel介绍-CSDN博客

WifiP2pManager里的channel的使用理解

WifiP2pManager.java

 

public void createGroup(Channel c, ActionListener listener) {
   checkChannel(c);
   c.mAsyncChannel.sendMessage(CREATE_GROUP, WifiP2pGroup.NETWORK_ID_PERSISTENT,
   c.putListener(listener));
}
这里面的c变量是Channel, c.putListener按理说Channel里有putListener方法

一开始以为Channel是android 里的工具类接口,结果发现WifiP2pManager里有这个Channel的定义

里面还有个P2pHandle,解析各种信息,调用不同的回调,可以看出来这儿不止有ActionListener回调,还有P2pStateListener、ConnectionInfoListener等


class WifiP2pManager {
public static class Channel implements AutoCloseable {
     public Channel(Context context, Looper looper, ChannelListener l, Binder binder,WifiP2pManager p2pManager) {
         mAsyncChannel = new AsyncChannel();
         mHandler = new P2pHandler(looper);
     }

     class P2pHandler extends Handler {
        public void handleMessage(Message message) {
            case DISCOVER_PEERS_FAILED:
            case STOP_DISCOVERY_FAILED:
            case DISCOVER_SERVICES_FAILED:
            case CONNECT_FAILED:
            case CANCEL_CONNECT_FAILED:
            case CREATE_GROUP_FAILED:
            case REMOVE_GROUP_FAILED:
                ((ActionListener) listener).onFailure(message.arg1);
                break;
            case CREATE_GROUP_SUCCEEDED:
            case REMOVE_GROUP_SUCCEEDED:
                 ((ActionListener) listener).onSuccess();

            case RESPONSE_P2P_STATE:
                  ((P2pStateListener) listener)
                                    .onP2pStateAvailable(message.arg1);
            case RESPONSE_CONNECTION_INFO:
                  ((ConnectionInfoListener)listener)
                        .onConnectionInfoAvailable(wifiP2pInfo);
        }
     }
     private int putListener(Object listener) {
            int key;
            key = mListenerKey++;
            mListenerMap.put(key, listener);
            }
            return key;
     }
}
}


http://www.kler.cn/a/516841.html

相关文章:

  • 用Python和Tkinter标准模块建立密码管理器
  • 前端react后端java实现提交antd form表单成功即导出压缩包
  • SQL进阶实战技巧:用户会话内行为模式挖掘
  • ES6语法
  • 工作~酒场指南
  • Harmony Next 支持创建分身
  • 【CS61A 2024秋】Python入门课,全过程记录P3(Week5 Sequences开始,更新于2025/1/23)
  • 韩国机场WebGIS可视化集合Google遥感影像分析
  • Java EE 进阶:Spring MVC(1)
  • HarmonyOS快速入门
  • 【YOLOv10改进[Backbone]】使用LSKNet替换Backbone | 用于遥感目标检测的大型选择性核网络
  • 在centos上编译安装opensips【初级-默认安装】
  • Nginx 性能优化技巧与实践(一)
  • PLC通信
  • 2025年最新汽车零部件企业销售项目管理解决方案
  • 解密堡垒机:安全与效率的守护者
  • 2K320Hz显示器哪个好?
  • Vue.js 嵌套路由和动态路由
  • 【问题】Qt c++ 界面 lineEdit、comboBox、tableWidget.... SIGSEGV错误
  • MsfVenom木马制作及使用
  • 在K8S中,如何使用EFK实现日志的统一管理?
  • FFmpeg 头文件完美翻译之 libavcodec 模块
  • Spring MVC中HandlerInterceptor和Filter的区别
  • 编程界“华山论剑”:PHP与Go,谁主沉浮?
  • 面试题库笔记
  • 查看当前系统上运行的 Docker 容器