一个完整android音乐播放器源码.docx
- 文档编号:13259234
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:36
- 大小:59.24KB
一个完整android音乐播放器源码.docx
《一个完整android音乐播放器源码.docx》由会员分享,可在线阅读,更多相关《一个完整android音乐播放器源码.docx(36页珍藏版)》请在冰点文库上搜索。
一个完整android音乐播放器源码
本文出自:
欢迎转载,转载请注明出自:
安卓开发网
下面将和大家一起介绍一个音乐播放器项目,完成后的播放器具有暂停,下一首,前一首,歌曲列表,播放条进度等一些基本功能,它只是播放SDCARD上的.map文件,
AndroidSDK为我们提供了一个MeidaPlayer类,有了这个类我们可以很方便的创建一个mdeiaplayer服务,该类中具有一些方法:
MediaPlayermp=newMediaPlayer();
//设置文件存储路径
setDataSource("/sdcard/path_to_song");
//播放
mp.start();
//暂短
mp.pause();
//复位
mp.reset();
//获取当前播放时长
mp.getDuration();
//进度条
mp.getCurrentDuration();
//Movesongtoparticularsecond-usedforForwardorBackward
mp.seekTo(positon);//positioninmilliseconds
//检测歌曲是否正在播放
mp.isPlaying();//returnstrueorfalse
1:
音乐播放器的界面:
播放器界面中所用的一些布局图片,这些图片大家可以到androidSDK文件夹下或是到网络中去寻找一些类似就可以,并不一定要这些图片,代码才是我们的关键,
3:
然后我们需要写一个XML布局文件用于播放器的播按钮在不同状态下的图片,此XML文件保存在drawable文件夹下,
btn_play.xml
android=""> drawable="@drawable/img_btn_play_pressed" android: state_focused="true" android: state_pressed="true"/> drawable="@drawable/img_btn_play_pressed" android: state_focused="false" android: state_pressed="true"/> drawable="@drawable/img_btn_play_pressed" android: state_focused="true"/> drawable="@drawable/img_btn_play" android: state_focused="false" android: state_pressed="false"/> 提示: 大家可以根据此XML文件完成其它的一些按钮布局文件,在这里就没有再为大家一一提供了, 4: 为了让播放器更绚,我们可以自定义一个SeekBar作为歌曲的播放进度,自定义风格代如下: (4.1)更换背景图片: seekbar_progress_bg.xml xmlversion="1.0"encoding="utf-8"? > android=""> android="" android: src="@drawable/img_seekbar_progress_blue" android: tileMode="repeat" android: antialias="true" android: dither="false" android: filter="false" android: gravity="left" /> (4.2)ChangingSeekBarProgress: seekbar_progress.xml xmlversion="1.0"encoding="utf-8"? > android=""> id="@android: id/background" android: drawable="@drawable/img_seekbar_bg" android: dither="true"> id="@android: id/secondaryProgress"> android: startColor="#80028ac8" android: centerColor="#80127fb1" android: centerY="0.75" android: endColor="#a004638f" android: angle="270" /> android: id="@android: id/progress" android: drawable="@drawable/seekbar_progress_bg" /> (4.3)实际的Seekbar控件定义如下: android: id="@+id/songProgressBar" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_marginRight="20dp" android: layout_marginLeft="20dp" android: layout_marginBottom="20dp" android: layout_above="@id/player_footer_bg" android: thumb="@drawable/seek_handler" android: progressDrawable="@drawable/seekbar_progress" android: paddingLeft="6dp" android: paddingRight="6dp"/> 5: 接下来我们将实现播放的整体界面的布局文件: player.xml xmlversion="1.0"encoding="utf-8"? > android="" android: layout_width="match_parent" android: layout_height="match_parent" android: background="@color/player_background"> --PlayerHeader--> android: id="@+id/player_header_bg" android: layout_width="fill_parent" android: layout_height="60dip" android: background="@layout/bg_player_header" android: layout_alignParentTop="true" android: paddingLeft="5dp" android: paddingRight="5dp"> --SongTitle--> android: id="@+id/songTitle" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_weight="1" android: textColor="#04b3d2" android: textSize="16dp" android: paddingLeft="10dp" android: textStyle="bold" android: text="TheGood,TheBadAndTheUgly" android: layout_marginTop="10dp"/> --Playlistbutton--> android: id="@+id/btnPlaylist" android: layout_width="wrap_content" android: layout_height="fill_parent" android: src="@drawable/btn_playlist" android: background="@null"/> --SongThumbnailImage--> android: id="@+id/songThumbnail" android: layout_width="fill_parent" android: layout_height="wrap_content" android: paddingTop="10dp" android: paddingBottom="10dp" android: gravity="center" android: layout_below="@id/player_header_bg"> layout_width="wrap_content" android: layout_height="wrap_content" android: src="@drawable/adele"/> --PlayerFooter--> android: id="@+id/player_footer_bg" android: layout_width="fill_parent" android: layout_height="100dp" android: layout_alignParentBottom="true" android: background="@layout/bg_player_footer" android: gravity="center"> --PlayerButtons--> android: layout_width="wrap_content" android: layout_height="wrap_content" android: orientation="horizontal" android: gravity="center_vertical" android: background="@layout/rounded_corner" android: paddingLeft="10dp" android: paddingRight="10dp"> --PreviousButton--> android: id="@+id/btnPrevious" android: src="@drawable/btn_previous" android: layout_width="wrap_content" android: layout_height="wrap_content" android: background="@null"/> --BackwardButton--> android: id="@+id/btnBackward" android: src="@drawable/btn_backward" android: layout_width="wrap_content" android: layout_height="wrap_content" android: background="@null"/> --PlayButton--> android: id="@+id/btnPlay" android: src="@drawable/btn_play" android: layout_width="wrap_content" android: layout_height="wrap_content" android: background="@null"/> --ForwardButton--> android: id="@+id/btnForward" android: src="@drawable/btn_forward" android: layout_width="wrap_content" android: layout_height="wrap_content" android: background="@null"/> --NextButton--> android: id="@+id/btnNext" android: src="@drawable/btn_next" android: layout_width="wrap_content" android: layout_height="wrap_content" android: background="@null"/> --ProgressBar/Seekbar--> android: id="@+id/songProgressBar" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_marginRight="20dp" android: layout_marginLeft="20dp" android: layout_marginBottom="20dp" android: layout_above="@id/player_footer_bg" android: thumb="@drawable/seek_handler" android: progressDrawable="@drawable/seekbar_progress" android: paddingLeft="6dp" android: paddingRight="6dp"/> --TimerDisplay--> android: id="@+id/timerDisplay" android: layout_above="@id/songProgressBar" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_marginRight="20dp" android: layout_marginLeft="20dp" android: layout_marginBottom="10dp"> --CurrentDurationLabel--> android: id="@+id/songCurrentDurationLabel" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_weight="1" android: gravity="left" android: textColor="#eeeeee" android: textStyle="bold"/> --TotalDurationLabel--> android: id="@+id/songTotalDurationLabel" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_weight="1" android: gravity="right" android: textColor="#04cbde" android: textStyle="bold"/> --Repeat/Shufflebuttons--> android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_above="@id/timerDisplay" android: gravity="center"> --RepeatButton--> android: id="@+id/btnRepeat" android: layout_width="wrap_content" android: layout_height="wrap_content" android: src="@drawable/btn_repeat" android: layout_marginRight="5dp" android: background="@null"/> --ShuffleButton--> android: id="@+id/btnShuffle" android: layout_width="wrap_content" android: layout_height="wrap_content" android: src="@drawable/btn_shuffle" android: layout_marginLeft="5dp" android: background="@null"/> 6: 有了播放器的播放界面后,我们再将所有歌曲显示的界面实现了,播放器的歌曲列表用的一个listview控件,同样我们也为该listview控件自定义,适合播放的整体界面风格, list_selector.xml xmlversion="1.0"encoding="utf-8"? > android=""> --Selectorstyleforlistrow--> android: state_selected="false" android: state_pressed="false" android: drawable="@drawable/gradient_bg"/> state_pressed="true" android: drawable="@drawable/gradient_bg_hover"/> state_selected="true" android: state_pressed="false" android: drawable="@drawable/gradient_bg_hover"/> 歌曲列表界面布局文件: playlist.xml xmlversion="1.0"encoding="utf-8"? > android="" android: layout_width="fill_parent" android: layout_height="fill_parent" android: orientation="vertical"> android: id="@android: id/list" android: layout_width="fill_parent" android: layout_height="fill_parent" android: divider="#242424" android: dividerHeight="1dp" android: listSelector="@drawable/list_selector"/> listviewr的item界面布局,用于定义单个歌曲的显示界面: playlist_item.xml xmlversion="1.0"encoding="utf-8"? > android="" android: layout_width="match_parent" android: layout_height="match_parent" android: orientation="vertical" android: gravity="center" android: background="@drawable/list_selector" android: padding="5dp"> android: id="@+id/songTitle" android: layout_width="fill_parent" android: layout_height="wrap_content" android: textSize="16dp" android: padding="10dp" android: color="#f3f3f3"/> 歌曲列表界面图: 7: 到此为止我们在上面已经完成了该项目的所有布局文件,下面我们就来实现SongManager.java类,这个类用于扫描设备中所有.mp3文件, SongsManager.mp3 publicclassSongsManager{ //SDCardPath finalStringMEDIA_PATH=newString(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 完整 android 音乐 播放 源码