wifi ap状态

Android WiFi开发 (二)Wifi热点 接着上一篇wifi的扫描连接等,这一篇主要说一下手机开启Wifi热点。 demo的下载地址会在最下面贴出来。 图片: 经测试开启wifi热点(无秘密,wpa安全类型,wpa2安全类型)都可以正常开启并使用。 主要用到的代码如下所示: package com.vn.wifitest.utils; import java.lang.reflect.InvocationTar 阅读详情

由于android不同版本,ap_state的常量值是不一样,这里提供一个工具类来解决此问题

android2.3版本

    private static final int WIFI_AP_STATE_UNKNOWN = -1;
    private static final int WIFI_AP_STATE_DISABLING = 0;
    private static final int WIFI_AP_STATE_DISABLED = 1;
    private static final int WIFI_AP_STATE_ENABLING = 2;
    private static final int WIFI_AP_STATE_ENABLED = 3;
    private static final int WIFI_AP_STATE_FAILED = 4;

4.0版本

    public static final int WIFI_AP_STATE_DISABLING = 10;
    public static final int WIFI_AP_STATE_DISABLED = 11;
    public static final int WIFI_AP_STATE_ENABLING = 12;
    public static final int WIFI_AP_STATE_ENABLED = 13;
    public static final int WIFI_AP_STATE_FAILED = 14;


这里使用工具类

public class WifiApStateUtil {
	public static int WIFI_AP_STATE_DISABLING;
	public static int WIFI_AP_STATE_DISABLED;
	public static int WIFI_AP_STATE_ENABLING;
	public static int WIFI_AP_STATE_ENABLED;
	public static int WIFI_AP_STATE_FAILED;
	private static SparseArray<String> mWifiStateStr=new SparseArray<String>();
	 static  {

		try {
			WIFI_AP_STATE_DISABLED = WifiManager.class.getField("WIFI_AP_STATE_DISABLED").getInt(null);
			WIFI_AP_STATE_DISABLING = WifiManager.class.getField("WIFI_AP_STATE_DISABLING").getInt(null);

			WIFI_AP_STATE_ENABLING = WifiManager.class.getField("WIFI_AP_STATE_ENABLING").getInt(null);
			WIFI_AP_STATE_ENABLED = WifiManager.class.getField("WIFI_AP_STATE_ENABLED").getInt(null);
			WIFI_AP_STATE_FAILED = WifiManager.class.getField("WIFI_AP_STATE_FAILED").getInt(null);
			mWifiStateStr.append(WIFI_AP_STATE_DISABLED, "WIFI_AP_STATE_DISABLED");
			mWifiStateStr.append(WIFI_AP_STATE_DISABLING,"WIFI_AP_STATE_DISABLING");
			mWifiStateStr.append(WIFI_AP_STATE_ENABLING,"WIFI_AP_STATE_ENABLING");
			mWifiStateStr.append(WIFI_AP_STATE_ENABLED,"WIFI_AP_STATE_ENABLED");
			mWifiStateStr.append(WIFI_AP_STATE_FAILED,"WIFI_AP_STATE_FAILED");
		} catch (IllegalArgumentException e) {
			MicroLogging.e("WIFI_CONSTANTS", e);
		} catch (IllegalAccessException e) {
			MicroLogging.e("WIFI_CONSTANTS", e);
		} catch (NoSuchFieldException e) {
			MicroLogging.e("WIFI_CONSTANTS", e);
		}

	}

	/**
	 * 将广播得到的int值转化为字符串
	 * 
	 * @param x
	 * @return
	 */
	public static String wifiApState2Str(int x) {
	    return mWifiStateStr.get(x);
	}



}



        
A133-android10 解决息屏状态下AP断开后WIFI自动回连的问题 解决息屏状态下AP断开后WIFI自动回连的问题。 阅读详情

相关推荐

ESP32学习实例(四),WIFI模块的初步学习和遇到的问题,以及解决方法

目录 一、ESP32的WiFi特点 二、ESP32的WIFI状态机总结 状态机解析 WiFi初始化API介绍 WiFi初始化编写 作为AP的回调函数解析 三、STA代码实现 四、遇到的问题和解决方法 五、总结 一、ESP32的WiFi特点 WiFi可以分为AP、STA、AP+STA三种工作模式模式,这期我们主要介绍AP模式。 作为AP时,理论上可以被4个STA连接。这里有人就回问了,什么是AP和STA AP 是 (Wireless) AccessPoint 的缩写,即 (无线)

