博舍

Android中实现播放背景音乐功能 ai写诗助手怎么关闭背景音乐声音

Android中实现播放背景音乐功能

文章目录实现思路准备音乐文件创建一个`IntentService`在`MainActivity`中启动服务`Demo`体验Alittlebitofprogresseveryday!Comeon!实现思路

在主活动中起一个服务,在服务中做播放背景音乐的操作。这里的服务可以是一般的Service,也可以是更加好用的IntentService。至于这两者的区别,不是本文的重点,大家可以自行查阅相关资料。我这里选择使用IntentService来实现功能。

准备音乐文件

这里我们把音乐资源文件放到res资源文件夹下的raw文件夹内,一开始没有raw文件夹,新建raw文件夹如下图:创建好后,能看到raw文件夹了,我们往里面粘贴已经拷贝了的音乐文件,如图:

后面我们可以使用这个音乐资源文件了。

创建一个IntentService

对于新建一个android项目我这里也不多讲。在新建好的项目对应代码所在包,点击右键New>Service>IntentService,如下图示:

最后点击Finish,会自己创建一个MyIntentService.java类,如图:MyIntentService.java类中的代码如下:

packagecom.example.zouqi.bgmusicdemo;importandroid.app.IntentService;importandroid.content.Intent;importandroid.media.MediaPlayer;importandroid.util.Log;/***An{@linkIntentService}subclassforhandlingasynchronoustaskrequestsin*aserviceonaseparatehandlerthread.*

*TODO:Customizeclass-updateintentactionsandextraparameters.*/publicclassMyIntentServiceextendsIntentService{//TODO:Renameactions,chooseactionnamesthatdescribetasksthatthis//IntentServicecanperform,e.g.ACTION_FETCH_NEW_ITEMSpublicstaticfinalStringACTION_FOO="com.example.zouqi.bgmusicdemo.action.FOO";publicstaticfinalStringACTION_BAZ="com.example.zouqi.bgmusicdemo.action.BAZ";//action声明publicstaticfinalStringACTION_MUSIC="com.example.zouqi.bgmusicdemo.action.music";//TODO:RenameparameterspublicstaticfinalStringEXTRA_PARAM1="com.example.zouqi.bgmusicdemo.extra.PARAM1";publicstaticfinalStringEXTRA_PARAM2="com.example.zouqi.bgmusicdemo.extra.PARAM2";//声明MediaPlayer对象privateMediaPlayermediaPlayer;publicMyIntentService(){super("MyIntentService");}@OverrideprotectedvoidonHandleIntent(Intentintent){if(intent!=null){finalStringaction=intent.getAction();if(ACTION_FOO.equals(action)){finalStringparam1=intent.getStringExtra(EXTRA_PARAM1);finalStringparam2=intent.getStringExtra(EXTRA_PARAM2);handleActionFoo(param1,param2);}elseif(ACTION_BAZ.equals(action)){finalStringparam1=intent.getStringExtra(EXTRA_PARAM1);finalStringparam2=intent.getStringExtra(EXTRA_PARAM2);handleActionBaz(param1,param2);}//根据intent设置的action来执行对应服务的操作if(ACTION_MUSIC.equals(action)){handleActionMusic();}}}/***该服务执行的操作用来播放背景音乐*/privatevoidhandleActionMusic(){if(mediaPlayer==null){//根据音乐资源文件创建MediaPlayer对象设置循环播放属性开始播放mediaPlayer=MediaPlayer.create(this,R.raw.test_520);mediaPlayer.setLooping(true);mediaPlayer.start();}}/***HandleactionFoointheprovidedbackgroundthreadwiththeprovided*parameters.*/privatevoidhandleActionFoo(Stringparam1,Stringparam2){//TODO:HandleactionFoothrownewUnsupportedOperationException("Notyetimplemented");}/***HandleactionBazintheprovidedbackgroundthreadwiththeprovided*parameters.*/privatevoidhandleActionBaz(Stringparam1,Stringparam2){//TODO:HandleactionBazthrownewUnsupportedOperationException("Notyetimplemented");}}

代码中除去原来创建类时就自带的对应方法外,我自己写的方法都写了对应的中文注释,理解起来简单,这里不详细说明了。

有的同学习惯自己新建一个服务类,不用工具中的创建服务的选项来创建服务类。那么这时候你自己还需要去清单配置文件中配置这个服务类。

因为我用的是工具创建服务的选项创建的服务,所以清单配置中自动给配置了。如图:

各位同学别忘记检查配置哦!

在MainActivity中启动服务

MainActivity.java类代码如下:

packagecom.example.zouqi.bgmusicdemo;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;publicclassMainActivityextendsActivity{privateIntentintent;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//启动服务播放背景音乐intent=newIntent(MainActivity.this,MyIntentService.class);Stringaction=MyIntentService.ACTION_MUSIC;//设置actionintent.setAction(action);startService(intent);}@OverrideprotectedvoidonDestroy(){super.onDestroy();if(intent!=null){//对于intentService,这一步可能是多余的stopService(intent);}}}

注释依旧详细(无须过多说明)。

Demo体验

给出我百度网盘的下载链接,感兴趣的同学可以去下载体验一下,很好听的一首歌哦!

Alittlebitofprogresseveryday!Comeon!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