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 <[email protected]> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en