Android 13 高通设备热点低功耗模式(1)

Android 13: 设备热点与低数据模式识别优化
本文探讨了如何在Android 13上,特别是在高通设备上,使热点模式被iPhone识别为移动热点,从而自动开启低数据模式。通过分析小米设备的日志和设置,发现特定的VendorElements标识是关键。通过对热点开启流程的跟踪,找到在HAL层增加解析和配置的入口,以实现iPhone和小米设备正确识别Android热点并启用低数据模式。

需求:

Android设备开启热点,使Iphone设备连接,自动开启低数据模式

低数据模式:

低数据模式是一种在移动网络或Wi-Fi环境下,通过限制应用程序的数据使用、降低数据传输速率或禁用某些后台操作来减少数据流量消耗的优化模式。

这种模式主要用于节省数据流量费用,特别是在移动网络流量费用昂贵的情况下。低数据模式可以通过限制应用程序后台数据传输、减小图片质量、禁用自动播放视频等方式来降低数据流量消耗。在iOS设备上,如iPhone,低数据模式可以通过设置中的蜂窝网络或Wi-Fi选项开启。开启后,系统会自动减少后台未使用的应用刷新数据,节约流量并减少设备功耗,从而增强续航能力。

此外,低数据模式不仅适用于移动网络,也适用于Wi-Fi网络。在Wi-Fi网络下,开启低数据模式还可以提升续航能力。

综上,低数据模式起源为IOS 13以后的功能,最常见的表现就是在切换wifi为移动数据时候,后台下载会暂停

基于上述需求,我们知道设备在使用移动数据时候,默认会暂停后台的下载,那如果设备能区分出连接的wifi是热点还是路由器散发的wifi即可达到文章开头的需求。

测试发现小米设备和IOS,在wifi扫描列表,热点和路由器散发的wifi是有明显区分的,详见如下,曲别针图标的是热点,连接该wifi,状态栏图标也是显示未曲别针,但是大部分Android ,在这一块无区分

如图,小米设备也可以区分出热点和路由器wifi,并且散发的热点也可以被Iphone设备识别为移动热点,但是我的设备散发的热点,IPhone设备当做一个普通的wifi,仔细看下小米设备在开启热点的时候,有一个设备标识,可设置为移动热点还是默认,测试发现,设置默认的话,该热点IPhone设备也识别不出来。

我们分别设置这两个开关,摘取下小米的日志,观察如下不同

我们分别设置这两个开关,摘取下小米的日志,观察如下不同

vendor_elements值不同,我们再次push出来小米的Settings,反编译大概看下,发现设置为移动热点的时候,确实是DD0A0017F206010103010000

由此可以确定,小米和Iphone,会识别DD0A0017F206010103010000这个标识,为这个则认定为热点,看下小米的wifi连接页面,判断是否有{0, 23, -14, 6, 1, 1, 3, 1}这一串的标识(DD是开头,0A表示长度为10,后面的0017F206010103010000就是数据,转为10进制就是:{0, 23, -14, 6, 1, 1, 3, 1,0,0})

在热点相关的类中搜索VendorElements相关,发现设置接口和解析接口

设置:
//QSSI.13\packages\modules\Wifi\framework\java\android\net\wifi\SoftApConfiguration.java
@NonNull
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
public Builder setVendorElements(
        @NonNull List<ScanResult.InformationElement> vendorElements) {
    if (!SdkLevel.isAtLeastT()) {
        throw new UnsupportedOperationException();
    }
    for (ScanResult.InformationElement e : vendorElements) {
        if (e.id != ScanResult.InformationElement.EID_VSA) {
            throw new IllegalArgumentException("received InformationElement which is not "
                    + "related to VendorElements. VendorElement block should start with "
                    + HexEncoding.encodeToString(
                            new byte[]{ (byte) ScanResult.InformationElement.EID_VSA }));
        }
    }
    final HashSet<ScanResult.InformationElement> set = new HashSet<>(vendorElements);
    if (set.size() < vendorElements.size()) {
        throw new IllegalArgumentException("vendor elements array contain duplicates. "
                + "Please avoid passing duplicated and keep structure clean.");
    }
    mVendorElements = new ArrayList<>(vendorElements);
    return this;
}

