博客
关于我
[android] 多媒体播放api简介
阅读量:659 次
发布时间:2019-03-15

本文共 4316 字,大约阅读时间需要 14 分钟。

 

界面布局,水平方向四个按钮平均分布,使用权重,定义android:layout_width=”0dp”,定义layout_weight=”1”这个属性全都一致就是平均分布

 

获取File对象,通过new File()来实现

判断文件是否存在,File对象的exists()方法,File对象的length()必须大于0

 

获取MediaPlayer对象,通过new出来

开始播放

调用MediaPlayer对象的setAudioStreamType()方法,设置音频流类型,参数:AudioManager.STREAM_MUSIC

调用MediaPlayer对象的setDataSource()方法,设置数据源,参数:String文件路径,也可以是http

调用MediaPlayer对象的prepare()方法,准备

调用MediaPlayer对象的start()方法,播放

调用播放按钮的setEnable()方法,设置按钮为不可点击,参数:false

当播放完毕后应设置按钮可点击

调用MediaPlayer对象的setOnCompletionListener()方法,设置完成监听器,参数:OnCompletionListener接口,使用匿名内部类实现接口,重写方法onCompletion()方法,在这个方法里面调用播放按钮的setEnable(true)

 

停止播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象的stop()方法,停止播放

调用MediaPlayer对象的release()方法,是否

设置MediaPlayer对象为null

 

重新播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象seekTo()方法,设置播放进度,参数:0就可以

如果不存在,那么直接调用上面的播放函数

 

暂停播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象的pause()方法,暂停播放

调用暂停按钮的setText()方法,设置文字成:继续

 

在这个点击事件里判断文字是否为”继续”,如果是,就继续播放

调用MediaPlayer对象的start()方法

调用暂停安妮的setText()方法,设置文字成:暂停

 MainActivity.java

package com.tsh.tshplayer;import java.io.File;import java.io.IOException;import android.app.Activity;import android.content.SharedPreferences.Editor;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {    private EditText et_music;    private Button bt_play, bt_pause, bt_stop, bt_replay;    private MediaPlayer player;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        et_music = (EditText) findViewById(R.id.et_music);        bt_play = (Button) findViewById(R.id.bt_play);        bt_pause = (Button) findViewById(R.id.bt_pause);        bt_stop = (Button) findViewById(R.id.bt_stop);        bt_replay = (Button) findViewById(R.id.bt_replay);        bt_play.setOnClickListener(this);        bt_pause.setOnClickListener(this);        bt_stop.setOnClickListener(this);        bt_replay.setOnClickListener(this);    }    // 点击事件    @Override    public void onClick(View v) {        switch (v.getId()) {        // 播放        case R.id.bt_play:            play();            break;        // 暂停        case R.id.bt_pause:            pause();            break;        // 重播        case R.id.bt_replay:            replay();            break;        // 停止        case R.id.bt_stop:            stop();            break;        }    }    //停止播放    private void stop() {        if(player!=null&&player.isPlaying()){            player.stop();            bt_play.setEnabled(true);        }    }    //重播音乐    private void replay() {        if(player!=null&&player.isPlaying()){            player.seekTo(0);        }    }    //暂停音乐    private void pause() {        if(player!=null&&player.isPlaying()){            player.pause();            bt_pause.setText("继续");        }else if(bt_pause.getText().toString().trim().equals("继续")){            player.start();            bt_pause.setText("暂停");        }    }    // 播放音乐    private void play() {        String music = et_music.getText().toString().trim();        File file = new File(music);        if (file.exists() && file.length() > 0) {            try {                player = new MediaPlayer();                player.setAudioStreamType(AudioManager.STREAM_MUSIC);                player.setDataSource(music);                player.prepare();                player.start();                // 设置按钮                bt_play.setEnabled(false);                //音乐完成回调                player.setOnCompletionListener(new OnCompletionListener() {                    @Override                    public void onCompletion(MediaPlayer mp) {                        bt_play.setEnabled(true);                    }                });            } catch (Exception e) {                e.printStackTrace();                Toast.makeText(this, "播放音乐失败", 0).show();            }        } else {            Toast.makeText(this, "音乐文件不存在", 0).show();        }    }}

转载地址:http://nknmz.baihongyu.com/

你可能感兴趣的文章
m_Orchestrate learning system---二十二、html代码如何变的容易
查看>>
M×N 形状 numpy.ndarray 的滑动窗口
查看>>
m个苹果放入n个盘子问题
查看>>
n = 3 , while n , continue
查看>>
n 叉树后序遍历转换为链表问题的深入探讨
查看>>
N!
查看>>
N-Gram的基本原理
查看>>
n1 c语言程序,全国青少年软件编程等级考试C语言经典程序题10道七
查看>>
Nacos Client常用配置
查看>>
nacos config
查看>>
Nacos Config--服务配置
查看>>
Nacos Derby 远程命令执行漏洞(QVD-2024-26473)
查看>>
Nacos 与 Eureka、Zookeeper 和 Consul 等其他注册中心的区别
查看>>
Nacos 单机集群搭建及常用生产环境配置 | Spring Cloud 3
查看>>
Nacos 启动报错[db-load-error]load jdbc.properties error
查看>>
Nacos 报Statement cancelled due to timeout or client request
查看>>
Nacos 注册服务源码分析
查看>>
Nacos 融合 Spring Cloud,成为注册配置中心
查看>>
Nacos-注册中心
查看>>
Nacos-配置中心
查看>>