Android允许我们使用Service组件来完成后台任务,这些任务的允许不会影响到用户其他的交互。
1、Activity类
package demo.camera;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
/**
* 演示Activity如何利用Service来完成后台Audio的播放功能
* 同时如何将Service和Activity进行绑定
* @author Administrator
*
*/
public class BackgroundAudioDemo extends Activity {
private AudioService audioService;
//使用ServiceConnection来监听Service状态的变化
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
audioService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
//这里我们实例化audioService,通过binder来实现
audioService = ((AudioService.AudioBinder)binder).getService();
}
};
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.back_audio);
}
public void onClick(View v){
int id = v.getId();
Intent intent = new Intent();
intent.setClass(this, AudioService.class);
if(id == R.id.btn_start){
//启动Service,然后绑定该Service,这样我们可以在同时销毁该Activity,看看歌曲是否还在播放
startService(intent);
bindService(intent, conn, Context.BIND_AUTO_CREATE);
finish();
}else if(id == R.id.btn_end){
//结束Service
unbindService(conn);
stopService(intent);
finish();
}else if(id == R.id.btn_fun){
audioService.haveFun();
}
}
}
2、Service类
package demo.camera;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.widget.MediaController.MediaPlayerControl;
/**
* 为了可以使得在后台播放音乐,我们需要Service
* Service就是用来在后台完成一些不需要和用户交互的动作
* @author Administrator
*
*/
public class AudioService extends Service implements MediaPlayer.OnCompletionListener{
MediaPlayer player;
private final IBinder binder = new AudioBinder();
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return binder;
}
/**
* 当Audio播放完的时候触发该动作
*/
@Override
public void onCompletion(MediaPlayer player) {
// TODO Auto-generated method stub
stopSelf();//结束了,则结束Service
}
//在这里我们需要实例化MediaPlayer对象
public void onCreate(){
super.onCreate();
//我们从raw文件夹中获取一个应用自带的mp3文件
player = MediaPlayer.create(this, R.raw.tt);
player.setOnCompletionListener(this);
}
/**
* 该方法在SDK2.0才开始有的,替代原来的onStart方法
*/
public int onStartCommand(Intent intent, int flags, int startId){
if(!player.isPlaying()){
player.start();
}
return START_STICKY;
}
public void onDestroy(){
//super.onDestroy();
if(player.isPlaying()){
player.stop();
}
player.release();
}
//为了和Activity交互,我们需要定义一个Binder对象
class AudioBinder extends Binder{
//返回Service对象
AudioService getService(){
return AudioService.this;
}
}
//后退播放进度
public void haveFun(){
if(player.isPlaying() && player.getCurrentPosition()>2500){
player.seekTo(player.getCurrentPosition()-2500);
}
}
}
3、在清单文件AndroidManifest.xml中配置Service
<service android:name=".AudioService" />
转自chenjie19891104的的博客(http://blog.csdn.net/chenjie19891104/article/category/756236),以
便以后学习和查询!
Android多媒体学习六:利用Service实现背景音乐的播放
学习总结:
1、Activity中要绑定Service(bindService)
<1>、Service中需要要创建实现Binder的一个子类,实现getService()方法返回Service
<2>、Service中需要要实现onBind()方法,返回Binder的子类。
<3>、需要实现ServiceConnection,ServiceConnection有onServiceDisconnected()和onServiceConnected()两个抽象方法,
实现这2个方法,并在onServiceConnected()方法中调用参数Binder的getService()方法返回Service实例。
<4>、在Activity中使用Service实例调用各个方法。
2、MediaPlayer常用的方法
//创建MediaPlay实例
MediaPlayer player = MediaPlayer.create(this, R.raw.tt);
//设置播放完后的监听事件 MediaPlayer.OnCompletionListener
player.setOnCompletionListener(this);
//是否在播放
player.isPlaying();
//开始播放
player.start();
//停止播放
player.stop();
//停止播放后,还要释放资源
player.release();
分享到:
相关推荐
在Android开发中,实现背景音乐播放通常涉及到对多媒体处理、服务(Service)以及音频流的管理等技术。本篇文章将深入探讨如何利用Android的Service组件来实现在后台持续播放音乐的功能。 首先,我们要理解Service的...
android音乐播放效果,简单的服务开启。 这里将用到android的四大组件之一:Service 注意:Service是自大组件之一,需要注册。 什么是服务? 1:“Service” 意思即“服务”的意思, 像 Windows 上面的服务...
在Android平台上,开发一款音乐播放应用需要深入理解操作系统与多媒体框架的交互,以及Android SDK提供的相关API。这个"Android源码——音乐播放源码.zip"压缩包可能包含了一个完整的音乐播放器项目的源代码,这对于...
为了实现背景播放,可以考虑在Service中播放音乐,这样即使用户离开应用,音乐也能继续播放。 设置背景图片通常是在Activity或Fragment的布局文件中完成。可以使用ImageView控件,通过设置其src属性为背景图片的...
- 背景音乐播放通常通过服务实现,即使应用被关闭,音乐也能继续播放。`Service`组件是实现这一功能的关键。 5. **通知中心集成**: - 在Android中,音乐播放器常在通知中心提供控制,让用户在任何界面下都能轻松...
Android 4.3内置音乐播放器的源码分析,不仅可以提升开发者对Android多媒体框架的理解,还能借鉴其设计思路,用于构建自己的音乐应用。通过对播放器的各个模块进行拆解和学习,开发者可以更好地掌握Android开发中的...
接着,背景音乐的播放功能则需要利用到Android的多媒体框架。`MediaPlayer`类是最基础的音频播放组件,可以用来播放本地或网络音频资源。如果需要支持音乐的暂停、继续、切换等功能,需要对`MediaPlayer`进行状态...
此外,对于背景播放,需要利用Service来保持音乐播放不因Activity的销毁而中断。 其次,保存喜欢的音乐功能通常涉及到数据库的运用。Android内置了SQLite数据库,开发者需要创建数据库表结构,用于存储用户喜欢的...
7. **多媒体框架**:Android Media Framework是处理音频、视频播放的核心组件,项目会利用它来实现音乐的解码和播放。 8. **通知栏控制**:音乐播放器通常会在通知栏提供控制选项,让用户在任何界面都能方便地控制...
通过阅读源代码,我们可以学习到如何在Android平台上构建一个完整的音乐播放器,包括多媒体处理、UI设计、服务管理和系统交互等方面的知识。 总之,开发一个Android音乐播放器需要掌握多媒体编程、数据存储、UI设计...
综上所述,这个压缩包中的资源可能是一个功能丰富的Android多媒体应用,不仅包含了图片浏览和音乐播放的基本功能,还可能针对车载环境进行了优化,提供了更安全、便捷的用户体验。对于想要学习如何在Android平台上...
总结,这个"Android在线音乐播放器完整项目"覆盖了Android开发中的多个重要知识点,从网络请求到多媒体播放,从界面设计到服务管理,为开发者提供了一个全面的学习和实践平台。通过深入理解并动手实践这个项目,...
开发者可以创建一个Service,然后在其中实现媒体播放逻辑,即使用户离开应用,音乐也可以继续播放。 Broadcast Receiver则允许应用程序响应系统广播事件,比如系统音量改变、电池状态更新等,这在多媒体应用中也很...
【标题】"Android应用源码之Android 天天动听悬浮歌词源码.zip"揭示了本次分享的内容是关于Android平台上一款名为“天天动听”的音乐应用的源代码,特别是其悬浮歌词功能的实现。源码通常对开发者而言极具价值,因为...
开发一个基于Android手机平台的音乐播放器,需要全面考虑用户需求,合理设计系统架构,有效利用Android提供的API,优化数据库设计,以实现高效、稳定、易用的音乐播放功能。这个过程不仅锻炼了开发者的编程技能,也...
同时,为了提升用户体验,可以利用Service在后台保持音乐播放,并通过Notification让用户在任何界面都能方便地控制音乐。 总之,基于Android系统的音乐播放器设计与实现是一个综合性的项目,涉及到多媒体处理、用户...
基于Android手机平台的音乐播放器是一款专为现代快节奏生活设计的应用程序,...通过阅读和理解这篇论文,读者可以了解到如何利用Android SDK和Java语言开发一个完整的音乐播放应用,包括界面设计、功能实现和性能优化。
- **多媒体应用**:MediaPlayer的使用,实现音频视频播放功能。 - **服务与广播**:Service的运行机制和BroadcastReceiver的使用,实现后台任务和系统事件监听。 - **MVC架构**:Model-View-Controller模式在Android...