教你用MediaPlayer做个带进度条的音乐播放器

合集下载

Android多媒体MediaPlayer使用详解

Android多媒体MediaPlayer使用详解

Android多媒体MediaPlayer使⽤详解现在的⼿机功能越来越丰富了,遥想10年前,MP3,MP4,MP5,还是很流⾏的,博主当时读⾼中时很想拥有⼀台,可以听⾳乐和看电影。

可是条件有限,学校也禁⽌此东西,所以只能偷偷的玩。

⽽现在我们的⼿机也很早以前就⽀持了这些功能,⽽且界⾯和功能也远远超过了MP4。

好吧,说多了,今天本⽂介绍的是Andriod系统⾃带的Mediaplayer,和VideoView实现简单的⾳乐和视频的播放,⾄于想做出如酷狗⾳乐这样的APP的话,只要想做,应该也不难,都是基于此实现了功能的扩展。

Android的MediaPlayer包含了Audio和Video的播放功能,在Android的界⾯上,Music和Video两个应⽤程序都是调⽤MediaPlaer来实现的。

⼀、播放⾳频⽂件⾸先看看MediaPlaer的⽣命周期下⾯是MediaPlayer提供的常⽤⽅法⽅法说明MediaPlayer构造⽅法create创建⼀个要播放的多媒体getCurrentPosition得到当前播放位置getDuration得到⽂件的时间getVideoHeight得到视频的⾼度getVideoWidth得到视频的宽度isLooping是否循环播放isPlaying是否正在播放pause暂停prepare准备(同步)prepareAsync准备(异步)release释放MediaPlayer对象相关的资源reset重置MediaPlayer对象为刚刚创建的状态seekTo指定播放的位置(以毫秒为单位的时间)setAudioStreamType设置流媒体的类型setDataSource设置多媒体数据来源(位置)setDisplay设置⽤SurfaceHolder来显⽰多媒体setLooping设置是否循环播放setOnButteringUpdateListener⽹络流媒体的缓冲监听setOnErrorListener设置错误信息监听setOnVideoSizeChangedListener视频尺⼨监听setScreenOnWhilePlaying设置是否使⽤SurfaceHolder来保持屏幕显⽰setVolume设置⾳量start开始播放stop停⽌播放MediaPlayer的⼯作流程是这样的:1,⾸先创建MediaPlaer对象; *2,然后调⽤setDataSource()⽅法来设置⾳频⽂件的路径;**3,再调⽤prepare()⽅法使MediaPlayer进⼊到准备状态;4,调⽤start⽅法就可以播放⾳频。

meidiaplayer控件的使用方法

meidiaplayer控件的使用方法
MediaPlayer1.EnableContextMenu 是否允许在控件上点击鼠标右键时弹出快捷菜单
MediaPlayer1.AnimationAtStart 是否在播放前先播放动画
MediaPlayer1.ShowControls 是否显示控件工具栏
.Filter = "|*.mp3|Wave Filse(*.wav)|*.wav|(*.m3u)|*.m3u|Avi Flies(*.avi)|*.avi|Wmv Files(*.wmv)|*wmv|Mpg files(*.mpg)|*mpg"
.FileName = ""
.ShowOpen
End With
6-MpOneFourthScreen 屏幕大小的1/4
7-MpOneHalfScreen 屏幕大小的1/2
MediaPlayer1.ClickToPlay
是否允许单击播放窗口启动Media Player
我给你一些这方面的资料,你看看后应该可以做出你想要的东西
MediaPlayer1.Play 播放
MediaPlayer1.Stop 停止
MediaPlayer1.Pause 暂停
MediaPlayer1.PlayCount 文件播放次数
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = True
Exit Sub
handler:
MsgBox "未选择媒体文件。", vbOKOnly, "错误信息"
End Sub �
2-MpHalfSize 原始大小的一半

前端开发实训案例实现一个简单的音乐播放器

前端开发实训案例实现一个简单的音乐播放器

前端开发实训案例实现一个简单的音乐播放器在本案例中,我们将一步步实现一个简单的音乐播放器,通过前端开发实训的方式,让大家掌握基本的前端开发技能和工具的使用。

下面是实现过程的详细步骤。

一、准备工作在开始实现音乐播放器之前,我们需要准备一些必要的工作。

首先,我们需要一个 HTML 页面来显示播放器的界面,可以通过创建一个名为index.html的文件来实现。

