![【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器_第1页](http://file4.renrendoc.com/view/92cbe0d4b57e2eac1285f6fff9d8fec5/92cbe0d4b57e2eac1285f6fff9d8fec51.gif)
![【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器_第2页](http://file4.renrendoc.com/view/92cbe0d4b57e2eac1285f6fff9d8fec5/92cbe0d4b57e2eac1285f6fff9d8fec52.gif)
![【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器_第3页](http://file4.renrendoc.com/view/92cbe0d4b57e2eac1285f6fff9d8fec5/92cbe0d4b57e2eac1285f6fff9d8fec53.gif)
![【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器_第4页](http://file4.renrendoc.com/view/92cbe0d4b57e2eac1285f6fff9d8fec5/92cbe0d4b57e2eac1285f6fff9d8fec54.gif)
![【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器_第5页](http://file4.renrendoc.com/view/92cbe0d4b57e2eac1285f6fff9d8fec5/92cbe0d4b57e2eac1285f6fff9d8fec55.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在Android中通过Service实现一个音乐播放器
本篇文章给大家分享的是有关怎么在Android中通过Service实现一个音乐播放器,在下觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着在下一起来看看吧。这里将用到android的四大组件之一:Service注意:Service是自大组件之一,需要注册。什么是服务?1:“Service”意思即“服务”的意思,像Windows上面的服务一样,服务是在后台上运行,承担着静悄悄的不为人所注意的工作。2:Service运行在后台,它是不可见的、无界面的程序。3:Service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity,这个时候程序要在后台继续播放;比如检测SD卡上文件的变化;再或者在后台记录用户的地理信息位置的改变;或者启动一个服务来运行并一直监听某种动作等等。下面是源码:MainActivity/**
*
这是一个Service生命周期及开启服务的小例子
*
实现播放音乐功能
*/
public
class
MainActivity
extends
AppCompatActivity
{
/**
*
规定开始音乐、暂停音乐、结束音乐的标志
*/
public
static
final
int
PLAT_MUSIC=1;
public
static
final
int
PAUSE_MUSIC=2;
public
static
final
int
STOP_MUSIC=3;
private
MyBroadCastReceiver
receiver;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver=new
MyBroadCastReceiver();
IntentFilter
filter=new
IntentFilter();
filter.addAction("plete");
registerReceiver(receiver,filter);
}
public
void
onClick(View
view){
switch
(view.getId()){
//开始音乐
case
R.id.btn_startmusic:
playingmusic(PLAT_MUSIC);
break;
//暂停
case
R.id.btn_pausemusic:
playingmusic(PAUSE_MUSIC);
break;
//停止
case
R.id.btn_stopmusic:
playingmusic(STOP_MUSIC);
break;
}
}
private
void
playingmusic(int
type)
{
//启动服务,播放音乐
Intent
intent=new
Intent(this,PlayingMusicServices.class);
intent.putExtra("type",type);
startService(intent);
}
@Override
protected
void
onDestroy()
{
super.onDestroy();
unregisterReceiver(receiver);
}
}MyBroadCastReceiver类(广播接收者):/**
*
这是一个Service生命周期及开启服务的小例子
*
实现播放音乐功能
*/
public
class
MainActivity
extends
AppCompatActivity
{
/**
*
规定开始音乐、暂停音乐、结束音乐的标志
*/
public
static
final
int
PLAT_MUSIC=1;
public
static
final
int
PAUSE_MUSIC=2;
public
static
final
int
STOP_MUSIC=3;
private
MyBroadCastReceiver
receiver;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver=new
MyBroadCastReceiver();
IntentFilter
filter=new
IntentFilter();
filter.addAction("plete");
registerReceiver(receiver,filter);
}
public
void
onClick(View
view){
switch
(view.getId()){
//开始音乐
case
R.id.btn_startmusic:
playingmusic(PLAT_MUSIC);
break;
//暂停
case
R.id.btn_pausemusic:
playingmusic(PAUSE_MUSIC);
break;
//停止
case
R.id.btn_stopmusic:
playingmusic(STOP_MUSIC);
break;
}
}
private
void
playingmusic(int
type)
{
//启动服务,播放音乐
Intent
intent=new
Intent(this,PlayingMusicServices.class);
intent.putExtra("type",type);
startService(intent);
}
@Override
protected
void
onDestroy()
{
super.onDestroy();
unregisterReceiver(receiver);
}
}PlayingMusicServices类:/**
*
这是一个Start
Service
*/
public
class
PlayingMusicServices
extends
Service
{
//用于播放音乐等媒体资源
private
MediaPlayer
mediaPlayer;
//标志判断播放歌曲是否是停止之后重新播放,还是继续播放
private
boolean
isStop=true;
/**
*
onBind,返回一个IBinder,可以与Activity交互
*
这是Bind
Service的生命周期方法
*
@param
intent
*
@return
*/
@Nullable
@Override
public
IBinder
onBind(Intent
intent)
{
return
null;
}
//在此方法中服务被创建
@Override
public
void
onCreate()
{
super.onCreate();
if
(mediaPlayer==null){
mediaPlayer=new
MediaPlayer();
//为播放器添加播放完成时的监听器
mediaPlayer.setOnCompletionListener(new
MediaPlayer.OnCompletionListener()
{
@Override
public
void
onCompletion(MediaPlayer
mp)
{
//发送广播到MainActivity
Intent
intent=new
Intent();
intent.setAction("plete");
sendBroadcast(intent);
}
});
}
}
/**
*
在此方法中,可以执行相关逻辑,如耗时操作
*
@param
intent
:由Activity传递给service的信息,存在intent中
*
@param
flags
:规定的额外信息
*
@param
startId
:开启服务时,如果有规定id,则传入startid
*
@return
返回值规定此startservice是哪种类型,粘性的还是非粘性的
*
START_STICKY:粘性的,遇到异常停止后重新启动,并且intent=null
*
START_NOT_STICKY:非粘性,遇到异常停止不会重启
*
START_REDELIVER_INTENT:粘性的,重新启动,并且将Context传递的信息intent传递
*
此方法是唯一的可以执行很多次的方法
*/
@Override
public
int
onStartCommand(Intent
intent,
int
flags,
int
startId)
{
switch
(intent.getIntExtra("type",-1)){
case
MainActivity.PLAT_MUSIC:
if
(isStop){
//重置mediaplayer
mediaPlayer.reset();
//将需要播放的资源与之绑定
mediaPlayer=MediaPlayer.create(this,R.raw.birds);
//开始播放
mediaPlayer.start();
//是否循环播放
mediaPlayer.setLooping(false);
isStop=false;
}else
if
(!isStop&&mediaPlayer.isPlaying()&&mediaPlayer!=null){
mediaPlayer.start();
}
break;
case
MainActivity.PAUSE_MUSIC:
//播放器不为空,并且正在播放
if
(mediaPlayer!=null&&mediaPlayer.isPlaying()){
mediaPlayer.pause();
}
break;
case
MainActivity.STOP_MUSIC:
if
(mediaPlayer!=null){
//停止之后要开始播放音乐
mediaPlayer.stop();
isStop=true;
}
break;
}
return
START_NOT_STICKY;
}
@Override
public
void
onDestroy()
{
super.onDestroy();
}
}最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轻钢别墅水泥屋面施工方案
- 农产品供应链合作免责协议书
- 健康咨询与服务外包合作合同
- 江苏事业单位劳动合同
- 葡萄栽培技术服务合同
- 第三方担保合同购销
- 宁都县交通标志施工方案
- 客厅石膏线背景墙施工方案
- 大数据应用技术研发合作合同
- 公司内部管理与行为规范大全
- 110KV送出线路工程施工组织设计方案和对策
- 二零二五年度大型自动化设备买卖合同模板2篇
- 城市交通系统中的空间正义问题-深度研究
- 2024版金矿居间合同协议书
- 2024年03月江苏2024年中国工商银行苏州分行社会招考笔试历年参考题库附带答案详解
- 2025年北师大新版高二物理上册阶段测试试卷
- 2024年青岛职业技术学院高职单招语文历年参考题库含答案解析
- GA/T 2145-2024法庭科学涉火案件物证检验实验室建设技术规范
- 2025内蒙古汇能煤化工限公司招聘300人高频重点提升(共500题)附带答案详解
- 《餐饮服务礼貌用语》课件
- 2025年中国融通资产管理集团限公司春季招聘(511人)高频重点提升(共500题)附带答案详解
评论
0/150
提交评论