总结
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
}
主要参数
* mFrequency:频率
* mSampleRateInHz:采样率
// 单声道
private int mChannelConfig = AudioFormat.CHANNEL_OUT_MONO;
// 频率
private int mFrequency = 19000;
// 采样率
private int mSampleRateInHz = 44100;
播放音频的线程封装
=========
package kong.qingwei.myapplication;
import android.annotation.TargetApi;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.os.Build;
import android.util.Log;
/**
-
Created by kqw on 2016/8/29.
-
播放音乐的线程
*/
public class ChannelThread extends Thread {
private static final String TAG = "ChannelThread";
private AudioTrack mAudioTrack;
private short[] mData;
/**
* 构造方法
*
* @param channelConfig 声道
* @param sampleRateInHz 采样率
* @param data 音频数据
* @param bufferSize 缓存大小
* @param isLeft 左右声道
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public ChannelThread(int channelConfig, int sampleRateInHz, short[] data, int bufferSize, boolean isLeft) {
mData = data;
mAudioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
sampleRateInHz,
channelConfig,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize,
AudioTrack.MODE_STREAM);
if (isLeft) {
mAudioTrack.setStereoVolume(AudioTrack.getMaxVolume(), 0);
} else {
mAudioTrack.setStereoVolume(0, AudioTrack.getMaxVolume());
}
}
@Override
public void run() {
super.run();
try {
if (null != mAudioTrack) {
mAudioTrack.play();
while (AudioTrack.PLAYSTATE_STOPPED != mAudioTrack.getPlayState()) {
mAudioTrack.write(mData, 0, mData.length);
}
}
Log.i(TAG, "run: End");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放AudioTrack
*/
public void releaseAudioTrack() {
if (null != mAudioTrack) {
mAudioTrack.stop();
mAudioTrack.release();
mAudioTrack = null;
}
}
}
播放
==
mLeftChannelThread = new ChannelThread(mChannelConfig, mSampleRateInHz, mDataLeft, bufferSize, true);
mRightChannelThread = new ChannelThread(mChannelConfig, mSampleRateInHz, mDataRight, bufferSize, false);
mLeftChannelThread.start();
mRightChannelThread.start();
停止
## 最后
总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
![](https://img-blog.csdnimg.cn/img_convert/9900a292a16df3b058b544d16ce988d1.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/f656b68fe2340dc5a0789fe52097415a.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/bc8622430f3ff9e740bacf295649cb79.webp?x-oss-process=image/format,png)
还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
时间来学习,也可以分享给身边好友一起学习。
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**