audio-visualizer-android
audio-visualizer-android copied to clipboard
How to use this library with live recording
Hi,
I am working on an Audio recording function. I want the recorded Audio to be saved into the internal cache directory of my app so that I can later process it and send it to my server. I have taken the RECORD_AUDIO_PERMISSION
in my Android Manifest.
Below is the code I am using for recording audio and save it to a file.
String uuid = UUID.randomUUID().toString();
fileName = getExternalCacheDir().getAbsolutePath() + "/" + uuid + ".3gp";
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(fileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
recorder.prepare();
recorder.start();
} catch (IOException e) {}
The above code to work fine but I am facing another issue. I want to create a Waveform effect for my app for which I am using this library. I know the below code can be used to pass on bytes to the visualizer.
//get reference to visualizer
mVisualizer = findViewById(R.id.blast);
//TODO: get the raw audio bytes
//pass the bytes to visualizer
mVisualizer.setRawAudioBytes(bytes);
Now, my question is how can I get the Bytes in real-time of the Audio which is being recorded and being saved? Should I read the file and extract recent bytes from it at regular intervals or is there any other method to achieve this?
Any help would be appreciated
Thanks.
private fun convertFileToBytes(file: File):ByteArray { try { val b = ByteArray(1024) val os= ByteArrayOutputStream() val fis=FileInputStream(file) var read:Int=0 read=fis.read(b) while ((fis.read(b).also { read = it })!=-1){ os.write(b,0,read) } fis.close() os.close() return os.toByteArray()
} catch (ex: Exception) {
ex.printStackTrace()
}
return byteArrayOf(1,2,3)
}
Were you able to solve this? I have the same issue, but even by adding vikashrathore081 's code I can't seem to make it work!