FM app在保存录音文件时,保存的位置如何实现跟随默认存储位置的改变而改变?

基于Si4731与PIC18LF45K22的FM/AM收音机系统设计 数字收音机系统是现代嵌入式开发的典型应用,其核心原理是通过I2C总线实现微控制器与专用收音芯片的通信。Si4731作为高性能广播调谐器芯片,支持全球FM/AM接收,配合PIC18LF45K22微控制器的低功耗特性,可构建高效能收音设备。在工程实践中,这种组合特别适合需要RDS数据显示和频率存储的场景。通过优化天线匹配网络和电源管理设计,系统接收灵敏度可显著提升,工作电流控制在20mA以下,非常适合便携式应用开发。 阅读详情

 FM app在保存录音文件时,保存的位置不会随默认存储位置的改变而改变;默认存储位置选择sd卡或内置卡时,fm的录音文件都只会保存在同一位置。如何实现当默认存储位置选择sd卡或内置卡时,fm的录音文件也会存储在对应的sd卡或内置卡?


 1、在vendor\mediatek\proprietary\packages\apps\fmradio\src\com\mediatek\fmradio\FmRadioUtils.java 
public static String getDefaultStoragePath() {
// return Environment.getExternalStorageDirectory().getPath();//delete this line
return StorageManagerEx.getDefaultPath(); //add this line
}


将获取主卡路径改为获取默认路径
2、 在vendor/mediatek/proprietary/packages/apps/FmRadio/AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" /> 

对副卡有write权限

基于STM32与Si4731的数字收音机系统开发指南 数字收音机系统通过集成数字信号处理技术,实现了广播信号的稳定接收与处理。其核心原理是利用I2C接口控制收音芯片,实现频率调谐、信号解调等功能。这种技术方案相比传统模拟电路设计,具有更高的灵活性和可编程性,特别适合嵌入式系统开发。在工程实践中,STM32微控制器与Si4731收音芯片的组合,能够构建完整的收音机系统,支持AM/FM等多种波段。通过合理的天线设计和信号处理算法优化,可以显著提升接收质量。本项目展示了如何利用I2C通信协议控制Si4731芯片,实现包括自动搜台、音量调节在内的完整收音功能,为嵌入式 阅读详情

相关推荐

Si4731与STM32F217ZG构建高性能数字收音机系统

数字信号处理(DSP)在现代嵌入式系统中扮演着核心角色,特别是在音频处理领域。通过ARM Cortex-M系列微控制器的高效运算能力,开发者能够实现从基础音频解码到复杂均衡处理的完整信号链。Si4731作为高度集成的AM/FM接收芯片,与STM32F217ZG的完美配合展现了硬件协同设计的价值。这种组合特别适合便携式音频设备开发,既能满足低功耗需求,又可通过FPU实现音频效果处理。RDS数据解析和I2C通信等关键技术为产品增添了智能交互维度,而CMOS工艺则确保了系统的紧凑性和能效比。

weixin_33709609的博客 398

功能:插入耳机,提示打开与耳机相关的app

为了方便用户使用,插入耳机,提示打开与耳机相关的app,如图: 1、接收耳机插入广播 public class AssisstBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated m

sanlei1616的专栏 1597

FM收音机 FM Radio v2.1-update1 汉化版_DOSPY

FM收音机 FM Radio v2.1-update1 汉化版_DOSPY

Android12 FM Radio按键距离太近

界面按钮部分重叠,在源码没啥问题的情况下,我觉得应该跟分辨率有关。

weixin_43824153的博客 871

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

SIMetrix教程-001.SIMetrix软件简介与安装

  由于某些原因需要用到SIMetrix仿真软件,然而网上的资料并不是特别多,故在此记录一下这款仿真软件的学习过程,也给有需要的人提供一些参考,免走弯路。如果使用过Pspice或者LTspice软件,学习SIMetrix会很容易入门,仿真软件都是大同小异的,会一样后都可以快速入门其他软件。   SIMetrix是一款以SPICE模型为基础的仿真软件,集成了SIMetrix和SIMPLIS两款内核,为工程师提供了可靠的、易于使用的、并完美结合了速度与精度的电路仿真方式。官方的话不多说,和LTspice一样,优

gaoyong_wang的博客 2万+

FAQ13878][Audio APP]收音机 APP 添加耳机hook键,以实现播放、暂停的功能

[DESCRIPTION]    [New Feature]收音机播放时,按下耳机hook键,收音机暂停;若再次按hook键,收音机又会播放   [SOLUTION]   一、 修改FmRadioService.java 1.在文件头部添加:  import android.content.ComponentName;  import android.m

欢迎加入Android老司机学院 482266514(技术交流群)密码优快云 1292

GitHub工业级开源利器:StreamPipes如何简化工业物联网数据分析

