安卓studio 添加后台bgm音乐的几种方法

在app内播放后台音频需要调用Service组件

Service组件需要在清单文件里使用标签注册 (一般会自动在文件里注册)

Service 是编写服务组件的抽象基类

onCreate() 和onDestroy() 是Service的2个重要生命周期方法,需要在其内编写代码

非绑定方式启动服务时,不需要在生命周期方法onBind()内编写代码

通过点击按钮播放bgm

service:

package com.example.example5_1;import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;public class MyAudioService extends Service {MediaPlayer mp;@Overridepublic void onCreate() {                  //开始服务时调用super.onCreate();mp = MediaPlayer.create(this,R.raw.white);mp.start();}@Overridepublic void onDestroy() {super.onDestroy();mp.stop();if (mp != null) mp=null;}@Overridepublic IBinder onBind(Intent intent) {           //不可省略的生命周期方法// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}
}

MainActivity:

package com.example.example5_1;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener{Intent intent;Button btn_play,btn_stop;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_play = findViewById(R.id.btn_play);btn_stop = findViewById(R.id.btn_stop);btn_play.setOnClickListener(this);btn_stop.setOnClickListener(this);}@Overridepublic void onClick(View v){intent = new Intent(this,MyAudioService.class);    //用intent来实现服务的运行和停止int id = v.getId();switch (id){case R.id.btn_play:startService(intent);Toast.makeText(this, "音乐服务进行中...", Toast.LENGTH_SHORT).show();btn_stop.setEnabled(true);btn_play.setEnabled(false);break;case R.id.btn_stop:stopService(intent);btn_stop.setEnabled(false);btn_play.setEnabled(true);}}@Overrideprotected void onDestroy() {           //考虑播放时返回super.onDestroy();if (intent != null) stopService(intent);   //停止服务finish();                                 //关闭}
}

进入app直接后台播放bgm

Service:

package com.example.example5_2;import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;public class MyAudioService extends Service {private MediaPlayer mp;public class PlayBinder extends Binder{        //用作代理的内部类public  void MyMethod(){                   //服务方法mp = MediaPlayer.create(getApplicationContext(),R.raw.white);mp.start();}}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.// throw new UnsupportedOperationException("Not yet implemented");return new PlayBinder();                    //返回服务代理类}@Overridepublic void onDestroy() {                //服务销毁时停止音乐播放if (mp != null){mp.stop();mp.release();}super.onDestroy();}
}

MainActivity:

需要创建一个接口ServiceConnection对象来实现建立服务连接时的内容

package com.example.example5_2;import androidx.appcompat.app.AppCompatActivity;import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;public class MainActivity extends AppCompatActivity {
//以绑定方式启动服务(活动和服务绑定),需要建立代理人@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName componentName, IBinder iBinder) {MyAudioService.PlayBinder playBinder = (MyAudioService.PlayBinder) iBinder;//获取代理人对象playBinder.MyMethod();  //调用代理方法}@Overridepublic void onServiceDisconnected(ComponentName componentName) {//断开服务连接}};Intent intent = new Intent(getApplicationContext(),MyAudioService.class);bindService(intent,connection,BIND_AUTO_CREATE);   //绑定服务}
}

代理人

所谓的代理人相当于一个可以帮助 用户 和 程序 进行更好的交互的角色,比如

“取款人——自动取款机——银行服务器” 中的取款机

还有一种远程服务调用音频播放的方法,用的比较少

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19578.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D 添加背景音乐及按键音乐

Unity3D中添加背景音乐 在制作Unity3D游戏中 缺少BGM的游戏是乏味的 如何在Unity游戏中添加背景音乐呢 因为我经常用的格式是 2 by 3 所以可能会有不一样的步骤请自己寻找 首先选中 Main Camera主相机 在Inspector中 点击Add Component 搜索Audio Source 并点击添加 添加…

Android背景和音乐

Android背景和音乐 前言一、添加背景图片二、加入背景音乐 前言 简单的给app添加背景图和音乐 一、添加背景图片 准备好一张合适的背景图片新建一个Empty Activity项目选择Java语言在res中创建一个mipmap文件,将准备的图片粘贴到该文件目录下 在activity_main.xml里面添加代…

如何在unity中实现切换背景音乐

第一步:在添加好Audio Source插件后,添加你的第一首歌在AudioClip中 第二部:创建script脚本,创建 歌曲曲目控制C,歌曲组T1,插件名T 第三步:在updata中添加判定当前是否播放完毕,注&a…

创业日记

最近在拼命的写代码,估计这段时间写代码的行数等于过去一年的了,这是保守估计,如果不保守估计就不好说了,我本来想在原来的小组群里发话说,打算是下面这段对话 我:X总,你站起来 X总:…

【实战】感恩教师节小程序制作

0产品功能定位 一句话定位:祝福完全自定义的、微信一键分享的教师节感恩小程序、 本产品是基于wordpress网站搭建的一个感恩教师节小程序,适用于但不限于以下场景: 1、用于庆祝教师节,传达班级、学生对老师的感恩之情。并支持点…

ChatGPT别来沾边!好莱坞编剧拒绝“给AI打工”,集体罢工抗议

克雷西 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT可能做梦也想不到,自己有一天会成为人类罢工的理由。 工作会不会被AI取代还未有定论,好莱坞的编剧们就抢先一步罢工了。 他们罢工的理由也不完全是担心失业,主要是AI创作让他们感觉受到了侮…

计算机网络利弊的作文英语作文,网络的弊端英语作文(精选6篇)

网络的弊端英语作文(精选6篇) 在平时的学习、工作或生活中,大家都经常接触到作文吧,借助作文可以提高我们的语言组织能力。一篇什么样的.作文才能称之为优秀作文呢?以下是小编为大家收集的网络的弊端英语作文(精选6篇),欢迎大家分…

计算机网络的对学生的利弊英语作文,网络的利与弊英语作文范文

网络的利与弊英语作文范文 英语作文:网络的利与弊(The Advantage and Disadvantage of Internet) With the development of high technology, Internet is more and more popular. No matter children or the old know how to search the Internet. The emerging of the Inter…

使用计算机的利与弊,雅思大作文范文:计算机的利与弊

新东方在线雅思频道特为大家收集整理了雅思大作文范文:计算机的利与弊,供大家阅读参考。认真研读一定的雅思范文及作文模板可以帮助我们检验自己的写作水平,并能很好地吸收和应用优秀范文里的优秀内容~更多雅思报名官网的最新消息&#xff0c…

投资人哑火、创业者狂欢、孵化器饥渴,大模型下的大变革

划重点: 1、在生成式AI的浪潮中,创业者很激动,投资人却哑火了。生成式AI发展迅速,许多投资人根本来不及反应;此外,生成式AI也面临着两大难题,一个是底层生态的稳定性问题;另一个则是…

科大讯飞星火认知大模型测评: 科大讯飞研发的认知智能大模型还不够智能,就是光介绍自己这一点,没法完整说出自己的名字,也没法对我的问题,向chatGPT一样,逐字逐句拆分并且回应。

https://xinghuo.xfyun.cn/desk def bubble_sort(arr):n len(arr)# 遍历所有数组元素for i in range(n):# 最后i个元素已经排好序了,所以内层循环次数最多为n-i-1次for j in range(0, n-i-1):# 如果当前元素大于下一个元素,则交换它们的位置if arr[j]…

用Python怎么多赚钱?6种办法用上 让你过上挣钱的好日子

编程语言Python特别火,火到几乎所有的程序开发公司都要求自己的员工掌握它,可以说,不懂Python的码农们在整个IT行业是无法想象的。不仅如此,Python除了在编程方面应用广泛,而且还能在业余时间变现,让拥有这…

90后工作难保,00后工作难找,受AI冲击的职场人该何去何从?

前言 2023年,人工智能大火!在科技给人类带来便利的同时,也引起了人们的恐慌。人们一边享受着科技带来的美好,一边又忌惮着科技给人类带来的冲击。 01 因AI失业的人,已经出现 近日,有媒体报道称&#xf…

趣文:学计算机的女生都怎么样了?

我估计有不少读者感兴趣,学计算机的女生都是怎么样的? 女程序员真的就如下面这张图形容的那样,没时间洗头、皮肤暗淡、黑眼圈吗?不尽然。 在我工作的9年里,我也接触过不少女开发。大多都对自己有较高的要求和标准&…

学会了Python就可以做数据分析师?别天真了

数据分析师已经存在多年了,但是,对该职业的需求从2018年开始,对数据分析师的需求猛增,目前数据分析师的前景已然非常好!预计到2025年,「数据分析师」将成为需求最大的工作之一。 由于这种现象,…

火爆全球!影响超250万读者,Python入门圣经全新升级(文末送书 )

人生苦短,我用 Python! 什么?你没用过,也没开始学习,甚至没有认真了解过这门语言?那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。 权威编程语言排行榜 TIOBE,2022 和 2023 都是第一。…

火爆全球!影响超250万读者,Python入门圣经全新升级

|人生苦短,我用 Python ! 什么?你没用过,也没开始学习,甚至没有认真了解过这门语言?那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。 权威编程语言排行榜 TIOBE,2022 和 2023 都是第一。…

五年时间被引用3.8万次,Transformer宇宙发展成了这样

来源:机器之心 关于 Transformer ,这是一篇很好的学习指南,可以帮助你熟悉最流行的 Transformer 模型。 自 2017 年提出至今,Transformer 模型已经在自然语言处理、计算机视觉等其他领域展现了前所未有的实力,并引发了…

火爆全球!影响超250万读者,Python入门圣经全新升级!

人生苦短,我用 Python ! 什么?你没用过,也没开始学习,甚至没有认真了解过这门语言?那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。 权威编程语言排行榜 TIOBE,2022 和 2023 都是第一。…

如何学好人工智能?

“在主流的视频直播教学之外,直接与老师在课件上互动能够更快地让我进入学习状态。” 大家的时间都很宝贵,当我们好不容易下定决心要学习一门新知识时,各种影响学习的噪声会在本不富裕的耐心上大打折扣,万事开头难变成了真理。特别…