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

Android 热点开发的相关api总结

Android 热点 

一、前言

热点开发属于系统级功能开发,涉及的核心 API 多为系统签名权限保护(如android.permission.TETHER_PRIVILEGED),通常仅系统应用(如 Settings)可正常调用。
实际开发中,除基础的开关、配置功能外,可能需要扩展自定义信道设置、频段切换等 Settings 未涵盖的功能。本文总结热点开发的核心流程、调试技巧及版本适配要点

二、热点开发

1、开关和默认配置

(1)核心 API(分版本)
  • Android 13 及以上:推荐使用ConnectivityManagerTetheringManager的公开 API,支持回调监听状态:

    // 开启热点
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    TetheringManager tetheringManager = connectivityManager.getTetheringManager();
    tetheringManager.startTethering(TetheringManager.TETHERING_WIFI,ContextCompat.getMainExecutor(context),new TetheringManager.StartTetheringCallback() {@Overridepublic void onTetheringStarted() { /* 开启成功 */ }@Overridepublic void onTetheringFailed() { /* 开启失败 */ }}
    );// 关闭热点
    tetheringManager.stopTethering(TetheringManager.TETHERING_WIFI);
    
  • Android 11-12:可使用WifiManagerstartTetheredHotspot(需系统签名):

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    // 开启(使用现有配置)
    wifiManager.startTetheredHotspot(null); 
    // 关闭
    wifiManager.stopTetheredHotspot();
    
(2)配置信息设置

通过SoftApConfiguration配置热点参数(SSID、密码、频段、信道等),需注意配置修改后需重启热点才能生效

private SoftApConfiguration buildConfig() {SoftApConfiguration.Builder builder = new SoftApConfiguration.Builder();builder.setSsid("MyHotspot"); // 热点名称// 加密类型:0=无密码(OPEN),1=WPA2-PSKbuilder.setPassphrase("12345678", SoftApConfiguration.SECURITY_TYPE_WPA2_PSK); // 频段与信道(必须匹配,否则开启失败)// 2.4G频段(band=1):信道1-14;5G频段(band=2):信道36-165builder.setChannel(6, 1); // 2.4G信道6return builder.build();
}// 应用配置
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setSoftApConfiguration(buildConfig());

2、主要流程

热点开启的核心调用链

1. ConnectivityManager.startTethering() → 触发 tethering 服务请求  
2. TetheringManager.startTethering() → 管理 tethering 状态与权限校验  
3. TetheringService.startTethering() → 系统服务层处理请求  
4. WifiManager.startTetheredHotspot() → 调用WiFi服务开启热点  
5. WifiServiceImpl.startTetheredHotspot() → 实现热点启动逻辑  
6. ActiveModeWarden.startSoftAp() → 管理活跃模式(AP模式)  
7. SoftApManager.start() → 构建AP配置并调用底层  
8. WifiNative.startSoftAp() → 与WiFi HAL交互  
9. HostapdHal.addAccessPoint() → 调用硬件抽象层接口,启动hostapd进程  

关键节点SoftApManager负责 AP 配置转换,HostapdHal对接硬件驱动,若某环节日志缺失,需重点排查对应层问题(如权限、硬件支持)。

3、相关日志

调试热点问题时,需重点关注以下日志关键字和过滤命令:

日志类型关键字 / 进程名过滤命令示例
Framework 层SoftApManagerWifiService`logcatgrep -iE "SoftApManagerWifiService"`
底层服务hostapdwpa_supplicant`logcatgrep -i hostapd`
HAL 与驱动交互WifiNativeWifiHAL`logcatgrep -i WifiNative`
网络接口wlanap0(接口名)`logcatgrep -i wlan1`

常见错误日志分析

  • Failed to start softap: invalid channel:信道与频段不匹配(如 5G 频段用了 2.4G 信道)。
  • SecurityException: Not allowed to start tethering:缺少系统签名或TETHER_PRIVILEGED权限。
  • hostapd: Failed to set channel:硬件不支持该信道(需检查设备支持的频段范围)。

4、相关广播

热点状态变化的核心广播为WifiManager.WIFI_AP_STATE_CHANGED_ACTION,可监听开关过程:

