11package com .main .zlw .zlwaudiorecorder ;
22
3+ import android .media .AudioFormat ;
34import android .os .Bundle ;
45import android .os .Environment ;
56import android .support .v7 .app .AppCompatActivity ;
67import android .view .View ;
78import android .widget .Button ;
9+ import android .widget .RadioGroup ;
810import android .widget .TextView ;
911import android .widget .Toast ;
1012
1113import com .main .zlw .zlwaudiorecorder .base .MyApp ;
1214import com .main .zlw .zlwaudiorecorder .utils .Logger ;
15+ import com .yanzhenjie .permission .AndPermission ;
16+ import com .yanzhenjie .permission .runtime .Permission ;
1317import com .zlw .main .recorderlib .RecordManager ;
1418import com .zlw .main .recorderlib .recorder .RecordConfig ;
1519import com .zlw .main .recorderlib .recorder .RecordHelper ;
20+ import com .zlw .main .recorderlib .recorder .listener .RecordDataListener ;
1621import com .zlw .main .recorderlib .recorder .listener .RecordResultListener ;
1722import com .zlw .main .recorderlib .recorder .listener .RecordSoundSizeListener ;
1823import 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