96SEO 2026-02-19 20:42 13
掌握Kotlin面向对象的软件开发方面的基础知识。

巩固前期Activity、UI控件的使用。
掌握Service和BroadcastReceiver的特点及用法。
熟悉Android软件开发环境并掌握具体的工具的使用。
掌握Service和BroadcastReceiver组件的使用。
掌握移动应用软件分析和设计方法并能将其运用到工程实践当中。
逐步形成系统的设计的思想具有一定的创新精神。
养成良好的编程习惯。
根据Service及BroadcastReceiver的知识讲解和案例使用实现一个Android音乐播放器强化对服务与广播的理解。
要求能实现音乐的播放暂停上一首下一首等功能。
要求
巩固Android应用开发工具Eclipse或者Android
Studio的常规用法巩固Activity、UI控件的常规用法掌握Service和BroadcastReceiver的编程要点理解MediaPlayer的使用。
先考虑下简单音乐播放器的元素那肯定是播放暂停停止上一首和下一首了。
父布局是RelativeLayout然后是ListView显示歌单接下去就是Button按键了没什么需要讲的都过于基础。
xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityListViewandroid:idid/lv_musicandroid:layout_widthmatch_parentandroid:layout_height500dp/LinearLayoutandroid:idid/ll_playandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:layout_belowid/lv_musicandroid:layout_marginTop20dpButtonandroid:idid/btn_startandroid:layout_width0dpandroid:layout_weight1android:text开始播放android:textSize20spandroid:gravitycenterandroid:layout_margin5dpandroid:backgrounddrawable/btn_selectorandroid:layout_heightmatch_parent/Buttonandroid:idid/btn_pauseandroid:layout_width0dpandroid:layout_weight1android:text暂停播放android:textSize20spandroid:gravitycenterandroid:layout_margin5dpandroid:backgrounddrawable/btn_selectorandroid:layout_heightmatch_parent/Buttonandroid:idid/btn_stopandroid:layout_width0dpandroid:layout_weight1android:text停止播放android:textSize20spandroid:gravitycenterandroid:layout_margin5dpandroid:backgrounddrawable/btn_selectorandroid:layout_heightmatch_parent//LinearLayoutLinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:layout_belowid/ll_playandroid:layout_marginTop20dpButtonandroid:idid/btn_preandroid:layout_width0dpandroid:layout_weight1android:text上一首android:textSize20spandroid:gravitycenterandroid:layout_margin5dpandroid:backgrounddrawable/btn_selectorandroid:layout_heightmatch_parent/Buttonandroid:idid/btn_nextandroid:layout_width0dpandroid:layout_weight1android:text下一首android:textSize20spandroid:gravitycenterandroid:layout_margin5dpandroid:backgrounddrawable/btn_selectorandroid:layout_heightmatch_parent//LinearLayout/RelativeLayout2、音乐服务
其实播放音乐只需要MediaPlayer和start、resume等方法就行几行代码解决。
但Service越来越需要音乐播放器来体现出来作为四大组件之一Service从来不露脸借助Activity来发挥自己的才能。
是四大组件里面和Content
onCreate()方法在里面给mediaPlayer初始化和initMediaPlayer()init的方法中就是打开assets文件夹下的音乐调用setDataSource()设置数据源然后prepare()准备就绪。
MediaPlayer()initMediaPlayer()}fun
assetManager.openFd(fileName)mediaPlayer.setDataSource(fd.fileDescriptor,
fd.length)mediaPlayer.prepare()}既然要通过Service实现音乐服务那么就要控制音乐播放在MusicService类中定义一个内部类MusicControl。
它继承自Binder里面只有成员方法而且都没有返回值其实就是对mediaplaer的方法进行了封装。
start()、pause()、reset()全局变量index是歌曲下标在切换上下首时调用。
{mediaPlayer.reset()initMediaPlayer()}}fun
{mediaPlayer.reset()}initMediaPlayer()mediaPlayer.start()}fun
{mediaPlayer.reset()}initMediaPlayer()mediaPlayer.start()}}3、音乐播放
创建适配器使用默认的simple_list_item_1显示一行歌曲名就行。
如果你想自定义加上其他的歌曲元素可以自己创建一个适配器和子项布局文件。
这里讲解的重点是Service和Activity进行绑定。
{super.onCreate(savedInstanceState)binding
ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val
android.R.layout.simple_list_item_1,
musicList)binding.lvMusic.adapter
MusicService::class.java)bindService(musicIntent,
BIND_AUTO_CREATE)initView()}首先MainActivity里面还需要定义个内部类MusicConnection用于连接MusicService的内部类继承自ServiceConnection重写的分类方法中只是在连接上服务的时候将iBinder赋值给musicControl。
这里musicControl就是MusicService的内部类对应的对象。
musicControl:MusicService.MusicControlinner
MusicConnection:ServiceConnection
MusicService.MusicControl}override
{}}下面我们就用初始化好的MusicConnection对象来连接MainActivity和MusicService。
很简单的两句就好了。
MusicService::class.java)bindService(musicIntent,
BIND_AUTO_CREATE)下面我们设置下按钮的点击事件其实就是直接调用musicControl对象的方法。
{R.id.btn_start-{musicControl.playMusic()}R.id.btn_pause-{musicControl.pasueMusic()}R.id.btn_stop-{musicControl.stopMusic()}R.id.btn_pre-{musicControl.prePlay()}R.id.btn_next-{musicControl.nextPlay()}}}四、运行演示
打开就是主页面点击开始播放从第一首开始然后可以暂停播放再点开始播放就是继续播放随时停止播放上一首和下一首也无比流畅。
这已经是第四次做音乐播放器了这次做的也是最快的也可能是简单的原因没加什么复杂内容其实如果是从音乐文件的数据库中读取再播放我觉得就要花些时间了。
或者从SD卡中读文件也是不错的想法感兴趣的同学可以尝试挑战。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback