Android MediaPlayer播放音频
2012-12-05 14:55
260 查看
/article/8105925.html
/article/4400649.html
1)如何获得MediaPlayer实例:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了
2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
ps:
mp.setDataSource(PATH_TO_FILE);
这个地方修改如下:
File file = new File(strPath);
FileInputStream fis = new FileInputStream(file);
mediaPlayer.setDataSource(fis.getFD());
c. 网络上的媒体文件
例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");
MediaPlayer的setDataSource一共四个方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
3)对播放器的主要控制方法:
Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()和stop()比较简单,起到暂停和停止播放的作用,
seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。
code :(代码较乱,暂不整理)
/article/4400649.html
1)如何获得MediaPlayer实例:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了
2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
ps:
mp.setDataSource(PATH_TO_FILE);
这个地方修改如下:
File file = new File(strPath);
FileInputStream fis = new FileInputStream(file);
mediaPlayer.setDataSource(fis.getFD());
c. 网络上的媒体文件
例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");
MediaPlayer的setDataSource一共四个方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
3)对播放器的主要控制方法:
Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()和stop()比较简单,起到暂停和停止播放的作用,
seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。
code :(代码较乱,暂不整理)
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import android.app.Activity; import android.content.Context; import android.media.AudioFormat; import android.media.AudioManager;import android.media.AudioRecord; import android.media.AudioTrack; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.Button; public class Mic extends Activity{ private static String mFileName = null; private MediaRecorder mRecorder = null; private MediaPlayer mPlayer = null; Button bMicY,bMicN,tst; AudioRecord recorder; int bufferSize; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.mic); //mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); //mFileName += "/audiorecordtest.3gp"; mFileName = getCacheDir().getAbsolutePath(); mFileName += "/audiorecordtest.mp3"; System.out.println("mFileName="+mFileName); bMicY= (Button) findViewById(R.id.buttonMicY); bMicY.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("record st"); startRecording(); } }); bMicN= (Button) findViewById(R.id.buttonMicN); bMicN.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("record ed"); stopRecording(); } }); tst= (Button) findViewById(R.id.buttontest); tst.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println("play st"); startPlaying(); } }); } /* @Override public void onPause() { super.onPause(); if (mRecorder != null) { mRecorder.release(); mRecorder = null; } if (mPlayer != null) { mPlayer.release(); mPlayer = null; } } */ //record play api------------------- private void startPlaying() { mPlayer = new MediaPlayer(); //mMediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.noises1); //mPlayer.setDataSource(mFileName); //mPlayer = MediaPlayer.create(getBaseContext(), R.raw.noises1); System.out.println("st ply mFileName="+mFileName); // mPlayer.seekTo(0); try { File file = new File(mFileName); FileInputStream fis = new FileInputStream(file); mPlayer.setDataSource(fis.getFD()); //mPlayer.setDataSource(mFileName); //mPlayer.setDataSource("/mnt/sdcard/test.mp3"); mPlayer.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(!mPlayer.isPlaying()) { System.out.println("start"); mPlayer.start(); } } @Override protected void onStop() { // TODO Auto-generated method stub stopPlaying(); super.onStop(); } 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) { } mRecorder.start(); } private void stopRecording() { mRecorder.stop(); mRecorder.release(); mRecorder = null; } }
相关文章推荐
- Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题
- Android Mediaplayer 播放视频/音频 SoundPool
- Android SurfaceView+MediaPlayer实现视频播放
- Android - SurfaceView+MediaPlayer、VideoView 2种方法播放视频
- android 随手记 videoview循环播放网络视频 和mediaplayer+sufaceview播放网络视频
- [置顶] Android SurfaceView+MediaPlayer制作播放暂停停止
- Android MediaPlayer+Stagefright框架(音频)图解
- C#使用Windows Media Player播放音频文件
- Android播放器MediaPlayer与MediaRecorder:录制音频并播放
- Android MediaPlayer+Stagefright框架(音频)图解
- Android - SurfaceView + MediaPlayer实现分段视频无缝播放
- 用QMediaPlayerControl播放AAC格式音频
- Android视频播放框架Vitamio集成及使用MediaPlayer+SurfaceView、VideoView+MediaController实现播放网络视频
- android视频播放MediaPlayer+SurfaceView
- Android MediaPlayer视频播放详情
- 使用MediaSessionCompat+MediaPlayer音频播放
- android MediaPlayer 简易播放器的实现 及类似斗地主音频池实现
- Android音频开发之MediaRecorder/MediaPlayer
- Android MediaPlayer+SurfaceView播放视频(附Demo)
- android mediaPlayer音频播放器基本用法