Hi Developers!!

    Any clue how to get this job done ?

    Is it possible to get the PCM data of the mp3 file being played?

-Ashutosh

On Jun 20, 9:41 am, Asmishra <aashutosh.mis...@gmail.com> wrote:
> I am trying to get thePCMdata of the mp3 files being played by
> Android system.
>
> In the SDK I do not find any API of the Mediaplayer which lets me set
> the data target (complement API of SetDataSource()) so that I can give
> the path of a simple file in which I want to write thePCMdata before
> it is being played on the DAC of my system.
>
> I thought of another way for the solution. Instead of setting the data
> target if I am able to use the MediaRecoder to record thePCMdata of
> the file being played on the DAC of the emulator I would be able to
> achieve the desired result in other way; But the Problem which I am
> finding in this approach is what to set the data source to the
> mediarecoder? If I set MIC I get an exception.
>
> Here is the code :-
>
> ===============================> CODE STARTS  <=====================
> public class Hello extends Activity
> {
>         //All buttons
>         private static final String LOG_TAG = "AudioRecordTest";
>     private static String mFileName = null;
>     private RecordButton mRecordButton = null;
>     private MediaRecorder mRecorder = null;
>     private PlayButton   mPlayButton = null;
>     private MediaPlayer   mPlayer = null;
>
>     private void onRecord(boolean start) {
>         if (start) {
>             startRecording();
>         } else {
>             stopRecording();
>         }
>     }
>
>     private void onPlay(boolean start) {
>         if (start) {
>             startPlaying();
>         } else {
>             stopPlaying();
>         }
>     }
>
>     private void startPlaying() {
>         mPlayer = new MediaPlayer();
>         try {
>             mPlayer.setDataSource(mFileName);
>             mPlayer.prepare();
>             mPlayer.start();
>         } catch (IOException e) {
>             Log.e(LOG_TAG, "prepare() failed");
>         }
>     }
>
>     private void stopPlaying() {
>         mPlayer.release();
>         mPlayer = null;
>     }
>
>     private void startRecording() {
>         mRecorder = new MediaRecorder();
>         mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
>
> mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
>         mRecorder.setOutputFile(mFileName);
>         mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
>
>         try {
>             mRecorder.prepare();
>         } catch (IOException e) {
>             Log.e(LOG_TAG, "prepare() failed");
>         }
>
>         mRecorder.start();
>     }
>
>     private void stopRecording() {
>         mRecorder.stop();
>         mRecorder.release();
>         mRecorder = null;
>     }
>
>     class RecordButton extends Button {
>         boolean mStartRecording = true;
>
>         OnClickListener clicker = new OnClickListener() {
>             public void onClick(View v) {
>                 onRecord(mStartRecording);
>                 if (mStartRecording) {
>                     setText("Stop recording");
>                 } else {
>                     setText("Start recording");
>                 }
>                 mStartRecording = !mStartRecording;
>             }
>         };
>
>         public RecordButton(Context ctx) {
>             super(ctx);
>             setText("Start recording");
>             setOnClickListener(clicker);
>         }
>     }
>
>     class PlayButton extends Button {
>         boolean mStartPlaying = true;
>
>         OnClickListener clicker = new OnClickListener() {
>             public void onClick(View v) {
>                 onPlay(mStartPlaying);
>                 if (mStartPlaying) {
>                     setText("Stop playing");
>                 } else {
>                     setText("Start playing");
>                 }
>                 mStartPlaying = !mStartPlaying;
>             }
>         };
>
>         public PlayButton(Context ctx) {
>             super(ctx);
>             setText("Start playing");
>             setOnClickListener(clicker);
>         }
>     }
>
>     //public AudioRecordTest() {
>     public Hello() {
>         mFileName =
> Environment.getExternalStorageDirectory().getAbsolutePath();
>         mFileName += "/audiorecordtest.3gp";
>     }
>
>     @Override
>     public void onCreate(Bundle icicle) {
>         super.onCreate(icicle);
>
>         LinearLayout ll = new LinearLayout(this);
>         mRecordButton = new RecordButton(this);
>         ll.addView(mRecordButton,
>             new LinearLayout.LayoutParams(
>                 ViewGroup.LayoutParams.WRAP_CONTENT,
>                 ViewGroup.LayoutParams.WRAP_CONTENT,
>                 0));
>         mPlayButton = new PlayButton(this);
>         ll.addView(mPlayButton,
>             new LinearLayout.LayoutParams(
>                 ViewGroup.LayoutParams.WRAP_CONTENT,
>                 ViewGroup.LayoutParams.WRAP_CONTENT,
>                 0));
>         setContentView(ll);
>     }
>
>     @Override
>     public void onPause() {
>         super.onPause();
>         if (mRecorder != null) {
>             mRecorder.release();
>             mRecorder = null;
>         }
>
>         if (mPlayer != null) {
>             mPlayer.release();
>             mPlayer = null;
>         }
>     }
>
> }
>
> ======================> CODE ENDS  < ===================
>
> Kindly help me in getting thePCMdata of the mp3 files being played.
> Also I would like to know how to get the SampleRate etc. in order to
> get thePCMdata thus obtained? .i.e How to determine the playing
> params of aPCMfile?
>
> Thanks!!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to