Skip to content

Commit 7dffc81

Browse files
committed
添加修改录音配置接口
Signed-off-by: zhaolewei <739043667@qq.com>
1 parent 9dbfef4 commit 7dffc81

File tree

15 files changed

+328
-84
lines changed

15 files changed

+328
-84
lines changed

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 0 additions & 36 deletions
This file was deleted.

.idea/misc.xml

Lines changed: 10 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
### 功能
44
1. 使用AudioRecord进行录音
5-
2. 实现pcm音频的录制
6-
3. 实现wav音频的录制
7-
4. 实现mp3音频的录制
8-
5. 实时获取录音的音量
9-
6. 获取wav/mp3录音文件的时长
5+
2. 实现pcm、wav、mp3音频的录制
6+
3. 实时获取录音的音量、及录音byte数据
7+
4. 获取wav/mp3录音文件的时长
8+
5. 可配置录音的采样率、位宽 - v1.04更新
109

1110
### 博客
1211
https://www.jianshu.com/p/c0222de2faed
@@ -15,8 +14,15 @@ https://www.jianshu.com/p/c0222de2faed
1514
[![](https://jitpack.io/v/zhaolewei/ZlwAudioRecorder.svg)](https://jitpack.io/#zhaolewei/ZlwAudioRecorder)
1615

1716
dependencies {
18-
implementation 'com.github.zhaolewei:ZlwAudioRecorder:1.0.3'
17+
implementation 'com.github.zhaolewei:ZlwAudioRecorder:1.0.4'
1918
}
19+
20+
allprojects {
21+
repositories {
22+
...
23+
maven { url 'https://www.jitpack.io' }
24+
}
25+
}
2026
### 如何使用
2127

2228
1. 初始化
@@ -41,6 +47,12 @@ https://www.jianshu.com/p/c0222de2faed
4147
```java
4248
RecordManager.getInstance().changeFormat(RecordConfig.RecordFormat.WAV);
4349
```
50+
51+
* 修改录音配置
52+
```java
53+
RecordManager.getInstance().changeRecordConfig(recordManager.getRecordConfig().setSampleRate(16000));
54+
RecordManager.getInstance().changeRecordConfig(recordManager.getRecordConfig().setEncodingConfig(AudioFormat.ENCODING_PCM_8BIT));
55+
```
4456
* 修改录音文件存放位置(默认sdcard/Record
4557
```java
4658
RecordManager.getInstance().changeRecordDir(recordDir);
@@ -74,6 +86,14 @@ https://www.jianshu.com/p/c0222de2faed
7486
}
7587
});
7688
```
89+
* 音频数据监听
90+
```java
91+
recordManager.setRecordDataListener(new RecordDataListener() {
92+
@Override
93+
public void onData(byte[] data) {
94+
}
95+
});
96+
```
7797
3. 录音控制
7898
* 开始录音
7999
```java
@@ -92,3 +112,6 @@ https://www.jianshu.com/p/c0222de2faed
92112
RecordManager.getInstance().stop();
93113
```
94114

115+
### Demo
116+
![Demo.png](https://raw.githubusercontent.com/zhaolewei/ZlwAudioRecorder/master/doc/demo.jpg)
117+

app/build.gradle

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 26
4+
compileSdkVersion 28
55
defaultConfig {
66
applicationId "com.main.zlw.zlwaudiorecorder"
77
minSdkVersion 19
8-
targetSdkVersion 26
8+
targetSdkVersion 28
99
versionCode 1
1010
versionName "1.0"
1111
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -20,18 +20,17 @@ android {
2020

2121
dependencies {
2222
implementation fileTree(dir: 'libs', include: ['*.jar'])
23-
implementation 'com.android.support:appcompat-v7:26.1.0'
24-
androidTestCompile('com.android.support:support-annotations:26.1.0') {
23+
implementation 'com.android.support:appcompat-v7:28.0.0'
24+
androidTestImplementation('com.android.support:support-annotations:28.0.0') {
2525
force = true
2626
}
2727
testImplementation 'junit:junit:4.12'
2828
androidTestImplementation 'com.android.support.test:runner:1.0.2'
2929
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
3030

31-
dependencies {
32-
implementation 'com.jakewharton:butterknife:8.8.1'
33-
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
34-
}
31+
implementation 'com.jakewharton:butterknife:8.8.1'
32+
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
3533
implementation 'com.blankj:utilcode:1.18.0'
36-
compile project(path: ':recorderlib')
34+
implementation 'com.yanzhenjie.permission:support:2.0.1'
35+
implementation project(path: ':recorderlib')
3736
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<uses-permission android:name="android.permission.INTERNET" />
66
<uses-permission android:name="android.permission.RECORD_AUDIO" />
77
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
8+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
89

910
<application
1011
android:name=".base.MyApp"

app/src/main/java/com/main/zlw/zlwaudiorecorder/MainActivity.java

Lines changed: 90 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package com.main.zlw.zlwaudiorecorder;
22

3+
import android.media.AudioFormat;
34
import android.os.Bundle;
45
import android.os.Environment;
56
import android.support.v7.app.AppCompatActivity;
67
import android.view.View;
78
import android.widget.Button;
9+
import android.widget.RadioGroup;
810
import android.widget.TextView;
911
import android.widget.Toast;
1012

1113
import com.main.zlw.zlwaudiorecorder.base.MyApp;
1214
import com.main.zlw.zlwaudiorecorder.utils.Logger;
15+
import com.yanzhenjie.permission.AndPermission;
16+
import com.yanzhenjie.permission.runtime.Permission;
1317
import com.zlw.main.recorderlib.RecordManager;
1418
import com.zlw.main.recorderlib.recorder.RecordConfig;
1519
import com.zlw.main.recorderlib.recorder.RecordHelper;
20+
import com.zlw.main.recorderlib.recorder.listener.RecordDataListener;
1621
import com.zlw.main.recorderlib.recorder.listener.RecordResultListener;
1722
import com.zlw.main.recorderlib.recorder.listener.RecordSoundSizeListener;
1823
import com.zlw.main.recorderlib.recorder.listener.RecordStateListener;
@@ -35,21 +40,94 @@ public class MainActivity extends AppCompatActivity {
3540
TextView tvState;
3641
@BindView(R.id.tvSoundSize)
3742
TextView tvSoundSize;
43+
@BindView(R.id.rgAudioFormat)
44+
RadioGroup rgAudioFormat;
45+
@BindView(R.id.rgSimpleRate)
46+
RadioGroup rgSimpleRate;
47+
@BindView(R.id.tbEncoding)
48+
RadioGroup tbEncoding;
3849
private boolean isStart = false;
3950
private boolean isPause = false;
51+
final RecordManager recordManager = RecordManager.getInstance();
4052

4153
@Override
4254
protected void onCreate(Bundle savedInstanceState) {
4355
super.onCreate(savedInstanceState);
4456
setContentView(R.layout.activity_main);
4557
ButterKnife.bind(this);
46-
RecordManager.getInstance().init(MyApp.getInstance(), true);
47-
RecordManager.getInstance().changeFormat(RecordConfig.RecordFormat.WAV);
48-
String recordDir = String.format(Locale.getDefault(),
49-
"%s/Record/com.zlw.main/",
58+
initEvent();
59+
initRecord();
60+
AndPermission.with(this)
61+
.runtime()
62+
.permission(new String[]{Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE,
63+
Permission.RECORD_AUDIO})
64+
.start();
65+
}
66+
67+
private void initEvent() {
68+
rgAudioFormat.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
69+
@Override
70+
public void onCheckedChanged(RadioGroup group, int checkedId) {
71+
switch (checkedId) {
72+
case R.id.rbPcm:
73+
recordManager.changeFormat(RecordConfig.RecordFormat.PCM);
74+
break;
75+
case R.id.rbMp3:
76+
recordManager.changeFormat(RecordConfig.RecordFormat.MP3);
77+
break;
78+
case R.id.rbWav:
79+
recordManager.changeFormat(RecordConfig.RecordFormat.WAV);
80+
break;
81+
default:
82+
break;
83+
}
84+
}
85+
});
86+
87+
rgSimpleRate.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
88+
@Override
89+
public void onCheckedChanged(RadioGroup group, int checkedId) {
90+
switch (checkedId) {
91+
case R.id.rb8K:
92+
recordManager.changeRecordConfig(recordManager.getRecordConfig().setSampleRate(8000));
93+
break;
94+
case R.id.rb16K:
95+
recordManager.changeRecordConfig(recordManager.getRecordConfig().setSampleRate(16000));
96+
break;
97+
case R.id.rb44K:
98+
recordManager.changeRecordConfig(recordManager.getRecordConfig().setSampleRate(44100));
99+
break;
100+
default:
101+
break;
102+
}
103+
}
104+
});
105+
106+
tbEncoding.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
107+
@Override
108+
public void onCheckedChanged(RadioGroup group, int checkedId) {
109+
switch (checkedId) {
110+
case R.id.rb8Bit:
111+
recordManager.changeRecordConfig(recordManager.getRecordConfig().setEncodingConfig(AudioFormat.ENCODING_PCM_8BIT));
112+
break;
113+
case R.id.rb16Bit:
114+
recordManager.changeRecordConfig(recordManager.getRecordConfig().setEncodingConfig(AudioFormat.ENCODING_PCM_16BIT));
115+
break;
116+
default:
117+
break;
118+
}
119+
}
120+
});
121+
}
122+
123+
private void initRecord() {
124+
recordManager.init(MyApp.getInstance(), BuildConfig.DEBUG);
125+
recordManager.changeFormat(RecordConfig.RecordFormat.WAV);
126+
String recordDir = String.format(Locale.getDefault(), "%s/Record/com.zlw.main/",
50127
Environment.getExternalStorageDirectory().getAbsolutePath());
51-
RecordManager.getInstance().changeRecordDir(recordDir);
52-
RecordManager.getInstance().setRecordStateListener(new RecordStateListener() {
128+
recordManager.changeRecordDir(recordDir);
129+
130+
recordManager.setRecordStateListener(new RecordStateListener() {
53131
@Override
54132
public void onStateChange(RecordHelper.RecordState state) {
55133
Logger.i(TAG, "onStateChange %s", state.name());
@@ -81,43 +159,42 @@ public void onError(String error) {
81159
Logger.i(TAG, "onError %s", error);
82160
}
83161
});
84-
RecordManager.getInstance().setRecordSoundSizeListener(new RecordSoundSizeListener() {
162+
recordManager.setRecordSoundSizeListener(new RecordSoundSizeListener() {
85163
@Override
86164
public void onSoundSize(int soundSize) {
87165
tvSoundSize.setText(String.format(Locale.getDefault(), "声音大小:%s db", soundSize));
88166
}
89167
});
90-
RecordManager.getInstance().setRecordResultListener(new RecordResultListener() {
168+
recordManager.setRecordResultListener(new RecordResultListener() {
91169
@Override
92170
public void onResult(File result) {
93171
Toast.makeText(MainActivity.this, "录音文件: " + result.getAbsolutePath(), Toast.LENGTH_SHORT).show();
94172
}
95173
});
96174
}
97175

98-
99176
@OnClick({R.id.btRecord, R.id.btStop})
100177
public void onViewClicked(View view) {
101178
switch (view.getId()) {
102179
case R.id.btRecord:
103180
if (isStart) {
104-
RecordManager.getInstance().pause();
181+
recordManager.pause();
105182
btRecord.setText("开始");
106183
isPause = true;
107184
isStart = false;
108185
} else {
109186
if (isPause) {
110-
RecordManager.getInstance().resume();
187+
recordManager.resume();
111188
} else {
112-
RecordManager.getInstance().start();
189+
recordManager.start();
113190
}
114191
btRecord.setText("暂停");
115192
isStart = true;
116193
}
117194

118195
break;
119196
case R.id.btStop:
120-
RecordManager.getInstance().stop();
197+
recordManager.stop();
121198
btRecord.setText("开始");
122199
isPause = false;
123200
isStart = false;

0 commit comments

Comments
 (0)