Android学习笔记(21)---使用Service后台播放MediaPlayer的音乐
2012-08-19 10:55
501 查看
1、Service介绍
官方解释:A
an application component that can perform long-running operations in the background and does not provide a user interface. Another application component can start a service and it will continue to run in the background even if the user switches to another
application
也就是说Service是一个没有提供用户界面而能够提供在后台运行的构件,其他应用能启动一个Service,即使是切换到其他的应用它还能在后台运行。
2、Service的生命周期
Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。
3、下面举个播放音乐的例子:
首先在res创建目录raw,然后在里面添加MP3文件
继承一个Service类:
在Alarm这个Activity继承类中启动音乐:
在Alarm这个Activity继承类中关闭音乐:
这样就能实现Service在后台播放所要播放的音乐,当然,在哪里需要启动或关闭音乐看你自己个人需求。
另需要注意一点的是,别忘了注册:
在AndroidManifest.xml中的Application中加入:
官方解释:A
Serviceis
an application component that can perform long-running operations in the background and does not provide a user interface. Another application component can start a service and it will continue to run in the background even if the user switches to another
application
也就是说Service是一个没有提供用户界面而能够提供在后台运行的构件,其他应用能启动一个Service,即使是切换到其他的应用它还能在后台运行。
2、Service的生命周期
Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。
3、下面举个播放音乐的例子:
首先在res创建目录raw,然后在里面添加MP3文件
继承一个Service类:
package com.Moruna.studys; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; public class MyService extends Service { private MediaPlayer mp; @Override public void onCreate() { // TODO Auto-generated method stub // 初始化音乐资源 try { System.out.println("create player"); // 创建MediaPlayer对象 mp = new MediaPlayer(); mp = MediaPlayer.create(MyService.this, R.raw.alarm); // mp.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } super.onCreate(); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub // 开始播放音乐 mp.start(); // 音乐播放完毕的事件处理 mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub // 循环播放 try { mp.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); // 播放音乐时发生错误的事件处理 mp.setOnErrorListener(new MediaPlayer.OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub // 释放资源 try { mp.release(); } catch (Exception e) { e.printStackTrace(); } return false; } }); super.onStart(intent, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub // 服务停止时停止播放音乐并释放资源 mp.stop(); mp.release(); super.onDestroy(); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } }在Activity中调用MyService启动音乐或关闭音乐,这时就算退出应用,如果没有关闭Service,它还会在后台播放直至关闭
在Alarm这个Activity继承类中启动音乐:
// 播放闹铃 Intent intentSV = new Intent(Alarm.this, MyService.class); startService(intentSV);
在Alarm这个Activity继承类中关闭音乐:
//关闭闹铃声 Intent intentSV = new Intent(Alarm.this, MyService.class); stopService(intentSV);
这样就能实现Service在后台播放所要播放的音乐,当然,在哪里需要启动或关闭音乐看你自己个人需求。
另需要注意一点的是,别忘了注册:
在AndroidManifest.xml中的Application中加入:
<service android:name=".MyService" />
相关文章推荐
- 使用MediaPlayer在Service中后台播放网络音乐
- 使用MediaPlayer在Service中后台播放网络音乐
- Android使用本地Service实现后台播放音乐
- Android MediaPlayer播放音乐有必要使用Service来调用吗?
- Android MediaPlayer播放音乐有必要使用Service来调用吗?
- 使用Service和Broadcast播放音乐文件
- Android 使用mediaplayer播放res/raw文件夹中的音乐的实例
- iOS音频播放的几种方式,打开后台模式的音乐播放、使用AVAudioPlayer播放音乐、播放指定的音频文件、注册音频文件
- 使用Service播放音乐
- 【Android Dev Guide - 04】 - Media - 学习使用MediaPlayer播放音乐
- 【Android Dev Guide - 04】 - Media - 学习使用MediaPlayer播放音乐
- 使用MediaPlayer播放、暂停、停止音乐
- android学习笔记---43_音乐播放器,音频采集,音乐播放,使用SoundPool播放音效
- 音乐播放(MediaPlayer,service,receiver,thread)
- iOS- 关于AVAudioSession的使用——后台播放音乐
- Android中使用MediaPlayer播放音乐状态转换
- Android Service使用方法--简单音乐播放实例
- 【Android】简易音乐播放器(介绍使用Service和Broadcast播放音乐文件)
- 利用Service实现播放手机上的MP3音乐(MediaPlayer)
- Android实现后台播放音乐(Service方式)