Search code examples
blackberryblackberry-simulator

Audio Recording Not Getting setRecordLocation()


I am trying to save audio at a specified device location on Button Click (which invokes run() method). This is my code.

public Audio() {

}
public void run()
{
    try{            

        try{
            _player = Manager.createPlayer("capture://audio?encoding=audio/amr");

        }
        catch(MediaException e)
        {
            Dialog.alert(e.toString());
        }           
        _player.realize();
        _rControl =(RecordControl)_player.getControl("RecordControl");

        try{
            **//Point 1//**_rControl.setRecordLocation("file:///Device Memory/samples/ringtones/recordTest1.amr");

        }
        catch(MediaException e){e.printStackTrace();}
        catch(IOException e){e.printStackTrace();}

        _rControl.startRecord();
        _player.start();
        System.out.println("<<--Successful-->>>");
    }
    catch(Exception e){e.printStackTrace();}
}
public void stop()
{
    try{
        if(_rControl != null)
        {
            _rControl.stopRecord();
            try{
                _rControl.commit();
            }catch(Exception e){e.printStackTrace();}
            _rControl = null;
        }

        if(_player != null)
        {
            _player.close();
            _player=null;
        }
    }catch(Exception e){e.printStackTrace();}
}

In run() method, i am getting IOException at Point 1 where i am trying to set location for audio file. But when I tried this:

   {
        _rControl.setRecordLocation("file:///system/samples/ringtones/recordTest1.amr");
   }

i found it working with 9550 simulator but not with 8900 simulator. So what location should i set to make this working with 8900 simulator and also 8900 blackberry device?


Solution

  • You should use:

    javax.microedition.io.file.FileSystemRegistry.listRoots()
    

    to get available root file systems on the device running the code.