Apache StreamPipes是一款GitHub上的工业级开源利器,旨在简化工业物联网数据分析。它通过图形化界面连接各类工业协议数据源,以拖拽方式构建流处理管道,并实现实时可视化,有效降低了数据分析的技术门槛,让业务人员也能自助完成从数据接入到洞察的全流程。

weixin_29279153的博客 199

改变“我的文档”的默认位置

     Windows 98总是将我们编辑的文档自动保存在"我的文档"(C:/My Documents)文件夹中,这个看似体贴用户的设计有时却给我们带来了麻烦。当一台电脑被多个人同时使用时,我们如果希望将自己的文件保存在自己特定的文件夹中,那么就可以按照下面的方法进行设置:        在桌面上的"我的文档"的图标上单击鼠标右键,选择"属性"。   然后在"目标"中输入自己喜欢的文件夹

yuanxxn的专栏 745

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1220

arcgis导出自身相交数据

今天接到一个客户需求,一份面文件,里面有好多元素是两两相交甚至是三个相交的,现在要把这些重叠部分提取出来,并且把相交部分的原始要素的名称也保留在字段中,也就是说名称这个会有好多个名称字段,如果两个要素相交那就是前两个名称字段有值,后面的为空,如果是三个要素相交,那么输出的这个要素就是前三个名称字段有值,后面的为空,嗯,这里也不太确定会出现多少个名称字段,这个需要依照数据来定。 这是原始数据,...

miaowumi92的博客 6790

android 申请sdcard权限_Android 6.0 读写SD卡权限问题

一、问题描述##Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中【预置条件】插入T卡【操作步骤】设置>存储设备和USB>选择SD卡为默认存储>收音机录音【实际结果】收音机的录音文件未保存到T卡【预期结果】收音机的录音文件保存到T卡【复现概率】10/10此外,SoundRecorder默认存储SD卡,生成的文件却可以保存到SD卡中二、问题分...

weixin_39913117的博客 503

VS Code配置Java开发环境避坑指南:从JDK到Spring Boot插件全流程

本文详细介绍了在VS Code中配置Java开发环境的完整流程,涵盖JDK选择、环境变量配置、核心插件安装、构建工具优化及Spring Boot项目专项设置。特别针对常见问题提供避坑方案,帮助开发者快速搭建高效稳定的开发环境,提升Java和Spring Boot开发效率。

weixin_28839699的博客 985

Android 6.0 读写SD卡权限问题

Android 6.0 读写SD卡权限问题, 运行时权限检查 Android M SD卡读写权限

sage_wang的博客 1万+

1.2 从“跟网”到“构网”:技术范式的历史性转变

新型电力系统面临"双高"特征带来的稳定性挑战,促使并网控制技术从"跟网型"向"构网型"范式转变。传统跟网型变流器作为受控电流源依赖强电网,存在短路电流能力有限、易失稳等缺陷;而构网型变流器模拟同步发电机特性,作为受控电压源具备自主建立电压/频率、提供虚拟惯性、增强短路容量和改善系统阻尼四大核心能力。这一技术范式转变使变流器从电网跟随者变为构建支撑者,成为解决新能源大规模接入稳定性的关键。

技术工作者 725

斑鬣狗优化算法(SHO)详解:从生物原理到代码实战

斑鬣狗优化算法(SHO)是一种新型元启发式优化算法,灵感来源于斑鬣狗的群体狩猎行为。该算法通过模拟斑鬣狗的包围猎物、协同狩猎和攻击猎物等生物行为,将优化问题转化为智能搜索过程。SHO算法包含探索与开发两个阶段,通过数学模型实现群体协作和自适应平衡,具有参数简单、收敛快等优势。文章系统介绍了SHO的生物基础、数学模型、实现方法(包括MATLAB和Python代码)、改进策略以及在函数优化、路径规划等领域的应用案例,最后讨论了算法的优势、局限性和未来研究方向。

qq_42212808的博客 237

APP权限越界:多款APP开启与主业无关的敏感权限

爱奇艺优酷开启与主业无关隐私权限,新京报记者测试20款APP,赶集网等4款未明示提醒涉及隐私权限,美团外卖等未明示隐私协议   1月11日,工信部信息通信管理局约谈了百度、支付宝和今日头条,指出对照《网络安全法》、《电信和互联网用户个人信息保护规定》等有关规定,三家企业均存在用户个人信息收集使用规则、使用目的告知不充分的情况,并要求三家企业进行整改。 /*文章页正文*/ var

中国财经 996

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PerfView 下载与部署指南:获取官方版本、校验数字签名与单文件运行

