MediaPlayer的使用 带有seekBar
16lz
2021-01-26
代码部分
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() 停止播放
更多相关文章
- @dimen/padding_medium tools:context 都什么意思
- Android(安卓)MediaStore检索视频并播放
- Android(安卓)Material Design初步认识
- Android(安卓)Studio自带模版:抽屉(DrawerLayout)布局
- Android(安卓)canvas画圆
- Android自定义dialog向Activity传递数据
- Paint类介绍
- android pageview 类 滑动跟随
- 使用View绘制虚线时demo,方便复习