Android Studio Service编程 音乐播放器_第1页
Android Studio Service编程 音乐播放器_第2页
Android Studio Service编程 音乐播放器_第3页
Android Studio Service编程 音乐播放器_第4页
Android Studio Service编程 音乐播放器_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、广州xx学院Android程序设计实验报告Android程序设计实验报告专业班级计算机181实验日期2021.5.18姓名xx学号201xx实验名称Service编程指导老师xx(报告内容包括:实验目的、实验设备及器材、实验步骤、实验数据、图表及曲线处理、实验小结等)。实验目的了解如何创建服务;掌握服务的两种启动方式;掌握如何使用本地服务通信。实验要求使用服务通信,实现音乐播放器功能,实现音乐的播放、暂停、继续播放、退出。实验步骤(1)导入音乐文件和界面图片之后,开始创建布局,代码如下,效果图如图1-1所示。Buttonandroid:id=+id/btn_playandroid:layout

2、_width=0dpandroid:layout_height=40dpandroid:layout_margin=8dpandroid:layout_weight=1android:background=drawable/btn_bg_selectorandroid:text=播放音乐/Buttonandroid:id=+id/btn_pauseandroid:layout_width=0dpandroid:layout_height=40dpandroid:layout_margin=8dpandroid:layout_weight=1android:background=drawable

3、/btn_bg_selectorandroid:text=暂停播放/Buttonandroid:id=+id/btn_continue_playandroid:layout_width=0dpandroid:layout_height=40dpandroid:layout_margin=8dpandroid:layout_weight=1android:background=drawable/btn_bg_selectorandroid:text=继续播放/Buttonandroid:id=+id/btn_exitandroid:layout_width=0dpandroid:layout_h

4、eight=40dpandroid:layout_margin=8dpandroid:layout_weight=1android:background=drawable/btn_bg_selectorandroid:text=*/图1-1界面布局效果图(2)创建背景选择器btn_bg_selectorxml图1-1界面布局效果图(2)创建背景选择器btn_bg_selectorxml关键代码如下:/7110:(2MusicPIayer10:293r退出播放selectorxmlns:android= HYPERLINK /apk/res/android /apk/res/androidsha

5、peandroid:shape=rectanglecornersandroid:radius=3dp/solidandroid:color=#d4d4d4/itemandroid:state_pressed=falseshapeandroid:shape=rectanglecornersandroid:radius=3dp/solidandroid:color=#ffffff/shape/item/selector)(3)创建MusicService服务关键代码如下所示:publicclassMusicServiceextendsServiceprivateMediaPlayerplayer;

6、privateTimertimer;publicMusicService。OverridepublicIBinderonBind(Intentintent)returnnewMusicControl();OverridepublicvoidonCreate()super.onCreate();player=newMediaPlayer();/创建音乐播放器对象publicvoidaddTimer()/添加计时器用于设置音乐播放器中的播放进度条if(timer=null)timer=newTimer();/创建计时器对象TimerTasktask=newTimerTask()Overridepu

7、blicvoidrun()if(player=null)return;intduration=player.getDuration();/获取歌曲总时长intcurrentPosition=player.getCurrentPosition();/获取播放进度Messagemsg=MainActivity.handler.obtainMessage();/仓1建消息对象/将音乐的总时长和播放进度封装至消息对象中Bundlebundle=newBundle();bundle.putInt(duration,duration);bundle.putInt(currentposition,curre

8、ntposition);msg.setData(bundle);/将消息发送到主线程的消息队列MainActivity.handler.sendMessage(msg);/开始计时任务后的5毫秒,第一次执行task任务,以后每50。毫秒执行次timer.schedule(task,5,500);classMusicControlextendsBinderpublicvoidplay()tryplayer.reset();/重置音乐播放器/加载多媒体文件player=MediaPlayer.create(getApplicationContext(),R.raw.music);player.st

9、art();/播放音乐addTimer();/添加计时器catch(Exceptione)e.printStackTrace();publicvoidpausePlay()player.pause();/暂停播放音乐publicvoidcontinuePlay()player.start();/继续播放音乐publicvoidseekTo(intprogress)player.seekTo(progress);/设置音乐的播放位置OverridepublicvoidonDestroy()super.onDestroy();if(player=null)return;if(player.isPl

10、aying()player.stop();/停止播放音乐player.release();/释放占用的资源player=null;/将player置为空(4)编写界面交互代码关键代码如下:publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListenerprivatestaticSeekBarsb;privatestaticTextViewtv_progress,tv_total;privateObjectAnimatoranimator;privateMusicService.MusicControlmu

11、sicControl;MyServiceConnconn;Intentintent;privatebooleanisUnbind=false;/记录服务是否被解绑OverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedlnstanceState);setContentView(R.layout.activity_main);init();privatevoidinit()tv_progress=(TextView)findViewById(R.id.tv_progress);tv_total=(Tex

12、tView)findViewById(R.id.tv_total);sb=(SeekBar)findViewById(R.id.sb);findViewById(R.id.btn_play).setOnClickListener(this);findViewById(R.id.btn_pause).setOnClickListener(this);findViewById(R.id.btn_continue_play).setOnClickListener(this);findViewById(R.id.btn_exit).setOnClickListener(this);intent=new

13、Intent(this,MusicService.class);/仓U建意图对象conn=newMyServiceConn();/创建服务连接对象bindService(intent,conn,BIND_AUTO_CREATE);/绑定服务/为滑动条添加事件监听sb.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener()OverridepublicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser)/滑动条进度改变时,停止播放动画会调用此方法if

14、(progress=seekBar.getMax()/当滑动条滑到末端时,结束动画停止播放动画animator.pause();OverridepublicvoidonStartTrackingTouch(SeekBarseekBar)/滑动条开始滑动时调用OverridepublicvoidonStopTrackingTouch(SeekBarseekBar)/滑动条停止滑动时调用根据拖动的进度改变音乐播放进度intprogress=seekBar.getProgress();/获取seekBar的进度musicControl.seekTo(progress);/改变播放进度);ImageViewiv_music=(ImageView)findViewById(R.id.iv_music);animator=ObjectAnimator.ofFloat(iv_music,rotation,0f,360.0f);animator.setDuration(10000);/动画旋转一周的时间为。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论