MediaPlayer播放音频文件

来源:互联网 发布:韩信点兵java语言算法 编辑:程序博客网 时间:2024/05/17 08:29

1,普通MediaPlayer播放音频文件

activity_sound_player.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="点击播放,播放音乐" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/play"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="播放" />        <Button            android:id="@+id/pause"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="暂停" />        <Button            android:id="@+id/stop"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="停止" />    </LinearLayout>    <TextView        android:id="@+id/desc"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="状态描述" /></LinearLayout>

SoundPlayerActivity.java
/** * 功能描述:测试MediaPlayer播放音乐 * 时间:2016/8/4 * 作者:vision */public class SoundPlayerActivity extends AppCompatActivity {    /**     * 播放音乐状态控制按钮     */    private Button play, pause, stop;    /**     * 当前状态描述     */    private TextView desc;    /**     * 音频播放器     */    private MediaPlayer mediaPlayer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sound_player);        play = (Button) findViewById(R.id.play);        pause = (Button) findViewById(R.id.pause);        stop = (Button) findViewById(R.id.stop);        desc = (TextView) findViewById(R.id.desc);        mediaPlayer = MediaPlayer.create(SoundPlayerActivity.this, R.raw.b);        play.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (mediaPlayer != null) {                    try {                        mediaPlayer.reset();                        mediaPlayer.prepare();                        mediaPlayer.start();                    } catch (Exception e) {                        e.printStackTrace();                    }                } else {                    try {                        mediaPlayer = MediaPlayer.create(SoundPlayerActivity.this, R.raw.b);                        mediaPlayer.prepare();                        mediaPlayer.start();                    } catch (Exception e) {                        e.printStackTrace();                    }                }                desc.setText("播放中");            }        });        pause.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (mediaPlayer.isPlaying()) {                    mediaPlayer.pause();                }                desc.setText("暂停中");            }        });        stop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (mediaPlayer.isPlaying()) {                    mediaPlayer.stop();                }                desc.setText("停止播放");            }        });    }    protected void onDestroy() {        if (mediaPlayer.isPlaying()) {            mediaPlayer.stop();        }        mediaPlayer.release();//释放资源        super.onDestroy();    }}

2,SurfaceView结合MediaPlayer播放音频文件
        activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:weightSum="1">    <TextView        android:id="@+id/text_desc"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <SurfaceView        android:id="@+id/surfaceview"        android:layout_width="400dip"        android:layout_height="450dip"        android:layout_gravity="center"        android:layout_weight="0.25" />    <LinearLayout        android:id="@+id/ll"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:gravity="center_horizontal">        <Button            android:id="@+id/bt1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="播放" />        <Button            android:id="@+id/bt2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="暂停" />        <Button            android:id="@+id/bt3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="停止" />    </LinearLayout></LinearLayout>
        VideoPlayorActivity.java

/** * 功能描述:SurfaceView播放音乐 * 时间:2016/8/4 * 作者:vision */public class VideoPlayorActivity extends AppCompatActivity implements SurfaceHolder.Callback {    /**     * SurfaceView作播放器     */    private SurfaceView surfaceView;    /**     * SurfaceView控制器     */    private SurfaceHolder holder;    /**     * 开始播放     */    private Button play;    /**     * 暂停     */    private Button pause;    /**     * 停止     */    private Button stop;    /**     * 视频播放器     */    private MediaPlayer mediaPlayer;    private TextView path;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        surfaceView = (SurfaceView) findViewById(R.id.surfaceview);        play = (Button) findViewById(R.id.bt1);        pause = (Button) findViewById(R.id.bt2);        stop = (Button) findViewById(R.id.bt3);        path = (TextView) findViewById(R.id.text_desc);        path.setText(Environment.getExternalStorageDirectory().getPath() + "/a.mp3");        holder = surfaceView.getHolder();        holder.addCallback(this);        holder.setFixedSize(400, 450);//设置视频播放分辨率        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//Surface类型        play.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mediaPlayer.start();            }        });        pause.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mediaPlayer.pause();            }        });        stop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mediaPlayer.stop();            }        });    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        mediaPlayer = new MediaPlayer();//        mediaPlayer = MediaPlayer.create(VideoPlayorActivity.this, R.raw.b);        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置数据源类型        mediaPlayer.setDisplay(this.holder);//设置播放展示View        try {            mediaPlayer.setDataSource(Environment.getExternalStorageDirectory() + "/a.mp3");//            mediaPlayer.setDataSource("/storage/sdcard0/a.mp3");//            mediaPlayer.setDataSource(String.valueOf(R.raw.b));            mediaPlayer.prepare();        } catch (Exception e) {            e.printStackTrace();        }    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        if (mediaPlayer.isPlaying()) {            mediaPlayer.stop();        }        mediaPlayer.release();    }}

源码下载



成功的人不是赢在起点,而是赢在转折点。

0 0
原创粉丝点击