怎样用Android开发音乐播放器

最近开始学习音频相关。所以,很想自己做一个音乐播放器,于是,花了一天学习,将播放器的基本功能实现了出来。

操作方法

  • 01

    在市面上的音乐播放app,即时你关了。那么一样会在后台播放,所以播放的逻辑应该写在Service中。并且能够实现Service和Activity之间进行通信。那么Service是四大组件之一,所以在使用的时候一定不要忘了在配置文件中声明一下。 <service android:name="com.yakir.services.MusicService"> </service> 我们需要重写Service中的三个方法, onCreate(),onStartCommand(),onDestroy()。 onCreate():Service 第一次启动的时候调用这个方法,可以做一些变量的初始化。 onStartCommand():Service 每一次启动的时候调用这个方法,可以在此方法写一些业务逻辑。 onDestroy():Service 销毁的时候调用,用于释放资源。

  • 02

    接下来,如果需要播放一个音乐文件,可以使用安卓自带的播放器MediaPlayer,将播放逻辑封装起来。

  • 03

    我们知道,UI是写在Activity中的,那么就涉及到Activity与Service之间进行通信,他们之间通信的方式有5种,这里我是用了Intent,调用startService()进行通信, 同时让Intent携带一组键值对数据,与Service端进行匹配。

  • 04

    我们需要设置Service: Override    public int onStartCommand(Intent intent, int flags, int startId) { Log.e("thread",Thread.currentThread().getName() ); String option=intent.getStringExtra("option"); if (messenger==null) { messenger = (Messenger) intent.getExtras().get("messenger"); } if ("开始".equals(option)) { start(intent.getStringExtra("path")); } else if ("暂停".equals(option)) { pause(); } else if ("继续".equals(option)) { continuePlay(); } else if ("停止".equals(option)) { stop(); } else if ("跳转".equals(option)) { seekPlay(intent.getIntExtra("progress",-1)); } return super.onStartCommand(intent, flags, startId);    }

  • 05

    这样,就实现了两者之间的通信,接下来,当我点击下一首的时候,那么下一个item的文字高亮,并且播放下一首歌。我们还要先从系统中拿到所有的音频数据。 public static void getSongList (Context context) { musicBeanList.clear(); Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor cursor=context.getContentResolver().query(uri, new String[]{ MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.DATA},null,null,null); while (cursor.moveToNext()) { musicBeanList.add(new MusicBean( cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)), cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)), cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA))));        }    }

  • 06

    通过内容提供者,拿到系统的所有音频数据,以及音频的相关信息。DATA就是音频路径,拿到音频路径后就可以根据现实位置进行播放切换了。我们需要知道当前的item位置和下一个item位置,当点击下一首歌曲,下个位置高亮,其他位置不亮。所以,需要我们定义一个常量记录当前位置,并且,当点击下一首,常量增加,上一首,常量减少。

  • 07

    接下来,需要实现一个更随音乐播放进度的进度条,这就需要实现Service向Activity的通信,可以通过消息机制,让Service发送消息给Activity,将播放信息传递给Activity.拿着这个Intent传一个信使(Messager).在SeekBar中设置监听,当拖动停止时把当前进度传给Service,让音乐就当前位置播放。同时,我们需要注意到一个情况,当启动电话时,音乐应该是停止状态,可以通过AudioManager获得音频焦点,当焦点失去时,音乐也应该停止。

  • 08

    好了,这样一个简单的音乐播放器就完成了,虽然说代码不是很困难,但是还是有很多知识点,比如Activity中Service中的通信,以及ListView相关,还有程序的逻辑性,所以大家一定要多加努力!

Messenger APP
(0)

相关推荐

  • 如何一步步设计开发一款音乐播放器App

    OooPlay 是一款极简音乐播放器,本文是产品原型设计培训师.OooPlay 设计者尹广磊的分享,文中详细阐述了OooPlay在产品原型设计和开发过程中的思维演化方式以及产品心路历程,在此分享给感兴 ...

  • Ubuntu 14.04 用户如何安装深度音乐播放器和百度音乐插件

    播放本地音乐或者收听国外的音乐电台,Ubuntu 14.04 自带的音乐播放器 Rhythmbox 完全能够满足,但是如果你想有像酷狗那样的国内播放器就需要折腾一下,还好有深度音乐播放器,这是一款完全 ...

  • 小米 MIUI 音乐播放器 歌名 显示乱码的解决办法

    (此方法适合刷MIUI系统的手机.也适合没有刷MIUI系统,但是安装了MIUI音乐的手机) MIUI自带的音乐播放器界面做的还是比较漂亮的,相信大家很多一直在用自带的音乐播放器,首先自带的播放器跟系统 ...

  • 2015音乐播放器排行榜

    2015音乐播放器排行榜

  • 排名第一的音乐播放器是哪个?2019手机音乐app排行榜

    音乐越来越离不开我们的生活,好用的音乐播放器能让我们更好的去享受音乐,那么排名第一的音乐播放器是哪个?根据在2019年5月的用户活跃量,为大家整理了2019手机音乐app排行榜. 2019手机音乐ap ...

  • 介绍5 款好用的 Linux 音乐播放器

    目前 Linux 上有几十个音乐播放器,这使得找到一个最好用的变成很困难.其中的一些播放器,如 Cantata,Exaile,甚至不那么出名的 Clementine,Nightingale 和 Quo ...

  • Google音乐播放器使用指南

    Google音乐播放器(Google Music Player)是一款全新的播放器, 极简化的使用接口设计.刻意雾化处理的背景:除了外观接口上的改变外,未来音乐播放(或其他)操作也可能往全软件按键的方 ...

  • 百度音乐播放器怎么转换音乐格式 音乐转换格式教程

    使用百度音乐播放器下载音乐格式不能用其他移动设备播放,其实我们可以将音乐格式转换成通用模式,百度音乐播放器怎么转换音乐格式?下面小编就为大家介绍一下音乐转换格式教程。 百度音乐播放器怎么转换音乐格式 ...

  • 将百度音乐的歌曲链接复制到其他音乐播放器中

    在百度音乐上试听了歌曲,觉得很好听,但在其他的音乐播放器中无法找到该歌曲,我们可以将百度音乐上搜索到的歌曲链接复制到其他音乐播放器中,这样就可以听到了。 1、如下图所示,我们在百度音乐盒当中试听歌曲就 ...