然后,我们需要下载一个适合的音乐播放器的样式文件和脚本文件,可以在一些开源的网站上找到并下载。

二、项目结构在开始编写代码之前,我们需要创建一个合理的项目结构。

在该案例中,我们可以创建以下几个文件夹和文件:- css文件夹:用于存放样式文件- js文件夹:用于存放脚本文件- img文件夹:用于存放图片资源- index.html:HTML页面的入口文件三、实现播放器界面1. 引入样式文件在index.html文件的头部,使用<link>标签引入样式文件。

例如:```html<link rel="stylesheet" href="css/player.css">```2. 创建播放器容器在index.html文件的<body>标签内,创建一个用于显示音乐播放器的容器。

例如:```html<div class="player-container"><!-- 在这里添加其他播放器相关的元素 --></div>```3. 添加播放器控制按钮在播放器容器中,添加用于控制音乐播放的按钮。

例如,添加播放按钮、暂停按钮和上一首、下一首按钮:```html<div class="player-container"><button id="play-btn">播放</button><button id="pause-btn">暂停</button><button id="prev-btn">上一首</button><button id="next-btn">下一首</button></div>```4. 显示音乐信息在播放器容器中,添加显示音乐信息的元素。

学会在电脑上使用音乐播放器

学会在电脑上使用音乐播放器

学会在电脑上使用音乐播放器音乐是我们日常生活中不可或缺的一部分,而电脑作为我们生活和工作中必不可少的工具之一,当然也能承担起音乐播放的功能。

学会在电脑上使用音乐播放器,不仅可以随时随地欣赏喜爱的音乐,还能提升我们的生活质量。

下面,我将向大家介绍一些常见的电脑音乐播放器以及它们的使用方法。

一、Windows Media PlayerWindows Media Player是Windows操作系统自带的一款音乐播放软件,拥有简单易用的界面和强大的功能。

1. 打开Windows Media Player:在桌面或开始菜单上找到Windows Media Player的图标,点击打开软件。

2. 添加音乐文件:点击播放器界面左上角的“文件”选项,在下拉菜单中选择“添加到”或“导入”,然后选择你的音乐文件所在的文件夹,点击“确定”即可将音乐添加到播放列表。

3. 播放音乐:在播放列表中选中你想要播放的音乐,点击“播放”按钮即可开始播放。

二、iTunesiTunes是苹果公司开发的一款音乐管理软件,可以在Windows和Mac系统上使用。

它同时也是iPhone和iPad等iOS设备的默认音乐同步工具。

1. 下载并安装iTunes软件:在苹果官方网站上下载iTunes,并按照安装向导完成安装过程。

2. 导入音乐文件:打开iTunes,点击左上角的“文件”选项,在下拉菜单中选择“添加文件到库”或“添加文件夹到库”,选择你的音乐文件或文件夹,并点击“打开”按钮导入音乐。

3. 播放音乐:在iTunes界面的左侧导航栏中选择你想要播放的音乐,点击音乐名称即可开始播放。

三、Foobar2000Foobar2000是一款功能强大、界面简洁的音乐播放器,适用于Windows系统。

虽然它缺乏更为华丽的界面设计,但其出色的音质和高度自定义的特性使其成为众多发烧友的首选。

1. 下载并安装Foobar2000软件:在官方网站上下载Foobar2000的安装程序,然后按照安装向导进行安装。

如何使用WindowsMediaPlayer进行音乐和视频播放

如何使用WindowsMediaPlayer进行音乐和视频播放

如何使用WindowsMediaPlayer进行音乐和视频播放第一章:WindowsMediaPlayer的介绍WindowsMediaPlayer是由微软公司开发的一款媒体播放软件,它支持播放音乐和视频文件,并提供了丰富的功能和调节选项,适用于Windows操作系统。

通过WindowsMediaPlayer,用户可以方便地播放各种格式的音乐和视频文件,同时还可以管理和组织自己的媒体库。

第二章:安装和启动WindowsMediaPlayer要使用WindowsMediaPlayer播放音乐和视频文件,首先需要安装该软件。

用户可以在微软官方网站上下载安装程序,然后按照安装提示进行操作。

安装完成后,在开始菜单中可以找到WindowsMediaPlayer的快捷方式。

双击快捷方式或者在搜索栏中输入“WindowsMediaPlayer”,即可启动该软件。

第三章:添加媒体文件到WindowsMediaPlayer在WindowsMediaPlayer的界面中,可以通过多种方式添加音乐和视频文件到媒体库。

首先,可以通过“文件”菜单中的“添加到库”选项,选择要添加的文件或者文件夹。

其次,还可以直接将文件拖拽到WindowsMediaPlayer的主界面。

添加完成后,所有的媒体文件都会被组织到媒体库中。

第四章:播放音乐文件在媒体库中选择一首音乐文件,双击该文件,或者点击播放按钮,WindowsMediaPlayer就会开始播放该音乐文件。

播放过程中,可以使用播放控制按钮进行暂停、停止、上一个曲目、下一个曲目等操作。

此外,可以通过音量控制按钮调节音量大小,通过进度条控制按钮快进和快退。

第五章:播放视频文件在媒体库中选择一个视频文件,双击该文件,或者点击播放按钮,WindowsMediaPlayer就会开始播放该视频文件。

与音乐文件播放类似,可以使用播放控制按钮进行暂停、停止、上一个视频、下一个视频等操作。

调节音量和进度的方式也与音乐播放一致。

Windows Media Player——axWindowsMediaPlayer控件研究

Windows Media Player——axWindowsMediaPlayer控件研究

Windows Media Player控件研究初级问题:我的那个定时提醒程序中要用到它,初步使用问题已解决。

基本使用步骤如下:一、往控件箱中添加此控件:wmp.dll二、往窗体上拖控件三、wmp.URL=XXXX;wmp.play()即可。

平常应用就这三步就OK了。

但是,我想写个播放器的话,就遇到了一些问题。

在dotnet中使用非基于dotnet的控件,需要做一些额外的事,不过这些事vs已经帮我们做好了,当我们拖了此控件进窗体时,vs会自动调用AxImp.exe,用它根据原有的dll或ocx 生成一个用AxHost类包装的新的一组程序集(更为精确的描述见msdn),于是根据WMPLib.dll生成两个文件:AxInterop.WMPLib.dll、Interop.WMPLib.dll。

这两个文件中包含了转化后的类。

包装后的控件继承自System.Windows.Forms.AxHost。

这是第一个问题,控件怎么使用呢?如果是拖控件,很简单,无论如何都能有效的使用。

但是,如果手工new创建控件的实例呢?那就不一定了。

我做过种种实验,获得如下的结论:在非可视化类中无法创建有UI的控件的实例,或者是在没有把实例加入到一个可视化的容器中时。

我实验了下面的代码:AxWMPLib.AxWindowsMediaPlayer wmp = new AxWMPLib.AxWindowsMediaPlayer(); this.Controls.Add(wmp); wmp.URL = "约定.mp3"; wmp.Ctlcontrols.play();这几行代码不一定能运行。

发现,如果这几行代码写在窗体的构造函数中,哪怕show出来都不能运行,只有写在Load或Load之后的事件中,并且把窗体show出来才有运行,否则会抛出一个错误:引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。

用WPF制作简单的播放器

用WPF制作简单的播放器3 2011-4用WPF制作简单的播放器制作这个播放器我们要用到的一个控件是MediaElement。

在WPF中有个MediaPlayer类,这个类位于System.Windows.Media 命名空间下。

(提示:由于MediaPlayer是基于Windows Media Player 10 或更高版本,因此,只要Windows Media Player能播放的视频格式(如.wmv, .avi, .mpg等),在MediaPlayer或MediaElement中都能播放(前提是系统中必须安装Windows Media Player 10 或更高)。

)首先从工具箱里面拖出一个MediaElement,拖出3个按钮分别用于播放、暂停、停止,再拖出两个Slider分别用于控制播放进度和音量大小。

最后再调整一下布局界面,如下图:注意:MediaElement 的LoadedBehavior属性必须设置为 Manual 才能以交互方式停止、暂停和播放媒体。