解析热点配置文件:data/misc/apexdata/com.android.wifi/WifiConfigStoreSoftAp.xml
public static SoftApConfiguration parseFromXml(XmlPullParser in, int outerTagDepth,
        SettingsMigrationDataHolder settingsMigrationDataHolder)
        throws XmlPullParserException, IOException  {
            ...
case XML_TAG_VENDOR_ELEMENTS:
    if (SdkLevel.isAtLeastT()) {
        softApConfigBuilder.setVendorElements(
                SoftApConfigurationXmlUtil.parseVendorElementsFromXml(
                        in, outerTagDepth + 1));
    }
    break;
        }        

 如上,我们可以在打开热点的时候,增加配置

<think>好的,我需要帮助用户查找如何让高通设备Android 11上进入工厂模式的方法。首先,我需要理解用户的需求。用户提到的是高通芯片的Android 11设备,想要进入工厂模式。工厂模式通常用于设备测试、硬件检测或恢复出厂设置等操作。 根据提供的引用内容,引用[2]提到高通9008模式(EDL模式)是在bootloader和Android系统之上的底层模式,可以无视系统锁屏直接操作硬件。这可能与工厂模式有关联,但需要进一步确认。此外,引用[1]和引用[3]主要涉及IMEI恢复和逆向分析,可能与工厂模式不直接相关,但可能提供一些线索,比如使用特定的工具或步骤。 接下来,我需要确定进入工厂模式的具体方法。通常,进入工厂模式的方式可能包括物理按键组合、ADB命令或者拨号盘输入特定代码。例如,常见的*#*#4636#*#*可以进入测试菜单,但不同厂商可能有不同的代码或方法。对于高通设备,可能需要结合硬件按键和软件操作。 另外,考虑到不同厂商可能对工厂模式有不同的实现,可能需要用户尝试通用的方法或查找特定设备的步骤。例如,同时按住音量加减键和电源键,或者通过ADB发送特定指令。引用[2]提到的EDL模式可能需要使用工具如QPST或QFIL,但EDL模式更多用于刷机或数据提取,可能与工厂模式不同。 还需要注意,Android 11系统可能有新的安全措施,导致旧的方法失效,因此需要确认方法的适用性。如果用户无法通过常规方式进入,可能需要解锁bootloader或使用工程固件。 总结可能的步骤:1.尝试物理按键组合;2.使用ADB命令;3.输入特定拨号代码;4.使用高通工具进入EDL模式,再进入工厂模式。需要提醒用户谨慎操作,避免设备损坏,并建议备份数据。</think>### 高通设备Android 11进入工厂模式的操作方法 #### 方法1:物理按键组合 1. **关机状态下操作** 长按 **电源键 + 音量加键**(或 **音量减键**,不同厂商组合可能不同),持续10秒左右,直到出现工厂模式界面。 部分设备可能需要 **电源键 + 音量加减键同时按住**,或通过 **多次快速按电源键** 触发。 #### 方法2:ADB命令 1. **启用USB调试** 在设备设置中开启“开发者选项”和“USB调试”。 2. **执行命令** ```bash adb reboot factory ``` 或尝试特定厂商命令(如 `adb reboot edl` 可能进入EDL模式[^2])。 #### 方法3:拨号盘输入代码 输入通用测试代码: - `*#*#64663#*#*`(部分小米/红米设备) - `*#0*#`(三星设备) - `*#*#4636#*#*`(Android通用测试菜单,可能包含部分工厂功能) #### 方法4:通过EDL模式间接操作 若工厂模式被隐藏,可尝试进入高通EDL模式(紧急下载模式),再通过工具调用工厂功能: 1. **进入EDL模式** 使用物理按键组合或ADB命令 `adb reboot edl`[^2]。 2. **使用QPST/QFIL工具** 连接设备后,通过工具加载工厂镜像或执行特定分区操作(需专业操作,风险较高)。 --- ### 注意事项 1. **厂商差异** 不同品牌设备(如小米、OPPO、三星)的工厂模式入口可能不同,建议优先搜索具体型号的操作方法。 2. **风险提示** 工厂模式可能包含硬件测试或格式化选项,误操作可能导致数据丢失或系统故障。 3. **系统限制** Android 11可能增强权限管理,部分命令需root权限或工程固件支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值