安卓音乐播放器总结Word下载.docx
- 文档编号:22091544
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:2.36MB
安卓音乐播放器总结Word下载.docx
《安卓音乐播放器总结Word下载.docx》由会员分享,可在线阅读,更多相关《安卓音乐播放器总结Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
2.1.1播放器的用例图
假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下
图2.1播放器基本用例图
2.1.2用例分析
用例名称:
启动软件
参与者:
用户
目标:
使得用户启动软件并加载手机和sd卡上的音频文件到播放列表
前置条件:
无
基本事件流:
1.用户启动软件
2.播放器将播放列表中的当前的歌曲
播放
使得用户可以播放在播放列表中选中的歌曲
播放器正在运行
1.用户单击“播放”按钮
暂停
使得用户可以暂停正在播放的歌曲
歌曲正在播放且未停止和暂停
1.用户单击“暂停”按钮
2.播放器将暂停当前的歌曲
停止
使得用户可以停止正在播放的歌曲
歌曲正在播放或暂停
1.用户单击“停止”按钮
2.播放器将停止当前播放的歌曲
退出
使得用户退出或者后台播放音乐
程序在运行
1.用户按返回键
2.播放器退出或者进入后台播放
3.概要设计
3.1软件播放流程图
Step1.启动软件后,软件自动检索手机和sd卡的音频文件,并组织显示成列表.
Step2.点击列表的歌曲名字。
Step3.播放音乐。
Step4.点击暂停,音乐暂停
Step5.点击播放转到step3
Step6.点击停止停止播放音乐
Step7.点击退出。
图3.1音乐播放器流程图
4.界面展示
4.1软件部署
系统编译生成apk文件,将apk文件拷到手机或者sd卡中,直接打开即可安装。
4.2启动软件
打开软件后的界面
4.3歌曲列表界面
歌曲列表界面
4.4播放界面
5.部分源代码
以下给出功能实现代码,布局,风格等代码量过大,放在压缩文件中
文件夹显示文件如图所示
播放器页面布局
Main.xml代码如下<
LinearLayoutxmlns:
android="
android:
orientation="
vertical"
layout_width="
fill_parent"
layout_height="
background="
@drawable/tupian"
>
<
ListView
id="
@+id/android:
list"
200dip"
layout_weight="
1"
drawSelectorOnTop="
false"
/>
SeekBar
@+id/SeekBar01"
wrap_content"
max="
100"
progress="
0"
secondaryProgress="
visibility="
visible"
TextView
@+id/currentProgress"
layout_y="
300dp"
@+id/curtimeandtotaltime"
LinearLayout
horizontal"
ImageButton
@+id/front_button"
layout_marginLeft="
10dip"
@drawable/first1"
@+id/stop_button"
@drawable/stop1"
@+id/start_button"
@drawable/start1"
@+id/pause_button"
@drawable/pose1"
@+id/next_button"
@drawable/next1"
/LinearLayout>
<
MainActivity.Java代码如下
importjava.io.File;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.ListActivity;
importandroid.graphics.Color;
importandroid.graphics.drawable.GradientDrawable;
importandroid.graphics.drawable.GradientDrawable.Orientation;
importandroid.media.MediaPlayer;
importandroid.media.MediaPlayer.OnCompletionListener;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.KeyEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.ImageButton;
importandroid.widget.ListView;
importandroid.widget.SeekBar;
importandroid.widget.SeekBar.OnSeekBarChangeListener;
importandroid.widget.TextView;
publicclassMainActivityextendsListActivity{
privateImageButtonmFrontImageButton=null;
privateImageButtonmStopImageButton=null;
privateImageButtonmStartImageButton=null;
privateImageButtonmPauseImageButton=null;
privateImageButtonmNextImageButton=null;
/*定义进度handler,显示百分比进度*/
HandlermPercentHandler=newHandler();
privateSeekBarmSeekBar=null;
privateTextViewcurProgressText=null;
privateTextViewcurtimeAndTotaltime=null;
publicMediaPlayermMediaPlayer;
privateList<
String>
mMusicList=newArrayList<
();
privateintcurrentListItem=0;
privatestaticfinalStringMUSIC_PATH=newString("
/sdcard/"
);
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
musicList();
mMediaPlayer=newMediaPlayer();
initmFrontMusic();
initStopMusic();
initStartMusic();
initPauseMusic();
initNextMusic();
initSeekBar();
}
publicvoidinitmFrontMusic()
{
mFrontImageButton=(ImageButton)findViewById(R.id.front_button);
mFrontImageButton.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewarg0){
if(--currentListItem>
=0){
currentListItem=mMusicList.size();
}else{
playMusic(MUSIC_PATH+mMusicList.get(currentListItem));
}
}
});
publicvoidinitStopMusic()
mStopImageButton=(ImageButton)findViewById(R.id.stop_button);
mStopImageButton.setOnClickListener(newOnClickListener(){
if(mMediaPlayer.isPlaying())
{
mMediaPlayer.reset();
}
publicvoidinitStartMusic()
mStartImageButton=(ImageButton)findViewById(R.id.start_button);
mStartImageButton.setOnClickListener(newOnClickListener(){
playMusic(MUSIC_PATH+mMusicList.get(currentListItem));
startSeekBarUpdate();
publicvoidinitPauseMusic()
mPauseImageButton=(ImageButton)findViewById(R.id.pause_button);
mPauseImageButton.setOnClickListener(newOnClickListener(){
if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
else{
mMediaPlayer.start();
publicvoidinitNextMusic()
mNextImageButton=(ImageButton)findViewById(R.id.next_button);
mNextImageButton.setOnClickListener(newOnClickListener(){
nextMusic();
publicvoidinitSeekBar()
/*初始化拖动条和当前进度显示值*/
mSeekBar=(SeekBar)findViewById(R.id.SeekBar01);
curProgressText=(TextView)findViewById(R.id.currentProgress);
curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);
mSeekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){
publicvoidonProgressChanged(SeekBarseekBar,intprogress,
booleanfromUser){
/*如果拖动进度发生改变,则显示当前进度值*/
curProgressText.setText("
当前进度:
"
+progress);
publicvoidonStartTrackingTouch(SeekBararg0){
拖动中..."
publicvoidonStopTrackingTouch(SeekBararg0){
intdest=mSeekBar.getProgress();
intmMax=mMediaPlayer.getDuration();
intsMax=mSeekBar.getMax();
mMediaPlayer.seekTo(mMax*dest/sMax);
privatevoidplayMusic(Stringpath)
try{
mMediaPlayer.reset();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(newOnCompletionListener(){
publicvoidonCompletion(MediaPlayerarg0){
nextMusic();
});
}catch(IOExceptione){
e.printStackTrace();
privatevoidnextMusic()
if(++currentListItem>
=mMusicList.size())
{
currentListItem=0;
else
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==KeyEvent.KEYCODE_BACK){
mMediaPlayer.stop();
mMediaPlayer.release();
returnsuper.onKeyDown(keyCode,event);
protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
currentListItem=position;
playMusic(MUSIC_PATH+mMusicList.get(position));
super.onListItemClick(l,v,position,id);
//播放列表
publicvoidmusicList()
Filehome=newFile(MUSIC_PATH);
if(home.listFiles(newMusicFilter()).length>
0)
for(Filefile:
home.listFiles(newMusicFilter()))
{
mMusicList.add(file.getName());
ArrayAdapter<
musicList=newArrayAdapter<
(MainActivity.this,R.layout.musicitem,mMusicList);
setListAdapter(musicList);
/*更新拖动条进度*/
publicvoidstartSeekBarUpdate(){
mPercentHandler.post(start);
Runnablestart=newRunnable(){
publicvoidrun(){
//用一个handler更新SeekBar
mPercentHandler.post(updatesb);
};
Runnableupdatesb=newRunnable(){
publicvoidrun(){
intposition=mMediaPlayer.getCurrentPosition();
intmMax=mMedi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 播放 总结