XAML代码:01 <Window x:Class="Player.Window1"0 2xmlns="/winfx/2006/xaml/presen tation"03 xmlns:x="/winfx/2006/xaml"04 Title="Window1" Height="269" Width="357">05 <Grid>0 6<MediaElementSource="C:\Users\Administrator\Desktop\1.wmv" Margin="0,0,0,64 " Name="mediaElement1" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="Fill" MediaOpened="mediaElement1_MediaOpened" />07 <Button Height="33" Name="Play"VerticalAlignment="Bottom" FontSize="15" FontFamily="arial" Margin="13,0,0,3" HorizontalAlignment="Left" Width="34" Click="button1_Click">?</Button>08 <Button Height="33" Margin="55,0,0,3" Name="Pause"VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="36" Click="Pause_Click">█</Button>09 <Button Height="33" Margin="100,0,0,3" Name="Stop"VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="36" Click="Stop_Click">●</Button>10 <Slider Height="27" Margin="142,0,110,2"Name="Volume" VerticalAlignment="Bottom" HorizontalContentAlignment="Left"VerticalContentAlignment="Center" Minimum="0" Maximum="1" Value="0.5" ValueChanged="ChangeMediaVolume" Width="80" />11 <Slider Height="23" Margin="0,0,0,35"Name="TimeLine" VerticalAlignment="Bottom"ValueChanged="TimeLine_ValueChanged_1" Maximum="60" />1213 </Grid>14 </Window>下面是.cs文件中的功能代码:01 using System;02 using System.Collections.Generic;03 using System.Linq;04 using System.Text;05 using System.Windows;06 using System.Windows.Controls;07 using System.Windows.Data;08 using System.Windows.Documents;09 using System.Windows.Input;10 using System.Windows.Media;11 using System.Windows.Media.Imaging;12 using System.Windows.Navigation;13 using System.Windows.Shapes;1415 namespace Player16 {17 /// <summary>18 /// Window1.xaml 的交互逻辑19 /// </summary>20 public partial class Window1 : Window21 {22 public Window1()23 {24 InitializeComponent();25 }2627 private void button1_Click(object sender,RoutedEventArgs e)28 {29 mediaElement1.Play();30 //将音量调节到我们设定的音量值0.531 InitializePropertyValues();3233 }3435 private void Pause_Click(object sender,RoutedEventArgs e)36 {37 mediaElement1.Pause();38 }3940 private void Stop_Click(object sender,RoutedEventArgs e)41 {42 mediaElement1.Stop();43 }4445 private void ChangeMediaVolume(object sender,RoutedPropertyChangedEventArgs<double> e)46 {4748 mediaElement1.Volume =(double)Volume.Value;4950 }515253 void InitializePropertyValues()54 {55 mediaElement1.Volume =(double)Volume.Value;56 }5758 private void mediaElement1_MediaOpened(objectsender, RoutedEventArgs e) 59 {60 //获取媒体的时间长度,并赋予进度条的Maxinum61 TimeLine.Maximum =mediaElement1.NaturalDuration.TimeSpan.TotalMilliseconds;62 }6364 private void TimeLine_ValueChanged_1(objectsender, RoutedPropertyChangedEventArgs<double> e) 65 {66 //获取当前进度条的Value,也就是要播放的时间位置,定位媒体的位置67 int SliderValue = (int)TimeLine.Value;68 TimeSpan ts = new TimeSpan(0, 0, 0, 0,SliderValue);69 mediaElement1.Position = ts;7071 }727374 }75 }效果如下图所示:其他就不多说了,要提一点的是这个进度条这样写还不能和媒体的进度一样前进,要实现这个功能的话可以用MediaTimeline,有时间可以试一试。

C#windowsmediaplayer详细用法

C#windowsmediaplayer详细用法Media player控件基本使用步骤如下:属性/方法名说明:[基本属性]URL:String; 指定媒体位置,本机或网络地址uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible(不计大小写)playState:integer; 播放状态。

这个属性改变时同时引发PlayStateChange事件与StateChange事件。

取值范围为枚举型:WMPLib.WMPPlayState,它的成员如下:wmppsUndefined = 0; //未知状态wmppsStopped = 1; //播放停止wmppsPaused = 2; //播放暂停wmppsPlaying = 3; //正在播放wmppsScanForward = 4; //向前搜索wmppsScanReverse = 5; //向后搜索wmppsBuffering = 6; //正在缓冲wmppsWaiting = 7; //正在等待流开始wmppsMediaEnded = 8; //播放流已结束wmppsTransitioning = 9; //准备新的媒体文件wmppsReady = 10; //播放准备就绪wmppsReconnecting = 11; //尝试重新连接流媒体数据wmppsLast = 12; //上一次状态,状态没有改变在PlayStateChange中写代码可以防止播放rmvb等非默认类型的问题(用wmppsReady)。

enableContextMenu:Boolean; 启用/禁用右键菜单fullScreen:boolean; 是否全屏显示//播放器基本控制Ctlcontrols.play; 播放Ctlcontrols.pause; 暂停Ctlcontrols.stop; 停止Ctlcontrols.currentPosition:double; 当前进度Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。

音乐播放之进度条-自定义

⾳乐播放之进度条-⾃定义[要求]1. 进度条控件打算使⽤系统提供的SeekBar2. SeekBar 要⽀持拖拉功能即:定点播放3. SeekBar 要反映播放位置即:播放到哪 SeekBar 就在哪[原理]1. ⾳乐定点播放:MediaPlayer.seekTo(int msecond) //单位:毫秒2. ⾳乐⽂件播放时间:MediaPlayer.getDuration()3. SeekBar 获取位置:SeekBar.getProgress()4. SeekBar 最⼤值: SeekBar.getMax()[组件]1、Button :播放控制如:暂停继续2、TextView :显⽰播放百分⽐3、SeekBar :进度条4、RadioGroup :显⽰所有sdcard ⾳乐⽂件[代码步骤]1. 定义界⾯:main.xml1. <?xml version="1.0" encoding="utf-8"?>2. <LinearLayout xmlns:android="<ahref="/apk/res/android">/apk/res/android</a>"3. &nbsp;&nbsp;&nbsp; android:orientation="vertical"4. &nbsp;&nbsp;&nbsp; android:layout_width="fill_parent"5. &nbsp;&nbsp;&nbsp; android:layout_height="fill_parent"6. &nbsp;&nbsp;&nbsp; >7. <LinearLayout xmlns:android="<ahref="/apk/res/android">/apk/res/android</a>"8. &nbsp;&nbsp;&nbsp; android:orientation="horizontal"9. &nbsp;&nbsp;&nbsp; android:layout_width="fill_parent"10. &nbsp;&nbsp;&nbsp; android:layout_height="wrap_content"11. &nbsp;&nbsp;&nbsp; >12. <Button13. &nbsp;android:id="@+id/cmd"14. &nbsp;android:text="Loading..."15. &nbsp;android:layout_width="90dip"16. &nbsp;&nbsp;&nbsp; android:layout_height="wrap_content"17. &nbsp;&nbsp;&nbsp; android:singleLine="true"18. />19. <TextView20. &nbsp;android:id="@+id/progress"21. &nbsp;android:text="Progress.."22. &nbsp;android:layout_width="50dip"23. &nbsp;&nbsp;&nbsp; android:layout_height="fill_parent"24. &nbsp;&nbsp;&nbsp; android:gravity="center"25. &nbsp;&nbsp;&nbsp; android:singleLine="true"26. />27. </LinearLayout>28. <SeekBar&nbsp;29. &nbsp;android:id="@+id/seekb"30. &nbsp;android:max="100"31. &nbsp;&nbsp;&nbsp; android:layout_width="fill_parent"32. &nbsp;&nbsp;&nbsp; android:layout_height="wrap_content"33. &nbsp;&nbsp;&nbsp; />34. </LinearLayout>复制代码2. View 初始化1. public void initialize(){2.3. sBar = (SeekBar)findViewById(R.id.seekb);4. rGroup = (RadioGroup)findViewById(R.id.radio);5. cmdButton = (Button)findViewById(R.id.cmd);6.7. mPlayer = new MediaPlayer();8. }复制代码3. 拖动SeekBar 且播放指定位置的⾳乐1.2. sBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){3. @Override4. public void onProgressChanged(SeekBar seekBar, int progress,5. boolean fromUser) {6. // TODO Auto-generated method stub7.8. }9. @Override10. public void onStartTrackingTouch(SeekBar seekBar) {11. // TODO Auto-generated method stub12. }13. @Override14. public void onStopTrackingTouch(SeekBar seekBar) {15. // TODO Auto-generated method stub16. int dest = seekBar.getProgress();17.18. int mMax = mPlayer.getDuration();19. int sMax = sBar.getMax();20.21. mPlayer.seekTo(mMax*dest/sMax);22.23. }24.25. });复制代码4. 刷新播放位置且使其实时变化//因为MediaPlayer没有播放进度的回调函数所以只能:开辟⼀个Thread 定时通知其刷新1.2. public void startProgressUpdate(){3. //开辟Thread ⽤于定期刷新SeekBar4. DelayThread dThread = new DelayThread(100);5. dThread.start();6. }复制代码⽽该Thread 具体实现为:1.2. private Handler mHandle = new Handler(){3. @Override4. public void handleMessage(Message msg){5. int position = mPlayer.getCurrentPosition();6.7. int mMax = mPlayer.getDuration();8. int sMax = sBar.getMax();9.10. sBar.setProgress(position*sMax/mMax);11. }12. };13. public class DelayThread extends Thread {14. int milliseconds;15.16. public DelayThread(int i){17. milliseconds = i;18. }19. public void run() {20. while(true){21. try {22. sleep(milliseconds);23. } catch (InterruptedException e) {24. // TODO Auto-generated catch block25. e.printStackTrace();26. }27.28. mHandle.sendEmptyMessage(0);29. }30. }31. }复制代码5. emulator 运⾏截图:。

WPF媒体播放器(MediaElement)实例,实现进度和音量控制

所以 mePlayer.NaturalDuration.TimeSpan.TotalSeconds 不能在构造函数或者其他在MediaOpened事件前的方法中调用。
Xaml代码
<Grid> <Grid.RowDefinitions> <RowDefinition Height="180*"/> <RowDefinition Height="89*"/> </Grid.RowDefinitions> <MediaElement x:Name="mediaElement" LoadedBehavior="Manual" Volume="{Binding ElementName=sliderVolume,Path=Value}" Source="F:\MyDocument\视频\COOLUI理念篇.mp4" MediaOpened="mediaElement_MediaOpened" HorizontalAlignment="Left" Height="175" Margin="7,20,0,0" VerticalAlignment="Top" Width="275" Grid.RowSpan="2"/>
HorizontalAlignment="Left" Margin="119,52,0,0" Grid.Row="1" VerticalAlignment="Top" Width="164" Height="18"/> <Label x:Name="label1" Content="进度:" HorizontalAlignment="Left" Margin="73,21,0,0" Grid.Row="1" VerticalAlignment="Top" Height="25" Width="46"/> <Slider x:Name="sliderPosition"
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教你用MediaPlayer做个带进度条的音乐播
放器
先看效果图
很尴尬的一点就是大家没法听到音乐, 就只能看看图片.
布局文件
好像还有点小清新
MediaPlayer的使用
/**
* 初始化播放器MediaPlayer
*/
private void initMediaPlayer() {
//1. 加载选中歌曲
try {
// 设置音频文件路径, 或者是资源uri
if (mType == 1) {
(mFilePath);
} else if (mType == 2) {
Uri uri = (":///" + );
(this, uri);
} else {
return;
}
// 设置为循环, MediaPlayer预加载
(true);
();
} catch (Exception e) {
();
}
}
/**
* @param v 使用资源文件中的音乐
*/
public void addMusic(View v) {
mRawMusic = "";
et_input_(mRawMusic);
//2. 初始化播放器
mType = 2;
initMediaPlayer();
}
public void setDataSource(Context context, Uri uri);
public void setDataSource(String path);
你可以使用setDataSource来加载uri定位的文件, 也可以传入文件系统中的路径path来加载, 示例就是这么分的. 在这之后一定要记得调用prepare方法去预装文件.
/**
* @param v 播放按钮
*/
public void playMusic(View v) {
//1. 获取文件的持续时间
sb_(());
if (!()) {
();
}
}
/**
* @param v 暂停按钮
*/
public void pauseMusic(View v) {
if (()) {
();
}
}
/**
* @param v 停止按钮
*/
public void stopMusic(View v) {
if (()) {
();
initMediaPlayer();
}
}
这是三个按钮对应的点击方法, 要记得在播放前获取音乐文件的总时长, 并设置给进度条.
读取文件系统肯定是要权限的, 可以查看我之前的文章一个Util带你获取以上的读写sdcard权限
进度条的设置
/**
* 初始化进度条
*/
private void initSeekBar() {
//1. 设置进度条监听
isSeek = false;
sb_(new () {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isSeek = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
(());
isSeek = false;
}
});
//2. 开启线程同步进度条
new Thread() {
@Override
public void run() {
while (keepTrue) {
try {
(500);
} catch (InterruptedException e) {
();
}
if (!isSeek) {
sb_(());
}
}
}
}.start();
}
setOnSeekBarChangeListener的监听器有三个方法要重写, 除了用isSeek记录状态之外, 停止触摸之后使用MediaPlayer的seekTo方法是重点. 然后就是进度条的绘制肯定是要开新线程的. 有一点就是, 在while循环中, 条件参数不要直接写true, 要设置变量, 否则会警告啥的.
行了. 喜欢的快下载源码编译看看吧.。

相关文档
最新文档