AudioRecord 管理音频对象
AudioRecord 此类一共提供了三个方法用来获取声音数据
构造一个AudioRecord对象,齐中熙要的最小录音缓存buffer大小可以通过getMinBufferSize 方法得到。如果buffer容量过小,将导致对象构造的失败。
初始化一个buffer该buffer大小等于AudioRecord用来读取数据的buffer的大小。
开始录音
创建一个数据流,一边从AudioRecord中读取声音数据到初始化的buffer,一遍将buffer中的数据导入到数据流。
关闭数据流
停止录音
private AudioRecord audioRecord = null; // 声明 AudioRecord 对象
private int recordBufSize = 0; // 声明recoordBufffer的大小字段
recordBufSize = AudioRecord.getMinBufferSize((int)(采样率),(int)(描述音频通道的配置),(int)(音频数据的格式));
audioRecord = new AudioRecord(默认,采样率,描述音频通道的配置,音频数据的格式,数据buffer最小值);
FIleOutputStream out = new FileOutPutStream(filename);
byte[] byte = new byte[recordBufSize];
while(isRead){
int read = audioRecord.read(byte,0,recordBufSize);
if(read>0){
try{
out.write(byte)
}
catch(IoException e){
}
}o
}
RXAndorid 使用
Observable.create(emitter -> {})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
EditText 默认不显示光标,点击显示光标
int count = 0;
mEditText.setCursorVisible(false);
mEditText.setOnTouchListener((v, event)-{
count++;
if(count == 2){
mEditText.setCursorVisible(true)
}
})
更改Android apk 输出路径
newName = "KPC_Smart_${defaultConfig.versionName}_i5_${BUILD_TYPE}"
variant.getPackageApplication().outputDirectory = new File(output.outputFile.parent.replace("release", "") + newName)
Android 自定义控件 需要在res目录下新建attrs文件
在 attrs文件下进行自定义属性 示例如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- HeaderBar自定义属性 -->
<declare-styleable name="HeaderBar">
<attr name="isShowBack" format="boolean"/>
<attr name="titleText" format="string"/>
<attr name="rightText" format="string"/>
</declare-styleable>
</resources>