基于Android系统的音乐播放器设计与实现.docx
《基于Android系统的音乐播放器设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android系统的音乐播放器设计与实现.docx(14页珍藏版)》请在冰点文库上搜索。
![基于Android系统的音乐播放器设计与实现.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/a6594933-298f-40d2-9b8a-db7038474fdd/a6594933-298f-40d2-9b8a-db7038474fdd1.gif)
基于Android系统的音乐播放器设计与实现
基于Android系统的音乐播放器设计与实现
实验报告
ﻬ
一、实验要求:
本课程设计的目的是开发一个可以播放主流音乐文件格式的播放器的播放功能模块,要求音乐播放器能够播放Mp3,Wav多种格式的音乐文件,能够控制播放,暂停,重播,停止,要求视觉外观美观,操作简单。
二,设计思想
首先查找相关书籍与文献,了解Android的构架并搭建Android开发平台。
查找相关资料,了解现阶段基于Android平台手机音乐播放器发展现状以及相关功能。
播放器基本拥有以下功能:
播放本地音乐文件
对播放的状态进行控制
播放设置,开始暂停停止
三,系统结构
四、数据结构的说明和模块的算法流程图
ﻬ
5、使用说明书
菜单有6个功能:
播放,暂停,停止,重播。
播放功能:
点击后事件触发,传入歌曲名字,让程序操作该名字进行播放。
暂停功能:
点击后事件触发,歌曲暂停播放。
停止功能:
点击后事件触发,歌曲停止播放。
重播功能;点击后事件触发,歌曲重新播放。
6、运行结果和结果分析
作为Android平台上开发的应用软件,本设计具备与用户交互的界面,界面简洁美观易于操作。
作为一款在线音乐客户端,提供给用户在线选歌的方便,提供在线播放歌曲的即时信息,如歌曲名,歌手名,时长等等。
七、我评价与总结
现如今社会生活节奏日益加快,人们在忙碌的生活中欣赏音乐是最好的舒缓压力的方式之一。
随着移动设备的日益完善,我们大家都已经有了在手机上听自己喜欢歌曲的习惯,以往的做法是用数据线或者蓝牙等无线设备将PC上的歌曲复制几首到手机当中,反反复复的听,等到听厌了以后,再次装一些歌曲进去,如此反复,非常的麻烦。
因此,如果在我们的手机上能实现在线听歌,这将会带来极大的方便。
本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,是手机显得更生动灵活化,与人们更为方便,让手机主人随时随地处于音乐的旋律之中。
本设计实现的重要功能是播放Mp3格式的音乐文件,并且能够控制音乐的播放,暂停,显示歌手信息,歌曲专辑等功能。
本项目还可以使人们生活更加多样化,也使设计者更加熟悉Android的技术和其它在市场上的特点。
8、附录
packagecom.example.seekbar;
importandroid.app.Activity;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.os.Bundle;
importandroid.os.Handler;
import android.os.Message;
importandroid.view.Menu;
importandroid.view.View;
importandroid.view.View.OnClickListener;
import android.widget.Button;
importandroid.widget.SeekBar;
importandroid.widget.TextView;
importandroid.widget.Toast;
publicclass MainActivity extendsActivity {
MediaPlayermediaPlayer;
SeekBar seekBar;
private TextViewtext4;
Button playButton,pauseButton,close, exit;
//本地歌曲的路径
String path="/storage/sdcard1/sky.mp3";
ﻩ//处理进度条更新
ﻩHandlermHandler =newHandler(){
ﻩpublic voidhandleMessage(Messagemsg){
ﻩﻩswitch(msg.what){
ﻩcase0:
ﻩ//更新进度
ﻩﻩintposition=mediaPlayer.getCurrentPosition();
ﻩinttime = mediaPlayer.getDuration();
ﻩﻩﻩint max =seekBar.getMax();
ﻩﻩseekBar.setProgress(position*max/time);
break;
ﻩdefault:
ﻩﻩﻩbreak;
}
}
};// 结束
ﻩ@Override
ﻩprotectedvoidonCreate(BundlesavedInstanceState) {
ﻩﻩsuper.onCreate(savedInstanceState);
ﻩsetContentView(R.layout.activity_main);
init();
text4=(TextView)findViewById(R.id.text4);
ﻩﻩ//初始化关闭按钮
ﻩclose = (Button)findViewById(R.id.close);
ﻩclose.setOnClickListener(newOnClickListener(){
ﻩ@Override
ﻩﻩpublicvoidonClick(Viewarg0) {
ﻩﻩﻩclose();
ﻩ}
});
ﻩ// 初始化播放按钮
ﻩplayButton=(Button) findViewById(R.id.playButton);
ﻩplayButton.setOnClickListener(newOnClickListener(){
ﻩ@Override
publicvoidonClick(View arg0){
//TODOAuto-generatedmethodstub
ﻩﻩﻩToast.makeText(MainActivity.this,"timeis "+mediaPlayer.getDuration(),1000).show();
ﻩplay();
ﻩ}
});
ﻩﻩ// 初始化暂停按钮
ﻩpauseButton = (Button)findViewById(R.id.pauseButton);
ﻩﻩpauseButton.setOnClickListener(newOnClickListener(){
ﻩ@Override
ﻩpublicvoidonClick(View arg0){
ﻩpause();
ﻩﻩ}
ﻩﻩ});
ﻩ//初始化退出按钮
exit= (Button)findViewById(R.id.exit);
ﻩﻩexit.setOnClickListener(newOnClickListener(){
ﻩﻩﻩ@Override
ﻩﻩpublic void onClick(Viewarg0){
exit();
ﻩﻩ}
ﻩﻩ});
ﻩﻩseekBar= (SeekBar)findViewById(R.id.seekbar);
ﻩseekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener(){
ﻩﻩ@Override
ﻩpublicvoidonStopTrackingTouch(SeekBarseekBar){
ﻩﻩﻩ//手动调节进度
ﻩﻩﻩint dest=seekBar.getProgress();
ﻩﻩinttime= mediaPlayer.getDuration();
ﻩﻩintmax=seekBar.getMax();
ﻩmediaPlayer.seekTo(time*dest / max);
}
ﻩﻩﻩ@Override
ﻩﻩpublic voidonStartTrackingTouch(SeekBararg0){
ﻩﻩ// TODOAuto-generatedmethodstub
ﻩﻩ}
ﻩﻩ@Override
ﻩpublicvoidonProgressChanged(SeekBararg0,intarg1, boolean arg2){
ﻩﻩﻩﻩ//TODOAuto-generatedmethod stub
}
ﻩ});//seekbar结束
}
//初始化音乐播放
voidinit() {
ﻩﻩ//进入Idle
ﻩmediaPlayer=newMediaPlayer();
try {
ﻩ//初始化
ﻩmediaPlayer.setDataSource(path);
ﻩﻩmediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
ﻩ//prepare 通过异步的方式装载媒体资源
ﻩmediaPlayer.prepareAsync();
ﻩ//后台线程发送消息进行更新进度条
ﻩﻩfinal intmilliseconds=100;
ﻩnewThread(){
ﻩﻩﻩ@Override
ﻩpublicvoidrun(){
ﻩﻩﻩwhile(true){
ﻩﻩﻩﻩtry{
ﻩﻩﻩﻩﻩsleep(milliseconds);
ﻩﻩﻩ} catch(InterruptedExceptione){
ﻩﻩ//TODO Auto-generatedcatch block
ﻩﻩﻩﻩe.printStackTrace();
ﻩﻩﻩﻩ}
ﻩﻩﻩﻩﻩmHandler.sendEmptyMessage(0);
ﻩﻩﻩﻩ}
ﻩﻩ}
}.start();//11
ﻩﻩ} catch(Exceptione){
ﻩ//TODOAuto-generatedcatchblock
ﻩﻩe.printStackTrace();
ﻩﻩ}
ﻩ}
//关闭
ﻩprivatevoid close(){
ﻩﻩ
ﻩ}
// 测试播放音乐
void play(){
ﻩﻩmediaPlayer.start();
ﻩtext4.setText("音乐总长度为:
"+mediaPlayer.getDuration() + "毫秒");
ﻩ}
//暂停音乐
ﻩprivatevoidpause(){
if(mediaPlayer!
=null&&mediaPlayer.isPlaying()) {
ﻩﻩmediaPlayer.pause();
ﻩtext4.setText("暂停");
}
ﻩ}
ﻩ//关闭
ﻩprivatevoidexit() {
ﻩﻩthis.finish();
ﻩﻩ
}
//activity 退出时,停止播放音乐,释放资源
@Override
protectedvoidonDestroy(){
ﻩﻩ//在activity结束的时候回收资源
if(mediaPlayer!
= null &&mediaPlayer.isPlaying()){
ﻩmediaPlayer.stop();
ﻩmediaPlayer.release();
ﻩﻩﻩmediaPlayer =null;
ﻩ}
super.onDestroy();
}
ﻩ@Override
publicbooleanonCreateOptionsMenu(Menu menu){
ﻩﻩ//Inflatethemenu; thisaddsitemsto theactionbarif itispresent.
ﻩgetMenuInflater().inflate(R.menu.main,menu);
returntrue;
}
}
android="http:
//schemas.android.com/apk/res/android"
android:
layout_width="match_parent"
android:
layout_height="match_parent"
android:
orientation="vertical">
android:
id="@+id/text1"
android:
layout_width="match_parent"
android:
layout_height="100dp"
android:
layout_gravity="center"
android:
text="@string/text1"
android:
textSize="60dp"/>
android:
id="@+id/text2"
android:
layout_width="match_parent"
android:
layout_height="50dp"
android:
layout_gravity="center"
android:
text="@string/text2"
android:
textSize="30dp" />
<TextView
android:
id="@+id/text3"
android:
layout_width="match_parent"
android:
layout_height="40dp"
android:
layout_gravity="center"
android:
text="@string/text3"
android:
textSize="15dp"/>
android:
id="@+id/seekbar"
android:
layout_width="match_parent"
android:
layout_height="wrap_content"/>
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
orientation="horizontal" >
android:
id="@+id/close"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_weight="1"
android:
text="@string/close"/>
android:
id="@+id/playButton"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_weight="1"
android:
text="@string/play" />
android:
id="@+id/pauseButton"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_weight="1"
android:
text="@string/pause"/>
<Button
android:
id="@+id/exit"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
layout_weight="1"
android:
text="@string/exit"/>
LinearLayout>
android:
id="@+id/text4"
android:
layout_width="match_parent"
android:
layout_height="50dp"
android:
layout_gravity="center"
android:
text="@string/text4"
android:
textSize="20dp"/>
<TextView
android:
layout_width="match_parent"
android:
layout_height="60dp"
android:
layout_gravity="center"
android:
text="@string/text5"
android:
textSize="20dp" />
</LinearLayout>
<?
xmlversion="1.0"encoding="utf-8"?
>
莫晓莉
设置string>
<stringname="pause">暂停</string>
播放
<stringname="text1">音乐播放器
sky.mp3string>
进度调节器
<stringname="text4">ready
关闭</string>
<stringname="exit">退出