From a1f1f5ccf971a9ada1461b2b579b05b4f19c5999 Mon Sep 17 00:00:00 2001 From: hikikomoriphoenix Date: Wed, 7 Mar 2018 17:46:57 +0800 Subject: [PATCH] made some fixes --- .../loremar/lmaudiospy/AudioSpyFragment.java | 45 +++++++------------ .../lmaudiospy/StartRecordingFragment.java | 42 +++++++---------- 2 files changed, 32 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/marabillas/loremar/lmaudiospy/AudioSpyFragment.java b/app/src/main/java/marabillas/loremar/lmaudiospy/AudioSpyFragment.java index 35b43b3..e6e5d10 100644 --- a/app/src/main/java/marabillas/loremar/lmaudiospy/AudioSpyFragment.java +++ b/app/src/main/java/marabillas/loremar/lmaudiospy/AudioSpyFragment.java @@ -102,7 +102,6 @@ public final class AudioSpyFragment extends Fragment implements View.OnTouchList private ByteBuffer audioBuffer; private int readBufferSize; boolean isRecording = false; - private Thread recordingThread; private ThreadGroup encoderThreads; private int whenToConvertAudioId; @@ -284,20 +283,20 @@ public boolean onDoubleTap(MotionEvent motionEvent) { if(AutomaticGainControl.isAvailable()) AutomaticGainControl.create(audioSessionId).setEnabled(true);*/ audioRec.startRecording(); - recordingThread = new Thread(new Runnable() { + Thread recordingThread = new Thread(new Runnable() { @Override public void run() { try { recordFilenameBase = String.valueOf(System.currentTimeMillis()); File saveDir = new File(Environment.getExternalStorageDirectory(), "LM AudioSpy"); saveDirectory = prefs.getString("save_directory", saveDir.getAbsolutePath()); - if(!AudioSpy.createValidFile(saveDirectory)){ + if (!AudioSpy.createValidFile(saveDirectory)) { isRecording = false; PopUpText.show("Failed to create directory", main.getApplicationContext()); getFragmentManager().popBackStack(); return; } - if(saveToWAV) { + if (saveToWAV) { File audioFile = new File(saveDirectory, recordFilenameBase + ".wav"); audioOut = new FileOutputStream(audioFile); fileChannel = audioOut.getChannel(); @@ -305,18 +304,17 @@ public void run() { AudioProcessingTools.writeWavHeader(fileChannel, channelConfig, sampleRate, encodingFormat); } - if(saveToM4A) { + if (saveToM4A) { bytesOut = new ByteArrayOutputStream(); - if(whenToConvertAudioId == R.id.afterRecording){ + if (whenToConvertAudioId == R.id.afterRecording) { writeChannel = Channels.newChannel(bytesOut); - } - else if(whenToConvertAudioId == R.id.whileRecording){ + } else if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.initAudioConversion(saveDirectory, recordFilenameBase); } } while (isRecording) { - if(audioRec==null) { + if (audioRec == null) { audioRec = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfig, encodingFormat, readBufferSize); audioRec.startRecording(); } @@ -324,22 +322,21 @@ else if(whenToConvertAudioId == R.id.whileRecording){ audioBuffer.order(ByteOrder.LITTLE_ENDIAN); AudioProcessingTools.MaxAmplitude maxAmplitude = new AudioProcessingTools.MaxAmplitude(0); AudioProcessingTools.readAudioApplyGain(audioBuffer, audioRec, readBufferSize, gain, maxAmplitude); - if(saveToWAV) fileChannel.write(audioBuffer); - if(saveToM4A) { + if (saveToWAV) fileChannel.write(audioBuffer); + if (saveToM4A) { audioBuffer.rewind(); - if(whenToConvertAudioId == R.id.afterRecording) { + if (whenToConvertAudioId == R.id.afterRecording) { writeChannel.write(audioBuffer); - } - else if(whenToConvertAudioId == R.id.whileRecording){ + } else if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.addData(audioBuffer); } } } - if(saveToWAV) { + if (saveToWAV) { fileChannel.close(); - updateLog("\nAudio successfully recorded and saved as "+ recordFilenameBase + ".wav"); + updateLog("\nAudio successfully recorded and saved as " + recordFilenameBase + ".wav"); } - if(saveToM4A) { + if (saveToM4A) { if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.notifyRecordingEnded(); } @@ -374,8 +371,8 @@ void onFinished() { } } - }catch(IOException e){ - Log.e(LOG,"IOException in recordingThread", e); + } catch (IOException e) { + Log.e(LOG, "IOException in recordingThread", e); isRecording = false; } } @@ -404,16 +401,6 @@ public boolean onDoubleTapEvent(MotionEvent motionEvent) { return false; } - @Override - public void onStop(){ - recordingThread = null; - if(AudioProcessingTools.codec != null) { - AudioProcessingTools.codec.release(); - AudioProcessingTools.codec = null; - } - super.onStop(); - } - private void updateLog(final String message){ main.runOnUiThread(new Runnable() { @Override diff --git a/app/src/main/java/marabillas/loremar/lmaudiospy/StartRecordingFragment.java b/app/src/main/java/marabillas/loremar/lmaudiospy/StartRecordingFragment.java index 35a4689..6dd0d54 100644 --- a/app/src/main/java/marabillas/loremar/lmaudiospy/StartRecordingFragment.java +++ b/app/src/main/java/marabillas/loremar/lmaudiospy/StartRecordingFragment.java @@ -65,7 +65,6 @@ public class StartRecordingFragment extends Fragment implements View.OnClickList private int readBufferSize; private ByteBuffer audioBuffer; private boolean isRecording = false; - private Thread recordingThread; private int whenToConvertAudioId; //IO-specific fields @@ -178,30 +177,29 @@ record = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfi else headerText = recordFilenameBase + ".m4a"; header.setText(headerText); - recordingThread = new Thread(new Runnable() { + Thread recordingThread = new Thread(new Runnable() { @Override public void run() { try { File saveDir = new File(Environment.getExternalStorageDirectory(), "LM AudioSpy"); saveDirectory = prefs.getString("save_directory", saveDir.getAbsolutePath()); - if(!AudioSpy.createValidFile(saveDirectory)){ + if (!AudioSpy.createValidFile(saveDirectory)) { isRecording = false; PopUpText.show("Failed to create directory", getActivity().getApplicationContext()); getFragmentManager().popBackStack(); return; } - if(saveToWAV) { + if (saveToWAV) { File audioFile = new File(saveDirectory, recordFilenameBase + ".wav"); audioOut = new FileOutputStream(audioFile); fileChannel = audioOut.getChannel(); AudioProcessingTools.writeWavHeader(fileChannel, channelConfig, sampleRate, encodingFormat); } - if(saveToM4A) { + if (saveToM4A) { bytesOut = new ByteArrayOutputStream(); - if(whenToConvertAudioId == R.id.afterRecording){ + if (whenToConvertAudioId == R.id.afterRecording) { writeChannel = Channels.newChannel(bytesOut); - } - else if(whenToConvertAudioId == R.id.whileRecording){ + } else if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.initAudioConversion(saveDirectory, recordFilenameBase); } } @@ -244,35 +242,33 @@ public void run() { graphUpdate.run(); while (isRecording) { - if(record==null){ + if (record == null) { record = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfig, encodingFormat, readBufferSize); record.startRecording(); } audioBuffer = ByteBuffer.allocateDirect(readBufferSize); audioBuffer.order(ByteOrder.LITTLE_ENDIAN); AudioProcessingTools.readAudioApplyGain(audioBuffer, record, readBufferSize, gain, maxAmplitude); - if(saveToWAV) fileChannel.write(audioBuffer); - if(saveToM4A) { + if (saveToWAV) fileChannel.write(audioBuffer); + if (saveToM4A) { audioBuffer.rewind(); - if(whenToConvertAudioId == R.id.afterRecording) { + if (whenToConvertAudioId == R.id.afterRecording) { writeChannel.write(audioBuffer); - } - else if(whenToConvertAudioId == R.id.whileRecording){ + } else if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.addData(audioBuffer); } } } record.stop(); record.release(); - if(saveToWAV) { + if (saveToWAV) { fileChannel.close(); Log.i(LOG, "Raw Audio is successfully saved as wav file."); } - if(saveToM4A) { - if(whenToConvertAudioId == R.id.afterRecording) { + if (saveToM4A) { + if (whenToConvertAudioId == R.id.afterRecording) { writeChannel.close(); - } - else if(whenToConvertAudioId == R.id.whileRecording){ + } else if (whenToConvertAudioId == R.id.whileRecording) { AudioProcessingTools.notifyRecordingEnded(); } } @@ -281,7 +277,7 @@ else if(whenToConvertAudioId == R.id.whileRecording){ mainHandler.removeCallbacks(graphUpdate); Bundle data = new Bundle(); - if(saveToM4A) data.putByteArray("audio data", bytesOut.toByteArray()); + if (saveToM4A) data.putByteArray("audio data", bytesOut.toByteArray()); data.putString("name", recordFilenameBase); postRecordingFragment.setArguments(data); FragmentManager fragmentManager = getFragmentManager(); @@ -299,12 +295,6 @@ else if(whenToConvertAudioId == R.id.whileRecording){ super.onViewCreated(view, savedInstanceState); } - @Override - public void onStop() { - recordingThread = null; - super.onStop(); - } - @Override public void onClick(View v) { if(v == stopButton){