List of all Iphone and Blackberry Development codes in a one click Iphone,objective C,xcode,blackberry Development,iOS Development

Friday, April 20, 2012

Record and Save Audio File in SD Card in Blackberry

import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.component.*;
import java.lang.*;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.media.*;
import javax.microedition.media.Manager;
import java.io.*;
import javax.microedition.media.control.*;

public class AudioRecording extends UiApplication
{
    public static void main(String[] args)
    {
         AudioRecording app = new AudioRecording();
         app.enterEventDispatcher();
    }
    
    public AudioRecording()
    {
         pushScreen(new AudioRecordingDemoScreen());
    }

    private class AudioRecordingDemoScreen extends MainScreen  
    {
        private AudioRecorderThread _recorderThread;
        ByteArrayOutputStream  bt;
        DataOutputStream  ot;
        public AudioRecordingDemoScreen()
        {
            //setTitle("Audio recording demo");

            addMenuItem(new StartRecording());
            addMenuItem(new StopRecording());
        }

        private class StartRecording extends MenuItem 
        {
            public StartRecording() 
            {
                super("Start recording", 0, 100);
            }

            public void run() 
            {
                try 
                {
                    AudioRecorderThread newRecorderThread = new AudioRecorderThread();
                    newRecorderThread.start();
                    _recorderThread = newRecorderThread;
                }  
                catch (Exception e) 
                {
                    Dialog.alert(e.toString());
                }
            }
        }
        
        private class StopRecording extends MenuItem 
        {
            public StopRecording() 
            {
                super("Stop recording", 0, 100);
            }

            public void run() 
            {
                try 
                {
                    if (_recorderThread != null) 
                    { 
                        _recorderThread.stop();
                    }
                } 
                catch (Exception e) 
                {
                    Dialog.alert(e.toString());
                }
            }
        }

        private class AudioRecorderThread extends Thread implements javax.microedition.media.PlayerListener
        {
        private Player _player;
          private RecordControl _rcontrol;
          private ByteArrayOutputStream _output;
          private byte _data[];

          AudioRecorderThread() {}

          private int getSize()
          {
              return (_output != null ? _output.size() : 0);
          }

          private byte[] getVoiceNote()
          {
             return _data;
          }

          public void run() {
             try {
                 // Create a Player that captures live audio.
                 _player = Manager.createPlayer("capture://audio");
                 _player.realize();

                 // Get the RecordControl, set the record stream,
                 _rcontrol = (RecordControl)_player.getControl("RecordControl");
                
                 //Create a ByteArrayOutputStream to capture the audio stream.
                 _output = new ByteArrayOutputStream();
                 _rcontrol.setRecordStream(_output);
                 _rcontrol.startRecord();
                 _player.start();

             } catch (final Exception e) {
                UiApplication.getUiApplication().invokeAndWait(new Runnable() {
                   public void run() {
                      Dialog.inform(e.toString());
                   }
                });
             }
          }

          public void stop() {
             try {
                  //Stop recording, capture data from the OutputStream,
                  //close the OutputStream and player.
                  _rcontrol.commit();
                  _data = _output.toByteArray();
                   _output.close();
                  _player.close();
                  saveRecordedFile(_data);
                  
                 

             } catch (Exception e) {
                synchronized (UiApplication.getEventLock()) {
                   Dialog.inform(e.toString());
                }
             }
          }

          public void playerUpdate(Player player, String event, Object eventData) 
               {
                   Dialog.alert("Player " + player.hashCode() + " got event " + event + ": " + eventData);
               }
        }
    }
    
    
    
    public static boolean saveRecordedFile(byte[] data) {
        try {
            String filePath1 = System.getProperty("fileconn.dir.music");
            String fileName = "sample";
            boolean existed = true;
            for (int i = 0; i < Integer.MAX_VALUE; i++) {
                try {
                    FileConnection fc = (FileConnection) Connector.open(filePath1 + fileName+ ".mp3");
                    if (!fc.exists()) {
                        existed = false;
                    }
                    fc.close();
                } catch (IOException e) {
                    Dialog.alert("unable to save");
                    return existed;
                }
                if (!existed) {
                    fileName +=".mp3";
                    filePath1 += fileName;
                    break;
                }
            }
            System.out.println(filePath1);
            System.out.println("");
            FileConnection fconn = (FileConnection) javax.microedition.io.Connector .open(filePath1, javax.microedition.io.Connector.READ_WRITE);
            if (fconn.exists())
                fconn.delete();
            fconn.create();

            OutputStream outputStream = fconn.openOutputStream();
            outputStream.write(data);
            outputStream.close();
            fconn.close();
            return true;
        } catch (Exception e) {
        }
        return false;
    }
    
    
}



        

No comments:

Post a Comment