本指南以 PerfView 官方下载文档 [documentation/Downloading.md](https://link.gitcode.com/i/7de1f419d7f063140a4c6601ea7f6595) 为骨架,完整讲解如何获取 PerfView 的官方发行版本、如何通过官方快捷链接与命令行脚本化下载、如何校验 Microsoft 数字签名,以及为何只需一个 `PerfVie

gitblog_01193的博客 150

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 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")

QOwnNotes 在 Slackware Linux 上的安装指南:SlackBuilds 源码构建与系统密钥环配置

> 本文基于 QOwnNotes 官方安装文档(英文原版见 [webpage/src/installation/slackware.md](https://link.gitcode.com/i/92d21afd8a6566de2ef8aa9e5eb0fa13),匈牙利语镜像见 [webpage/src/hu/installation/slackware.md](https://link.gitco

gitblog_00383的博客 29

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Flutter 开源社交电商项目Flutter_Mycommunity_App

Flutter 开源社交电商APP,实现了推荐,搜索,支付,IM即时通讯,地图定位,语音,图片上传等等常用的功能

sunchaohuang的专栏 8588

MAS 激活脚本 3 步完成 Windows 11 与 Office 永久激活完整指南

MAS(Microsoft-Activation-Scripts)是开源的 Windows 与 Office 激活工具,一条 PowerShell 命令即可完成激活,支持 HWID、Ohook、TSforge、Online KMS 四种方式,还附带状态检查、版本切换和故障诊断,无需安装任何软件。 ## 📋 开始前的自查清单 - **系统版本**:Win 8.1 / 10 / 11 走 Pow

gitblog_01123的博客 184

终极SDR软件指南:10分钟掌握跨平台无线电接收技巧

**SDR++** 是一款功能强大的跨平台软件定义无线电应用程序,为无线电爱好者提供了简单直观的操作界面和丰富的功能模块。这款开源SDR软件支持多种硬件设备,让任何人都能轻松开始探索无线电世界的奥秘。无论你是业余无线电爱好者、电子工程学生,还是对无线通信感兴趣的普通人,SDR++都能为你打开一扇通往无线电世界的大门。 ## 🎯 为什么选择SDR++:新手友好的无线电接收工具 在众多SDR软件

gitblog_00088的博客 262

SDR++ 完全指南:从零开始掌握跨平台软件定义无线电

SDR++是一款功能强大且简洁易用的跨平台软件定义无线电应用程序,无论你是无线电爱好者、教育工作者还是专业技术人员,都能通过这款开源软件轻松探索无线电世界的奥秘。作为一款“无臃肿”的SDR软件,它提供了直观的操作界面和丰富的功能模块,支持超过20种主流SDR硬件设备,让无线电接收变得前所未有的简单。 ## 🚀 第一部分:快速入门 - 10分钟上手SDR++ ### 安装指南:选择你的平台

gitblog_00150的博客 469

SDR++ 终极指南:10分钟掌握跨平台软件定义无线电接收技巧

SDR++是一款功能强大的跨平台软件定义无线电应用程序,为无线电爱好者提供了简单直观的操作界面和丰富的功能模块。这款开源SDR软件支持多种硬件设备,让任何人都能轻松开始探索无线电世界的奥秘。无论你是业余无线电爱好者、电子工程师还是通信研究者,SDR++都能为你提供专业的频谱分析和信号接收能力。 ## 🎯 为什么选择SDR++而不是其他SDR软件? 在众多软件定义无线电工具中,SDR++以其独

gitblog_01151的博客 727

SI4735库完整指南:从零开始打造专业级无线电接收器

想要打造自己的专业级无线电接收器吗?🤔 今天我要介绍一个强大的开源项目——**SI4735 Arduino库**,它能让你的Arduino项目轻松实现AM/FM/SW/LW多波段无线电接收功能!这款库是专门为Silicon Labs SI473X系列DSP接收器芯片设计的,支持从150kHz到30MHz的AM/SSB频段和64-108MHz的FM频段。 ## 🎯 什么是SI4735库? *

gitblog_00391的博客 681

SDR++ 终极指南:10分钟打造你的跨平台无线电接收中心

想要零门槛探索无线电世界的奥秘吗?SDR++这款开源软件定义无线电应用将为你打开一扇全新的大门!作为一款功能强大的跨平台SDR软件,SDR++让无线电接收变得前所未有的简单直观,无论你是业余爱好者还是专业用户,都能在几分钟内搭建起自己的无线电接收站。 ## 🎯 为什么选择SDR++作为你的无线电入门神器? ### 跨平台兼容性:一软件通吃所有系统 SDR++最令人称道的特性就是**完美的跨

gitblog_00122的博客 600
上一篇: 2017.06.26 笔记 MTK手机版本信息修改
下一篇: android手机存储8G\16G显示修改
旧时旅人
博客等级 码龄10年 186粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧时旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值