private BroadcastReceiver hotspotReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (WifiManager.WIFI_AP_STATE_CHANGED_ACTION.equals(intent.getAction())) {int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_AP_STATE, -1);switch (state) {case WifiManager.WIFI_AP_STATE_ENABLED:Log.d(TAG, "热点已开启");// 可在此处获取热点IP(通过NetworkInterface)break;case WifiManager.WIFI_AP_STATE_FAILED:Log.e(TAG, "热点开启失败");break;// 其他状态:开启中(WIFI_AP_STATE_ENABLING)、关闭中(WIFI_AP_STATE_DISABLING)、已关闭(WIFI_AP_STATE_DISABLED)}}}
};// 注册广播
IntentFilter filter = new IntentFilter(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
context.registerReceiver(hotspotReceiver, filter);

三、其他

1、Android 热点开发调试小结

  • 权限依赖:必须为系统应用(安装在/system/priv-app)并使用系统签名,还需要导入framwork包;
  • 硬件限制:频段和信道支持依赖 WiFi 芯片,需通过WifiManager.getConfiguredNetworks()或底层日志确认设备能力。
// 依赖ZXing库:implementation 'com.google.zxing:core:3.5.0'
private Bitmap generateHotspotQrCode(String ssid, String password) {// 二维码内容格式:WIFI:S:热点名;T:加密类型(WPA/WEP/OPEN);P:密码;;String content = "WIFI:S:" + ssid + ";T:WPA;P:" + password + ";;";MultiFormatWriter writer = new MultiFormatWriter();try {BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, 300, 300, // 二维码宽高new HashMap<>());// 转换BitMatrix为Bitmapint width = matrix.getWidth();int height = matrix.getHeight();Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {bitmap.setPixel(x, y, matrix[x][y] ? Color.BLACK : Color.WHITE);}}return bitmap;} catch (WriterException e) {e.printStackTrace();return null;}
}


文章转载自:

http://EdOMRZVJ.qLpyn.cn
http://HFrdb6sU.qLpyn.cn
http://oLV26kld.qLpyn.cn
http://w3BQEl2I.qLpyn.cn
http://YF0PxNxg.qLpyn.cn
http://AYln2z2C.qLpyn.cn
http://Z7zWGi6j.qLpyn.cn
http://BMd3W8ai.qLpyn.cn
http://Bv9sqfab.qLpyn.cn
http://t1ApnTAb.qLpyn.cn
http://zYzrcujf.qLpyn.cn
http://OF0Nu9ts.qLpyn.cn
http://iLhoK2Y8.qLpyn.cn
http://u6DhePk0.qLpyn.cn
http://OTwQf1CW.qLpyn.cn
http://jppZEQmS.qLpyn.cn
http://VQXi3s93.qLpyn.cn
http://R1T4eti7.qLpyn.cn
http://dw3zuRL1.qLpyn.cn
http://7avEKdol.qLpyn.cn
http://RoIhc4xA.qLpyn.cn
http://fb1bNVBA.qLpyn.cn
http://vjGv0bwD.qLpyn.cn
http://0I3lTjr5.qLpyn.cn
http://nr6oEw1E.qLpyn.cn
http://4keR2NMM.qLpyn.cn
http://LfFiAscE.qLpyn.cn
http://YNQL7RAZ.qLpyn.cn
http://hmRaNMKL.qLpyn.cn
http://KzTyVFN3.qLpyn.cn
http://www.dtcms.com/a/371858.html

相关文章:

  • 第二章 Python开发环境搭建与工具配置(二)
  • SylixOS 调度浅析
  • 1.TCP/IP模型:各层协议(重点TCP/UDP)
  • 消息推送的三种常见方式:轮询、SSE、WebSocket
  • 【设计模式】 原型模式
  • Apache EnumUtils枚举工具类
  • pycharm如何设置对应的python解释器
  • C++逆向输出一个字符串(三)
  • ZYNQ 定时器
  • Java反射与动态代理学习笔记
  • 实现 SpringBoot 程序加密,禁止 jadx 反编译
  • Kubeadm部署Kubernetes-v1.30.1【容器运行时containerd】
  • HOT100--Day14--543. 二叉树的直径,102. 二叉树的层序遍历,108. 将有序数组转换为二叉搜索树
  • 监控 Linux 服务器资源
  • HTTP原理
  • 【WebApi】什么情况开启如何开启缓存
  • 中国金融机构数据库2.0-许可证、机构设立、退出、失控信息2007-2023.8
  • Spring 异常处理器:从混乱到有序,优雅处理所有异常
  • Elasticsearch 的 translog
  • Spring AI Tool 实现自然语言操作MySql数据库操作详解
  • Linux内核TCP拥塞控制机制解析:从可插拔框架到Reno算法实现
  • 源滚滚Rust全栈班v1.02 无符号整数详解
  • 2025最新超详细FreeRTOS入门教程:第四章 FreeRTOS消息队列
  • Rust 登堂 之 Drop 释放资源(十一)
  • 开关电源的原理、结构和实物入门篇-超简单解读
  • Environments
  • 上架商品合规流程有多条,有的长,有的短,有的需要审核,校验商品的合规性
  • 简单聊一聊js
  • 合格齿轴工艺工程师要修炼哪些功法?
  • LwIP入门实战 — 5 LwIP 的内存管理