Hey all, i'm new to BB development and i'm making a voice recording and playback app. I've managed to record, stop the recording and playback the recording, i'd like to know if there's a way i can put a time limit on the recording and also how to display a timer on the screen. Here's a sample of the Thread i use to do the tasks
Code:
package Clases;
import java.io.*;
import java.lang.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import net.rim.device.api.ui.component.Dialog;
public class AudioRecorderThread extends Thread implements javax.microedition.media.PlayerListener{
private Player _player;
private RecordControl _recordControl;
private ByteArrayOutputStream output;
private ByteArrayInputStream input;
private byte[] _audioArray = null;
public byte[] get_audioArray() {
return _audioArray;
}
AudioRecorderThread()
{
output = new ByteArrayOutputStream();
}
public void playerUpdate(Player player, String event, Object eventData) {
// TODO Auto-generated method stub
}
public void run()
{
try
{
_player = Manager.createPlayer("capture://audio?encoding=audio/amr");
_player.addPlayerListener(this);
_player.realize();
_recordControl = (RecordControl) _player.getControl( "RecordControl" );
_recordControl.setRecordStream(output);
_recordControl.startRecord();
_player.start();
}
catch( IOException e )
{
Dialog.alert(e.toString());
}
catch( MediaException e )
{
Dialog.alert(e.toString());
}
}
public void stop()
{
if (_player != null)
{
_player.close();
_player = null;
}
if (_recordControl != null)
{
try
{
_recordControl.commit();
_audioArray = output.toByteArray();
}
catch (Exception e)
{
Dialog.alert(e.toString());
}
_recordControl = null;
}
}
public void play()
{
try {
input = new ByteArrayInputStream(_audioArray);
_player = Manager.createPlayer(input, "audio/x-wav");
_player.realize();
VolumeControl volume = (VolumeControl)_player.getControl("VolumeControl");
volume.setLevel(100);
_player.prefetch();
_player.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}