代码部分

package com.example.song.lx_android_day04_musicplayer;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.SeekBar;public class MainActivity extends AppCompatActivity {    private MediaPlayer player;//创建音乐播放器    private Button pause;    private Button start;    private Button stop;    private SeekBar seekBar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();//初始化控件        setListener();//设置控件的监听事件    }    private void setListener() {        pause.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (player != null) {                    player.pause();//暂停                }            }        });        start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (player != null) {                    player.start();//开始播放                    //调用run开始更新进度条                    handler.post(run);                }            }        });        stop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (player != null) {                    player.pause();                    //暂停使音乐回到最开始                    player.seekTo(0);                }            }        });        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {                handler.removeCallbacks(run);            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {                player.seekTo(seekBar.getProgress());                handler.postDelayed(run, 1000);            }        });    }    Handler handler = new Handler();    Runnable run = new Runnable() {        @Override        public void run() {            //player.getCurrentPosition()获取音乐的当前进度            seekBar.setProgress(player.getCurrentPosition());            handler.postDelayed(run, 100);        }    };    private void initView() {        pause = ((Button) findViewById(R.id.pause));        start = ((Button) findViewById(R.id.start));        stop = ((Button) findViewById(R.id.stop));        seekBar = ((SeekBar) findViewById(R.id.seekBar));        /**         * 初始化音乐播放器         * 参数1 上下文对象         * 参数2 资源   也可以是一个网址比如 http//xxxxxx.mp3         * 第二个参数填上地址就可以实现在线播放了         */        player = MediaPlayer.create(this, R.raw.thoseflower);        int max = player.getDuration();//获取音乐的播放时间  单位是毫秒        seekBar.setMax(max);//设置SeekBar的播放时间    }}
布局

<?xml version="1.0" encoding="utf-8"?>                

下面附上 MediaPlayer的一些方法

7 MediaPlayer 常用方法介绍     方法:create(Context context, Uri uri)         通过Uri创建一个多媒体播放器。     方法:create(Context context, int resid)   通过资源ID创建一个多媒体播放器     方法:create(Context context, Uri uri, SurfaceHolder holder)通过Uri和指定 SurfaceHolder 【抽象类】 创建一个多媒体播放器     方法: getCurrentPosition()                    得到当前播放位置     方法: getDuration()                       得到文件的时间     方法:getVideoHeight() 得到视频的高度     方法:getVideoWidth()  得到视频的宽度     方法:isLooping()      是否循环播放     方法:isPlaying()      是否正在播放     方法:pause()          暂停     方法:prepare()            准备同步     方法:prepareAsync()   准备异步     方法:release()            释放 MediaPlayer  对象     方法:reset()          重置 MediaPlayer  对象     方法:seekTo(int msec) 指定播放的位置(以毫秒为单位的时间)     方法:setAudioStreamType(int streamtype)   指定流媒体的类型     方法:setDataSource(String path)           设置多媒体数据来源【根据 路径】     方法:setDataSource(FileDescriptor fd, long offset, long length)设置多媒体数据来源【根据 FileDescriptor】     方法:setDataSource(FileDescriptor fd)     设置多媒体数据来源【根据 FileDescriptor】     方法:setDataSource(Context context, Uri uri)设置多媒体数据来源【根据 Uri】     方法:setDisplay(SurfaceHolder sh)         设置用 SurfaceHolder 来显示多媒体     方法:setLooping(boolean looping)          设置是否循环播放     事件:setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener) 网络流媒体的缓冲监听     事件:setOnCompletionListener(MediaPlayer.OnCompletionListener listener)           网络流媒体播放结束监听     事件:setOnErrorListener(MediaPlayer.OnErrorListener listener)                     设置错误信息监听     事件:setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener)视频尺寸监听     方法:setScreenOnWhilePlaying(boolean screenOn)            设置是否使用 SurfaceHolder 显示     方法:setVolume(float leftVolume, float rightVolume)   设置音量     方法:start()  开始播放     方法:stop()   停止播放




更多相关文章

  1. @dimen/padding_medium tools:context 都什么意思
  2. Android(安卓)MediaStore检索视频并播放
  3. Android(安卓)Material Design初步认识
  4. Android(安卓)Studio自带模版:抽屉(DrawerLayout)布局
  5. Android(安卓)canvas画圆
  6. Android自定义dialog向Activity传递数据
  7. Paint类介绍
  8. android pageview 类 滑动跟随
  9. 使用View绘制虚线时demo,方便复习

随机推荐

  1. android 自定义控件学习之三 控件布局常
  2. android 如何把apk放进系统------unyaffs
  3. Android(安卓)EditText remove focus 只
  4. ANDROID 应用退出
  5. Android中的跨进程通信方法实例及特点分
  6. 定制你自己的Andoird桌面Launcher
  7. android在EditText中插入表情图片
  8. Android中Uri的使用
  9. 8步教你打开Android之门 NDK入门教程
  10. DRM in Android