weixin_42619971的博客 8151

Android 8.0 WiFi Ap 热点控制接口

1. Android 7.0 及其以前的 WiFi 热点接口 /** * Gets the Wi-Fi enabled state. * * @return One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_ST...

苏法迪的专栏 8073

Android 9.0 Wifi断开AP过程

本文对WIFI断开已连接的AP过程进行分析,整个过程分为发送断开AP的命令和断开AP执行结果上报两个部分。 一 、发送断开AP的命令 1.1 WifiManager.java 1.2 WifiServiceImpl.java 1.3 WifiStateMachine.java 1.4 WifiNative.java 1.5 SupplicantStaIfaceHal.java 这里下发断开指令到底层断开AP连接。下面再看下AP断开状态上报。 二 、断开AP执行结果的上

不冬眠的熊的博客 1867

热点开关状态的判断和获取热点ssid

最近在做Android盒子开发的时候,在对wifi和热点的开发需求也是比较多的,在项目开发中需要对热点进行开关和对状态的判断,经过查询相关资料找到解决方案WifiManager.java源码,通过WifiManager中的api来获取相关状态,而在其中的getWifiApState() 就是获取热点开关的状态。通过 getWifiApState() 方法返回值的注释,可以找到如下几种状态,拿到当前状态值之后,只需要对比各种状态的值,就知道热点的开启状态了。2.1获取热点状态的两种方法。

chuyouyinghe的专栏 1362

android的wifi扫描流程及管理(framework层的wifi扫描分析)

前言:本文介绍wifi framework层的扫描处理流程,所介绍的流程的代码 全部在下面的文件中: (android\frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiStateMachine.java)一、wifi状态的转变没连接ap时打开wifi的状态转变: InitialState->SupplicantSt

简单的过客 5940

汇川EASY系列之以太网通讯(MODBUS_TCP做主站)

汇川Easy系列以太网通讯中(MODBUSTCP,plc做主站),终于可以不用使用指令就可以完成了,全程通过简单的配置就可通讯。本文将通过EASY系列PLC与调试助手之间完成此操作。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 3303

android获取系统wifi状态等

WIFI   获取WIFI状态     WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);     if(wifiManager != null){       int wifiState = wifiManager.getWifiState();     }   ...

weixin_33933118的博客 274

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

WiFi开发 (二)Wifi热点

接着上一篇wifi的扫描连接等,这一篇主要说一下手机开启Wifi热点。demo的下载地址会在最下面贴出来。

chuyouyinghe的专栏 607

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1170

从网口变压器到TVS管:手把手设计通过4KV浪涌的以太网电路

本文详细解析工业级以太网接口4KV浪涌防护设计,从网口变压器选型到TVS管布局,提供通过IEC61000-4-5标准测试的完整方案。重点介绍Bob Smith电路优化和PCB设计技巧,帮助工程师有效应对雷电感应和设备开关瞬态干扰,确保工业设备稳定运行。

study的专栏 285

raspberry pi 状态监视器 + wifi + wifi ap

买树梅派快一年了,还是没有想好这玩意能做点啥.最近闲着没事,就拿出来折腾. 但是我没有显示器,只能通过wifi 连ssh 但这样就不能实时监视她在干什么,就连了一个小显示屏,用来显示cpu利用率内存使用率以及开机时间等.另外,使用路由器的wifi联树梅派有时会非常卡, 于是就用树梅派的无线网卡搭建了一个ap . 再也不卡了. 先上图:

3106

2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(3卷)解析

我们先绘制题组中所有设计图我这边作图用的国内的在线作图工具。

2301_76737000的博客 5419

OpenHarmony鸿蒙Wifi AP业务流程分析

AP业务功能主要包括开启、关闭、设置热点配置以及连接设备管理(连接状态通知,黑名单管理) AP业务主要接口 接口文件: wifi/interfaces/innerkits/native_cpp/wifi_standard/include/wifi_hotspot.h 接口名称 接口描述 ErrCode EnableHotspot(); 开启AP ErrCode DisableHotspot(); 关闭AP ErrCode GetHotspotState(int &sta

togolife的博客 1694

通达信+大智慧数据同步存调DLL

数据同步存调DLL(通达信版+大智慧版)

guleba的博客 2054

【如何学习CAN总线测试】——Python+Robot Framework框架实现UDS诊断自动化

由于项目需要进行UDS诊断测试,所以对这方面进行了研究学习,网上很少能查询到相关资料,故记录一下UDS自动化测试开发过程,由于保密原则,案例都是Demo,希望能帮到感兴趣的朋友。

测试领域技术分享 7469

android 关闭wifi ap,Android以编程方式打开/关闭WiFi HotSpot

警告此方法在5.0以后将无法使用,这是一个过时的条目。您可以使用以下代码以编程方式启用,禁用和查询wifi直接状态。package com.kusmezer.androidhelper.networking;import java.lang.reflect.Method;import com.google.common.base.Preconditions;import android.conte...

weixin_32535389的博客 640

OpenHarmony深度定制:从系统到模块的全景剖析与自定义模块实战

目标:在中新增一个算法库,让产品可直接调用。关闭不用的 20+ 系统部件,ROM 缩小 50 %;为自家芯片新增专用驱动模块,快速点亮开发板;内将核心算法库以部件形式集成,实现商业闭源。万物互联时代,差异化才是护城河。

m0_67505153的博客 1036

android怎么开启wifi热点,android 开启wifi热点api

android 开启wifi热点apiandroid默认开启wifi热点方式只能通过设置-移动网络共享-便携式wlan热点,为了开启一个热点要进行3部操作,实属麻烦!因此通过网上查资料,实现wifi热点的一键启动!通过google获知,android把wifi相关的api给隐藏了,因此只能通过反射机制进行调用!/*** Start AccessPoint mode with the specifi...

weixin_39629947的博客 1248

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

由"wifi: Haven't to connect to a suitable AP now"引出的关于ESP32 WIFI模块状态变化认识

目录 1、背景 1.1 参考资料 2、ESP32 连接WIFI热点流程​​ 3、流程中各函数源码分析 3.1 void tcpip_adapter_init(void) 3.2 esp_err_t esp_event_loop_init(system_event_cb_t cb, void *ctx); 3.2.1仔细看esp_event_loop_init的源码 3.2.1.1继...

zhejfl的博客 2045

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ap模式和sta模式共存_ESP8266 RTOS 开发笔记(1)STA+AP模式(共存)

RTOS的示例程序里面分别有STA和AP的示例,由于项目需要,要是用STA+AP工作模式;之前将STA和AP的参数放在一起定义,导致一直只能启动STA;分开单独定义即可。STA和AP参数定义wifi_config_t wifi_config_ap = {.ap = {.ssid = EXAMPLE_ESP_WIFI_SSID,.ssid_len = strlen(EXAMPLE_ESP_WIFI_...

weixin_39631261的博客 1452

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

esp32之wifi状态机

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/fengfeng0328/article/details/82824499 对于esp32模组来说,wifi是重中之重,没有wifi的esp32绝对是个大冷门,下面来探讨一下esp32wifi的工作原理: 分析代码,路径esp-idf/...

g200407331的专栏 773

Android wifi连接

Android wifi讲解,主要分为三个步骤: 1、开启wifi 2、查找AP 3、连接指定AP

冯海林的专栏 2083

linux获取wifi连接状态源码_WIFI实战应用第一章 ESP32建立一个热点的流程

学习目的及目标· 掌握WIFI的状态机结构· 掌握乐鑫新建热点(AP)的程序ESP32的WiFi特点· WiFi可作为AP、STA、AP+STA三种模式· 作为AP时,可以被4个STA连接· AP 是 (Wireless) AccessPoint 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似 TPLINK_XXX ...

weixin_39647773的博客 638

Android WIFI模块分析

一:什么是WIFI WIFI是一种无线连接技术,可用于手机、电脑、PDA等终端。WIFI技术产生的目的是改善基于IEEE802.11标准的无线网络产品之间的互通性,也就是说WIFI是基于802.11标准的,但WIFI不等同无线网络。 二:Android平台下的WIFI模块 简单介绍一下,WIFI模块的基本功能: 1. 开关WIFI 除了在WIFI设置界面可以开关WIFI,

882
上一篇: TCP和UDP
下一篇: service和activity通信
litefish
博客等级 码龄12年 116粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值