运用Services来实现
概述
Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于
系统中不容易被用户发觉,可以使用它开发如监控之类的程序。
Service在后台运行,在默认情况下,Service运行在应用程序进程的主线程中,如果需要在Service中处理一些比较耗时的操作,那么应该将这些任务放在单独的线程中处理,避免阻塞用户界面。

设计思路

  1. 在页面中添加一个播放音乐和停止音乐的按钮。
  2. 编写多线程实现后台播放背景音乐的service。
  3. 在MainActivity中添加开始播放和停止的方法。
  4. 在AndroidManifest.xml文件中的节点里对服务进行配置:
    <service android:name=" SMSService "></service>

注意问题

  1. 要注意两个按钮的查找。
  2. 在对应的方法中添加监视器,调用service的开始和结束方法。
  3. 为了实现交互,需要定义一个Binder对象。
  4. 正确的配置service属性。

主界面

主要代码:
AudioService
public class AudioService extends Service implementsMediaPlayer.OnCompletionListener {// 实例化MediaPlayer对象MediaPlayer player;private final IBinder binder = new AudioBinder();@Overridepublic IBinder onBind(Intent intent) {return binder;}public void onCreate() {super.onCreate();// 从raw文件夹中获取一个应用自带的mp3文件player = MediaPlayer.create(this, R.raw.qq);player.setOnCompletionListener(this);player.setLooping(true);}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {super.onStartCommand(intent, flags, startId);if (!player.isPlaying()) {new MusicPlayThread().start();}else player.isPlaying();return START_STICKY;}/*** 当Audio播放完的时候触发该动作*/public void onCompletion(MediaPlayer mp) {stopSelf();// 结束了,则结束Service}public void onDestroy() {super.onDestroy();if (player.isPlaying()) {player.stop();}player.release();}// 为了和Activity交互,我们需要定义一个Binder对象public class AudioBinder extends Binder {// 返回Service对象public AudioService getService() {return AudioService.this;}}private class MusicPlayThread extends Thread {public void run() {if (!player.isPlaying()) {player.start();}}}
}MainActivity
public class MainActivity extends Activity {private ImageButton StartBtn=null;private ImageButton StopBtn=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);StartBtn =(ImageButton)findViewById(R.id.StartBtn);StopBtn =(ImageButton)findViewById(R.id.StopBtn);}//开始播放音乐public void start(View v){Intent intent = new Intent(MainActivity.this,AudioService.class);startService(intent);}//停止音乐public void stop(View v){Intent intent = new Intent(MainActivity.this,AudioService.class);stopService(intent);}/* @Overrideprotected void onResume() {super.onResume();startService(new Intent(this,AudioService.class));}@Override*/public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

详细代码

安卓 实现背景音乐的播放与关闭相关推荐

  1. Flash:关键帧中调用自建的音乐类,进行播放、关闭、循环音乐+按键播放或者关闭外部音乐+循环播放背景音乐+播放按钮音乐+停止+加载外部音乐文件+AS2播放背景音乐

    目录 一.关键帧里面:调用自建的音乐类, 循环播放外部音乐.进行播放.关闭.循环音乐 1.代码:自建音乐类 2.关键帧中创建.播放.暂停背景音乐+按钮音乐 3.文件布置 二.关键帧中:按键播放或者关闭 ...

  2. 解决H5项目微信浏览器安卓系统无法自动播放背景音乐的问题

    背景 制作的H5项目,使用vedio标签,利用wx.getNetworkType来自动播放背景音乐. 但是安卓的vedio自动播放被微信浏览器限制了. 解决方案 采用web vedio api 细节解 ...

  3. Android 实现背景音乐的播放及震动

    Android 实现背景音乐的播放及震动 一.实现音乐应用 1.播放背景音乐 基础 Android支持一般音乐格式,如mid格式,mp3格式. 将要引用的音频文件放入文件夹"res/raw& ...

  4. 白鹭引擎解决微信小游戏切换背景音乐无法播放的问题。

    白鹭引擎 版本:5.2.8 描述:白鹭引擎解决微信小游戏切换背景音乐无法播放的问题. main.ts文件中找到如下函数,增加上您的音频对象. egret.lifecycle.onResume = () ...

  5. 移动端 背景音乐 自动播放

    背景音乐 自动播放 手机端 (Android.ios) 亲测 有效 **html标签** ----------<audio style="display:none; height: 0 ...

  6. win10系统potplay播放器关闭自动更新方法

    描述:potplay播放器关闭自动更新方法 步骤: 左上角选择菜单,点击选项 基本->自动更新:选择不自动更新->应用确定

  7. 使用ffmpeg合并音频视频并实现背景音乐循环播放

    这两天遇到一个问题,使用PowerPoint 2013创建的PPT文件 将该PPT复制到另一台电脑的时候,背景音乐不能播放 生成Mp4视频提示音频不能添加,因此生成的Mp4也不能播放背景音乐 原因是M ...

  8. html背景音乐自动播放embed,怎样在网页中插入背景音乐(自动播放代码).doc

    怎样在网页中插入背景音乐 软件 Dreamweaver带浏览器的电脑 1 首先在网上下载一个Dreamweaver软件安装,当然使用其他的网站编程软件也可以. 2 打开软件界面如下. 3 选择&quo ...

  9. 微信H5页面背景音乐自动播放

    移动端默认是禁止背景音乐自动播放的,很多需求都需要在页面加载完成的情况下同时出现背景音乐.基于微信的H5页面的音频自动播放的方法网上有很多教程,本次分享的只是一种思路! <audio id=&q ...

最新文章

  1. microsoft visual basic保存时错误429_win10更新失败错误8000FFF的解决小技巧
  2. 在任意的远程桌面的session中运行指定的程序
  3. 使用vue.js路由踩到的一个坑Unknown custom element
  4. python 自然语言处理 (六) 采用deepQA搭建自动聊天机器人
  5. android 图片圆角 遮罩_Android 自定义View练手Demo(一)实现圆角遮罩效果
  6. leetcode 112 --- 二叉树根节点到叶子节点和为指定值的路径
  7. set和map去重调用什么方法_你真的了解ES6的Set,WeakSet,Map和WeakMap吗?
  8. CTF-web文件上传漏洞
  9. Java 算法 入学考试
  10. 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解
  11. iPhone未来怎么走?将融入脸部以及指纹辨识系统
  12. 明尼苏达双城大学计算机排名,明尼苏达大学双城分校排名
  13. 为什么要制定项目计划?
  14. python采用强制缩进的方式使得代码具有极佳的可读性_计算机专业高级语言程序设计课程改革探索...
  15. 搭建企业级微信公众号管理平台(三)----注册码实现与校验,Redis存储
  16. 短视频剪辑的三大要点教程,适合刚入门的小白
  17. 神经网络建模的基本思想,人工神经网络建模步骤
  18. 读书笔记01_《程序员思维修炼》
  19. 平板电脑 android系统升级,戴尔平板电脑Streak 10 Pro升级至安卓3.2 官方教程
  20. 【报错】unknown error: DevToolsActivePort file doesn‘t exis

热门文章

  1. 静态旅游网站(PC端)
  2. How to speed up Remote Desktop Connection in Win7
  3. capital_Capital One如何拥抱开源
  4. android 渠道索取,Android多渠道打包时获取当前渠道
  5. 读论文,第十四天: HulaMove: Using Commodity IMU for Waist Interaction
  6. 卷积神经网络(CNN)基础知识
  7. mobius HDOJ 5468 Puzzled Elena
  8. Ecos操作系統查看进程信息
  9. 录音转文字软件哪个好
  10. 硬改无人直播系统-使用小技巧