MediaPlayer的使用 带有seekBar

    xiaoxiao2021-12-14  23

    代码部分

    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"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.song.lx_android_day04_musicplayer.MainActivity"> <SeekBar android:id="@+id/seekBar" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="暂停" /> <Button android:id="@+id/start" 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> </LinearLayout> 下面附上 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()   停止播放

    转载请注明原文地址: https://ju.6miu.com/read-963272.html

    最新回复(0)