Android音频开发及录音文件的配置
一、Android音频开发(一):音频基础知识二、Android音频开发(二):录制音频(WAV及MP3格式)三、Android音频开发(三):使用ExoPlayer播放音频四、Android音频开发(四):音频播放模式五、Android音频开发(五):感应(息屏/亮屏)管理
附GitHub源码:MultimediaExplore
(相关资料图)
首先看下音频录制跟播放效果简图:
CSDN不支持本地视频上传,我就先上传了一张截图:
上面是录音:长按即可录音,支持声波动画,右滑删除等。支持录制pcm、wav、mp3格式音频。
下面是播放:点击左边扬声器icon,开始播放刚录制的本地音频文件【也支持在线音频播放】,支持播放进度,支持切换播放模式(听筒/扬声器/耳机)等。
一、音频录制权限:
无论在做开发任何功能之前,总得先添加及申请相关权限,后续的工作才能正常进行下去。音频录制所需权限如下,而且要在代码中动态申请这些敏感权限,同意后才能正常录制:
二、录音文件的配置:
通过第一节讲到音频的基础概念可知,在录制音频前应先进行录制的相关配置,它直接决定了录音文件的音频质量、文件大小、音频格式等。
/** * 录音音频的相关配置 */ private void initConfig() { recordConfig = new RecordConfig(); //采样位宽 recordConfig.setEncodingConfig(AudioFormat.ENCODING_PCM_16BIT); //录音格式 recordConfig.setFormat(RecordConfig.RecordFormat.MP3); // recordConfig.setFormat(RecordConfig.RecordFormat.WAV); //采样频率 recordConfig.setSampleRate(16000); String recordDir = String.format(Locale.getDefault(), "%s/Record/zhongyao/", Environment.getExternalStorageDirectory().getAbsolutePath()); //存储目录 recordConfig.setRecordDir(recordDir); AudioRecordManager.getInstance().setCurrentConfig(recordConfig); }
三、音频录制:
音频录制类主要有两个封装类:分别是AudioRecorder 、AudioRecordManager。
AudioRecorder:主要是使用系统的AudioRecord来进行录音。并把录制好的音频文件进行合并,转码等,生成我们所需的音频文件。该文件是全局单例的,保证音频录制类只有一个实例。
AudioRecordManager:对AudioRecorder的封装管理,与外界交互均通过此类来完成,包括录音的各种生命周期控制调用等。减少了外界与AudioRecorder的直接交互,已达到对录音类的更好的管理,此类也是一个全局单例类。
1、录音对象初始化:
这里主要根据之前的录音配置,生成 bufferSizeInBytes【缓冲区字节大小】,和audioRecord对象。
/** * 创建默认的录音对象 */ public void prepareRecord() { // 获得缓冲区字节大小 if (bufferSizeInBytes == 0) { bufferSizeInBytes = AudioRecord.getMinBufferSize(currentConfig.getSampleRate(), currentConfig.getChannelConfig(), currentConfig.getEncodingConfig()); } if (audioRecord == null) { audioRecord = new AudioRecord(AUDIO_INPUT, currentConfig.getSampleRate(), currentConfig.getChannelConfig(), currentConfig.getEncodingConfig(), bufferSizeInBytes); } audioRecordStatus = AudioRecordStatus.AUDIO_RECORD_PREPARE; }
2、录制wav音频文件:
wav音频文件是无损的,所以音质会接近原生,但也正是因为是无损的,所以wav音频文件几乎没有压缩,相对来说会比较大。
录制wav音频得先进行录制采用,获得pcm文件,然后把pcm文件合并,最后再转成wav音频文件。
(1)开始录制pcm文件:
private void startPcmRecorder() { audioRecordStatus = AudioRecordStatus.AUDIO_RECORD_START; notifyState(); Logger.d(TAG, "开始录制 Pcm"); FileOutputStream fos = null; try { fos = new FileOutputStream(tmpFile); audioRecord.startRecording(); byte[] byteBuffer = new byte[bufferSizeInBytes]; while (audioRecordStatus == AudioRecordStatus.AUDIO_RECORD_START) { int end = audioRecord.read(byteBuffer, 0, byteBuffer.length); notifyData(byteBuffer); fos.write(byteBuffer, 0, end); fos.flush(); } audioRecord.stop(); files.add(tmpFile); if (audioRecordStatus == AudioRecordStatus.AUDIO_RECORD_STOP) { makeFile(); } else { Logger.d(TAG, "取消录制..."); } } catch (Exception e) { Logger.e(e, TAG, e.getMessage()); notifyError("录音失败"); } finally { try { if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } if (audioRecordStatus != AudioRecordStatus.AUDIO_RECORD_PAUSE) { audioRecordStatus = AudioRecordStatus.AUDIO_RECORD_IDLE; notifyState(); Logger.d(TAG, "录音结束"); } }
(2)合并生成的多个pcm文件:
/** * 合并pcm文件 */ private void mergePcmFile() { boolean mergeSuccess = mergePcmFiles(resultFile, files); if (!mergeSuccess) { notifyError("合并失败"); } }
(3)将合并好的pcm文件转成wav文件:
/** * 添加Wav头文件 */ private void makeWav() { if (!FileUtil.isFile(resultFile) || resultFile.length() == 0) { return; } byte[] header = WavUtils.generateWavFileHeader((int) resultFile.length(), currentConfig.getSampleRate(), currentConfig.getChannelCount(), currentConfig.getEncoding()); WavUtils.writeHeader(resultFile, header); }
3、录制MP3音频文件
相比WAV音频文件而言,MP3音频文件,就更加常见,商业上使用的也比较多,就是因为MP3音频时经过压缩的,文件大小只有WAV的十二分之一,但是音质上几乎没有较大的差异性。当对音质没有极高要求的情况下,如录音文件,MP3格式是极好的选择。
(1)开始录制音频缓存:
这里有开启一个线程Mp3EncodeThread,将录音产生的字节数组byteBuffer不断的进行编解码生成MP3文件。
private void startMp3Recorder() { audioRecordStatus = AudioRecordStatus.AUDIO_RECORD_START; notifyState(); try { audioRecord.startRecording(); short[] byteBuffer = new short[bufferSizeInBytes]; while (audioRecordStatus == AudioRecordStatus.AUDIO_RECORD_START) { int end = audioRecord.read(byteBuffer, 0, byteBuffer.length); if (mp3EncodeThread != null) { mp3EncodeThread.addChangeBuffer(new Mp3EncodeThread.ChangeBuffer(byteBuffer, end)); } notifyData(ByteUtils.toBytes(byteBuffer)); } audioRecord.stop(); } catch (Exception e) { Logger.e(e, TAG, e.getMessage()); notifyError("录音失败"); } if (audioRecordStatus != AudioRecordStatus.AUDIO_RECORD_PAUSE) { if (audioRecordStatus == AudioRecordStatus.AUDIO_RECORD_CANCEL) { deleteMp3Encoded(); } else { stopMp3Encoded(); } } else { Logger.d(TAG, "暂停"); } }
(2)MP3音频编解码:
Android原生的音频录制,支持直接生成WAV文件,但其实是不支持直接生成MP3文件的。这里对应MP3编解码,主要用到了开源的 libmp3lame.so 这个音频编解码库。以下是lame编解码方法及Mp3Encoder类:
MP3编解码方法:
private void lameData(ChangeBuffer changeBuffer) { if (changeBuffer == null) { return; } short[] buffer = changeBuffer.getData(); int readSize = changeBuffer.getReadSize(); if (readSize > 0) { int encodedSize = Mp3Encoder.encode(buffer, buffer, readSize, mp3Buffer); if (encodedSize < 0) { Logger.e(TAG, "Lame encoded size: " + encodedSize); } try { os.write(mp3Buffer, 0, encodedSize); } catch (IOException e) { Logger.e(e, TAG, "Unable to write to file"); } } }
Mp3Encoder类:
public class Mp3Encoder { static { System.loadLibrary("mp3lame"); } public native static void close(); public native static int encode(short[] buffer_l, short[] buffer_r, int samples, byte[] mp3buf); public native static int flush(byte[] mp3buf); public native static void init(int inSampleRate, int outChannel, int outSampleRate, int outBitrate, int quality); public static void init(int inSampleRate, int outChannel, int outSampleRate, int outBitrate) { init(inSampleRate, outChannel, outSampleRate, outBitrate, 7); }}
(3)生成libmp3lame.so:
本项目提供的源码中有lame的jni源码,如果想生成libmp3lame.so文件,供自己的项目使用,那么需要对Mp3Encoder.c 和Mp3Encoder.h文件进行修改,然后通过ndk build 生成该so文件。
修改的内容主要是把文件中的Mp3Encoder路径改成自己项目中的Mp3Encoder的路径,否则会找不到相关的native方法。
另外一般情况下,cpu类型支持 armeabi-v7a 、arm64-v8a 两种即可,如果想支持其他的可在Application.mk中添加。
上面文件修改完毕,通过ndk-build指令即可编译生成对应的 libmp3lame.so 文件。
将so不同CPU类型的文件放置 jniLibs 下,或者通过sourceSets配置的路径下,如:
sourceSets.main { jni.srcDirs = []//disable automatic ndk-build call jniLibs.srcDirs = ["libs"] }
即可进行MP3音频格式的录制。
四、音频录制管理【AudioRecordManager】:
通过全局单例模式的AudioRecorderManager与业务进行交互,即保证了音频录制实例的单一性,又能较好的对音频生命周期等进行较好的管理。
/** * Create by zhongyao on 2021/8/18 * Description:音频录制管理类 */public class AudioRecordManager { private static final String TAG = "AudioRecordManager"; private AudioRecordManager() { } public static AudioRecordManager getInstance() { return AudioRecordManagerHolder.instance; } public static class AudioRecordManagerHolder { public static AudioRecordManager instance = new AudioRecordManager(); } public void setCurrentConfig(RecordConfig recordConfig) { AudioRecorder.getInstance().setCurrentConfig(recordConfig); } public RecordConfig getCurrentConfig() { return AudioRecorder.getInstance().getCurrentConfig(); } /** * 录音状态监听回调 */ public void setRecordStateListener(RecordStateListener listener) { AudioRecorder.getInstance().setRecordStateListener(listener); } /** * 录音数据监听回调 */ public void setRecordDataListener(RecordDataListener listener) { AudioRecorder.getInstance().setRecordDataListener(listener); } /** * 录音可视化数据回调,傅里叶转换后的频域数据 */ public void setRecordFftDataListener(RecordFftDataListener recordFftDataListener) { AudioRecorder.getInstance().setRecordFftDataListener(recordFftDataListener); } /** * 录音文件转换结束回调 */ public void setRecordResultListener(RecordResultListener listener) { AudioRecorder.getInstance().setRecordResultListener(listener); } /** * 录音音量监听回调 */ public void setRecordSoundSizeListener(RecordSoundSizeListener listener) { AudioRecorder.getInstance().setRecordSoundSizeListener(listener); } public void setStatus(AudioRecordStatus curAudioRecordStatus) { switch (curAudioRecordStatus) { case AUDIO_RECORD_IDLE: break; case AUDIO_RECORD_PREPARE: AudioRecorder.getInstance().prepareRecord(); break; case AUDIO_RECORD_START: AudioRecorder.getInstance().startRecord(); break; case AUDIO_RECORD_PAUSE: AudioRecorder.getInstance().pauseRecord(); break; case AUDIO_RECORD_STOP: AudioRecorder.getInstance().stopRecord(); break; case AUDIO_RECORD_CANCEL: AudioRecorder.getInstance().cancelRecord(); break; case AUDIO_RECORD_RELEASE: AudioRecorder.getInstance().releaseRecord(); break; default: break; } } public AudioRecordStatus getStatus() { return AudioRecorder.getInstance().getAudioRecordStatus(); } public String getAudioPath() { return AudioRecorder.getInstance().getAudioPath(); }}
标签: 音频文件
相关推荐:
精彩放送:
- []环球今亮点!美原油交易策略:欧美银行业危机担忧笼罩市场,油价创逾十五个月新低
- []环球快资讯:广州从化太平镇4宗商务金融用地使用权整体拍卖流拍 变卖价约1.4亿
- []国信期货日评:原油持续下挫,燃料油走弱,期螺高开低走
- []环球微动态丨辽宁:1-2月房地产开发投资下降16.6%
- []3月20日姚记科技涨停分析:游戏,手游,独角兽概念热股
- []最资讯丨封神榜妲己封的什么神?关于妲己的故事是什么?
- []广州:2023年计划安排建设用地供应总量3203公顷
- []播报:汩罗是湖南哪个市?汩罗资料介绍?
- []全球热推荐:格力博:公司未在硅谷银行开户,也没有存款
- []每日快讯!重庆市东坡商业广场有限公司金融债权首拍流拍 当前价1.25亿元
- []世界速读:工程造价是什么?工程造价怎么解释?
- []每日看点!qq个性说说怎么写?qq个性说说有哪些?
- []【世界新要闻】3月20日上海电影涨停分析:影视,上海国企改革,国企改革概念热股
- []全球速看:3月20日中天科技涨停分析:铜箔/覆铜板,储能,风电概念热股
- []凤凰传媒:公司近期生产经营正常
- []环球实时:西安曲江文化控股10亿元中期票据将付息 利率5.20%
- []焦点速讯:什么是机关行政管理?行政机关管理是指什么?
- []当前时讯:【风口研报】超预期出现!AIGC三大核心概念曝光 又有大利好!特高压也迎来风口
- []每日观点:笛子高音上不去的原因_高音上不去怎么办
- []焦点滚动:光明房产8亿元中期票据完成发行,利率3.73%
- []全球要闻:【中指快评】无锡出台《关于进一步促进房地产市场健康发展若干措施的通知》
- []贝壳研究院:3月首套房贷利率微降 银行放款加速
- []当前最新:2月郑州全市商品住房销售12583套,135.71万平方米,环比增长118.25%
- []新资讯:共同药业:截只2022年2月28日公司股东人数为17015人
- []华熙LIVE·五棵松入选第二批国家级旅游休闲街区名单
- []热点聚焦:中国建筑兴业:2022年实现营业收入76.68亿港元
- []当前头条:徐工机械:经核实,2023年2月份公司下属公司徐州徐工液压件有限公司不存在污染物排放超标情况
- []信息:分期乐是正规借款平台吗
- []社保卡里面的钱可以取出来吗
- []【世界独家】360借条是正规的吗
- []观点:纬景储能A轮融资超6亿
- []多路资金集结进场 机构看好经济复苏主线
- []微众银行企业贷款可靠吗
- []焦点关注:养老保险个人一年多少钱
- []天天微动态丨江苏无锡:优化住房限购范围 适当调整限购区域
- []财面儿丨绿城管理控股2022年归母净利润7.45亿元 同比增长31.7%
- []环球短讯!和林微纳:截至2023年3月10日公司股东数为3621
- []天天新动态:龙建股份:截至目前公司尚未在俄罗斯参与相关项目。请以公司的信息披露为准
- []润和软件:请您参照互动易上公司对前述类似问题的
- []【BT金融分析师】铁矿石三巨头之一力拓集团被机构看好,分析师聚焦其锂矿业务
- []银行贷款利率表
- []工行跨行转账手续费
- []全球动态:恒大清盘呈请聆讯再获延期 行政总裁肖恩回应
- []环球观察:一张图:黄金原油外汇股指"枢纽点+多空占比"一览(2023/03/20周一)
- []天天快看点丨祥明智能:通信系统是公司重要的行业应用领域,公司的风机应用于通信基站设备
- []天天要闻:平安保险客服24小时电话
- []全球今热点:里夫斯35+6+6湖人力克魔术 浓眉15+11班凯罗21分
- []股票私募也卷起来了!百亿私募开打价格战 只收千分之五管理费 后市怎么看?
- []要闻速递:五一出境跟团游已经进入预订高峰,携程:海外跟团游预订上涨167%
- []【天天快播报】众安保险600万医疗保险是真的吗
- []矿商称未来几个月金价将保持强势,今年能达到2000美元!
- []【BT金融分析师】名创优品在海外加快开店,分析师称警惕其库存积压风险
- []今日精选:【东海期货3月20日产业链日报】能化篇:等待联储决策,市场继续承压
- []全球报道:良品铺子端午礼盒团购新品大会:过节送礼送良品,引领高品质礼盒市场热销
- []通宇通讯:公司暂未有相关产品
- []今日最新!光线传媒:影片的票房收入和成本会在影片上映后一并确认
- []世纪佳缘紧贴时代发展需求 领跑婚恋市场
- []环球快报:湖南裕能:这个问题要问电池厂比较好
- []中信银行客服电话
- []建行客服95533怎么转人工
- []向往诗和远方的中产群体,愿意为小而精的房车旅行买单吗?
- []世界热点!如何自学微积分?自学微积分的方法有哪些?
- []五险一金指什么
- []资讯推荐:微店是什么?微店有哪些阵营?
- []每日消息!怎样建造钓鱼场?建造钓鱼场的方法有哪些?
- []花呗逾期暂时无力还款应该怎么解决
- []全球热文:降准是什么意思
- []【速看料】江西兴国县属于哪个市?江西兴国县资料介绍?
- []奥斯汀里弗斯为什么是白人?奥斯汀里弗斯资料介绍?
- []全球新动态:名门劫的演员有哪些?名门劫讲述了什么故事?
- []当前焦点!山西省洪桐县有哪些乡镇?山西省洪桐县乡镇资料介绍?
- []世界观点:鱼子酱眼霜有什么作用?鱼子酱眼霜有哪些功效?
- []硬盘当前待映射扇区警告怎么修复?硬盘当前待映射扇区警告的修复方法?
- []天天要闻:喜出望外的意思是什么?喜出望外出处是哪里?
- []【环球热闻】遥望科技:您也可以登录公司签约合作明星、主播的直播间观看
- []中国广核:1)根据在建项目进度,2023年上半年,防城港3号机组将投产,投产后公司装机增长约4%
- []全球信息:3月LPR报价:1年期与5年期以上均维持不变
- []当前快报:致敬商办新势力 中国写字楼产业园发展论坛年会在京举办
- []中公教育:子公司以自有资产抵押向银行申请贷款
- []每日看点!蓝天燃气:公司主要从事河南省内的管道天然气业务、城市燃气等业务
- []环球热议:弩针毒杀家犬、野狗4000余斤 检察机关提起刑事附带民事公益诉讼
- []酒旅市场“春风吹遍”,如何抓住复苏商机?
- []世界热文:中信建投期货3月20日早间交易策略
- []【环球时快讯】房地产市场出现积极变化
- []每日消息!广州酒家:1.公司每季度公布的经销商数量不包含饼屋店和餐饮店
- []今日热闻!获取保租房申请资格要收费?别信
- []天天快消息!惠云钛业:目前公司生产经营一切正常,一季报业绩请留意后续发布的一季度报告
- []星网锐捷:公司会关注行业的发展情况并根据自身的实际情况制定相应的发展战略
- []环球聚焦:陈光明最新发声!投资要尊重常识 敢于质疑 在中国做价值投资行得通!
- []国泰君安:超预期降准的三点理解 对冲流动性波动
- []环球热点!储能站上风口 一场储能大会厘清行业发展未来
- []每日看点!中泰证券:银行股核心逻辑是宏观经济 坚持确定性增长和修复逻辑两条主线
- []聚焦用户侧!索比储能网“新能源+储能”协同发展论坛即将举办!
- []今日聚焦!新能源配储技术导则出台!储能产业发展迈向标准化、规模化
- []停牌房企的复牌选择题
- []天天速递!春季眼屎多?可能是眼睛感染了!缓解方法在这~
- []每日短讯:外汇交易提醒:瑞银以30亿瑞郎收购瑞信,避险降温美元短线或承压
- []视焦点讯!川恒股份:公司目前已建成10万吨/年磷酸铁产线且已投入生产,另有10万吨/年磷酸铁产线正在建设中
- []看点:恒大在深圳最值钱的项目,被这家央企“接盘”后取消了保障房
- []富瑞特装:公司近期LNG车用供气系统产品的市场形势有所回暖
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 世界聚焦:恒大在深圳最值钱的项目被招商“接盘”后,取消了保障房……
- 天天速讯:爆雷火烧联营 房企忙着分家
- 全球球精选!差旅管理的集中支付,离真正实现资金闭环还有多远?
- 天天关注:小鹏面临掉队危机,何小鹏被卷到一周干七天活
- 世界看点:日出江花红胜火
- 全球快看点丨横跨数十公里!澳大利亚一条河惊现数百万条死鱼,已是第三次发生
- 红星美凯龙员工购股计划第二、三期存续期延长至2024年1月28日
- 新资讯:稻香控股预期2022年归母净亏损扩大为1.4亿至1.5亿港元
- 世界看热讯:星空华文预期2022年溢利亏转盈 净溢利1.1亿元至1.25亿元
- 天天新动态:福州连江县2023年首宗土地录17轮角逐 成交价为1.46亿元
- 华大酒店2022年录得收入4.39亿港元 归母净利润5.93亿港元
- 天天热消息:福州数字内容产业园31%股权被挂牌 项目总建面12.4万平米
- 银行活期存款利息
- 全球速读:顺豪控股2022年归母净利润2.58亿港元 按年增加2.28亿港元
- 【当前独家】丽丰控股预期中期归母净亏损扩大为1.7亿港元至1.8亿港元
- 当前讯息:香港小轮2022年除税后综合溢利12.99亿港元 同比增加999%
- 全球信息:广州南沙发放惠民补贴1千万元 预计带动文旅体消费近1亿元
- 每日动态!TOP TOY的一些补录!【2023-3-19积木新品情报】
- 全球微动态丨净利飙涨500%!又一光伏跨界者成功逆袭!
- 【全球新要闻】各银行定期存款利率
- 天天最新:工行利率2022存款最新公告
- 天天新资讯:重磅利空!中国光伏或遭遇“倒春寒”
- 世界今头条!广发策略:“破晓”行情等待“4月决断” 主线逐渐明朗
- 从店长到锦江酒店(中国区)执行副总裁,一位酒店人的17年
- 联合国或将改革,英国力挺日本当常任理事国,美国这回却失声了
- 广东华兴银行:以优质综合金融服务助力广东高质量发展
- 住房公积金个人怎么提取
- kpi是什么意思
- 每日讯息!微粒贷怎么开通
- 环球热资讯!一般车险都买那些
- 当前时讯:退货的时候千万别选择退运费会影响买家吗
- 信息:经济日报金观平:压实资本市场“看门人”责任
- 什么是意外险
- 热门:2023三年期大额存单五大银行利率
- 赛象科技:公司未参与该业务工程建设
- 天天视点!lpr利率是什么意思
- 滴水贷是正规平台吗
- 当前头条:道路救援是什么
- 每日消息!什么叫股权
- 乐花卡借钱是正规平台吗
- 财报金选丨龙湖的而立之年:稳健的基本盘与看得见的未来
- 房屋贷款怎么计算
- 【天天速看料】太平洋保险电话
- 环球微速讯:抓住商旅复苏机遇,如何提升企业和酒店的连接效率?
- 世界热议:xd股票是什么意思
- 世界快看点丨单片机仿真软件Proteus最新中文版,Proteus软件安装激活教程下载
- 世界新动态:什么叫趸交
- 焦点播报:意外险包含哪些
- 焦点快报!etc怎么办理
- 【独家焦点】通货膨胀什么意思
- 世界快消息!炒股开户流程
- 一般车险买哪几种
- 每日焦点!网上怎么购买车险便宜
- 全国2021年gdp总量排名 各省gdp一览
- 全球热消息:海风龙头下周解禁市值超270亿,解禁股名单来了!
- 环球热议:银行卡可以跨行转账吗
- 天天速看:360借条正规吗,合法吗?
- 环球热推荐:人民币贬值是什么意思啊,货币的价值下降
- 高温抗旱概念股有哪些,高温抗旱优质股票盘点
- 即时焦点:个人账户养老金是什么意思,是退休以后享受的养老积蓄
- 环球观天下!长城歌曲黄家驹歌词_长城歌曲黄家驹
- 世界实时:龙湖30年,没有浪费任何1次危机
- 基金到期怎么赎回
- 深圳惠民保险怎么买
- 医疗险是什么
- 支付宝聚合二维码如何申请
- 中国十大养老企业,优质龙头股盘点
- 【环球热闻】农行ah股上市时间
- 全球实时:如何选择定投基金产品
- 天天热讯:腾讯上市时间
- 世界快看点丨建行账户管理费,也称为小额账户管理费
- 环球视点!用支付宝登录淘宝为什么被限制登录怎么办?
- 金价会持续下跌吗
- 每日快讯!车险一般买哪几种 车险需要买哪些
- 打新股票的基金有哪些 打新股的基金有哪几个
- 每日时讯!中国最牛的基金经理有哪些人
- 每日短讯:新版100元人民币真假鉴别
- 就在3月23日,十字路口的物业服务力量即将揭晓
- 当前通讯!所罗门格兰迪红军版_所罗门格兰迪
- 当前热议!大学贷款需要什么条件才可以贷款,有以下7个条件
- 农业银行学费网上缴费怎么交
- 热头条丨民生银行借记卡积分怎么兑换
- 基本养老金是什么意思
- 天天快报!2021全国gdp排名,各城市gdp一览
- 每日视点!挽救民族危亡的斗争ppt_挽救
- 时讯:卖出开仓和卖出平仓有啥区别
- 今日热文:怎么选基金
- 当前关注:st股票有哪些,st股票一览
- 全球新消息丨脱欧是什么意思 脱欧的含义是什么
- 【天天时快讯】股票熔断机制是什么意思
- 环球热头条丨第二年的车保险怎么买
- 环球即时看!房贷利率转换LPR是什么意思
- 天天报道:2022个人所得税怎么退税步骤,有以下5个步骤
- 焦点速读:微信怎么领取疫情补贴2000,有以下五个领取流程
- 全球头条:美加息对中国股市影响
- 微头条丨蚂蚁金服最大股东是谁 蚂蚁金服里的第一大股东是谁
- 股票价格计算公式 股票价格的计算方式是什么
- 短线股票推荐 短线的股票有哪些
- 环球新消息丨15年自费买养老保险划算吗,划算
- 企业基金是什么 一项专用基金