`

(转)Android多媒体学习六:利用Service实现背景音乐的播放

 
阅读更多

 

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();  


 


 

分享到:
评论

相关推荐

    利用Service实现背景音乐的播放

    在Android开发中,实现背景音乐播放通常涉及到对多媒体处理、服务(Service)以及音频流的管理等技术。本篇文章将深入探讨如何利用Android的Service组件来实现在后台持续播放音乐的功能。 首先,我们要理解Service的...

    Android通过Service实现简单的音乐播放

    android音乐播放效果,简单的服务开启。 这里将用到android的四大组件之一:Service 注意:Service是自大组件之一,需要注册。 什么是服务? 1:“Service” 意思即“服务”的意思, 像 Windows 上面的服务...

    Android源码——音乐播放源码.zip

    在Android平台上,开发一款音乐播放应用需要深入理解操作系统与多媒体框架的交互,以及Android SDK提供的相关API。这个"Android源码——音乐播放源码.zip"压缩包可能包含了一个完整的音乐播放器项目的源代码,这对于...

    android 微信分享 图片切换器 设置背景音乐 设置背景图片

    为了实现背景播放,可以考虑在Service中播放音乐,这样即使用户离开应用,音乐也能继续播放。 设置背景图片通常是在Activity或Fragment的布局文件中完成。可以使用ImageView控件,通过设置其src属性为背景图片的...

    android完美的音乐播放器

    - 背景音乐播放通常通过服务实现,即使应用被关闭,音乐也能继续播放。`Service`组件是实现这一功能的关键。 5. **通知中心集成**: - 在Android中,音乐播放器常在通知中心提供控制,让用户在任何界面下都能轻松...

    Android4.3系统内置音乐播放器

    Android 4.3内置音乐播放器的源码分析,不仅可以提升开发者对Android多媒体框架的理解,还能借鉴其设计思路,用于构建自己的音乐应用。通过对播放器的各个模块进行拆解和学习,开发者可以更好地掌握Android开发中的...

    带背景音乐的图片浏览器

    接着,背景音乐的播放功能则需要利用到Android的多媒体框架。`MediaPlayer`类是最基础的音频播放组件,可以用来播放本地或网络音频资源。如果需要支持音乐的暂停、继续、切换等功能,需要对`MediaPlayer`进行状态...

    千峰android音乐播放器app

    此外,对于背景播放,需要利用Service来保持音乐播放不因Activity的销毁而中断。 其次,保存喜欢的音乐功能通常涉及到数据库的运用。Android内置了SQLite数据库,开发者需要创建数据库表结构,用于存储用户喜欢的...

    安卓Android源码——仿手机QQ音乐播放器项目.zip

    7. **多媒体框架**:Android Media Framework是处理音频、视频播放的核心组件,项目会利用它来实现音乐的解码和播放。 8. **通知栏控制**:音乐播放器通常会在通知栏提供控制选项,让用户在任何界面都能方便地控制...

    android音乐播放器

    通过阅读源代码,我们可以学习到如何在Android平台上构建一个完整的音乐播放器,包括多媒体处理、UI设计、服务管理和系统交互等方面的知识。 总之,开发一个Android音乐播放器需要掌握多媒体编程、数据存储、UI设计...

    android图片浏览器 android音乐播放器

    综上所述,这个压缩包中的资源可能是一个功能丰富的Android多媒体应用,不仅包含了图片浏览和音乐播放的基本功能,还可能针对车载环境进行了优化,提供了更安全、便捷的用户体验。对于想要学习如何在Android平台上...

    Android 在线音乐播放器完整项目.zip

    总结,这个"Android在线音乐播放器完整项目"覆盖了Android开发中的多个重要知识点,从网络请求到多媒体播放,从界面设计到服务管理,为开发者提供了一个全面的学习和实践平台。通过深入理解并动手实践这个项目,...

    Android中的多媒体技术应用开发与研究.pdf

    开发者可以创建一个Service,然后在其中实现媒体播放逻辑,即使用户离开应用,音乐也可以继续播放。 Broadcast Receiver则允许应用程序响应系统广播事件,比如系统音量改变、电池状态更新等,这在多媒体应用中也很...

    Android应用源码之Android 天天动听悬浮歌词源码.zip

    【标题】"Android应用源码之Android 天天动听悬浮歌词源码.zip"揭示了本次分享的内容是关于Android平台上一款名为“天天动听”的音乐应用的源代码,特别是其悬浮歌词功能的实现。源码通常对开发者而言极具价值,因为...

    基于Android手机平台的音乐播放器-毕业论文.doc

    开发一个基于Android手机平台的音乐播放器,需要全面考虑用户需求,合理设计系统架构,有效利用Android提供的API,优化数据库设计,以实现高效、稳定、易用的音乐播放功能。这个过程不仅锻炼了开发者的编程技能,也...

    基于Android系统的音乐播放器的设计与实现毕业论文.doc

    同时,为了提升用户体验,可以利用Service在后台保持音乐播放,并通过Notification让用户在任何界面都能方便地控制音乐。 总之,基于Android系统的音乐播放器设计与实现是一个综合性的项目,涉及到多媒体处理、用户...

    基于Android手机平台的音乐播放器本科毕业论文.doc

    基于Android手机平台的音乐播放器是一款专为现代快节奏生活设计的应用程序,...通过阅读和理解这篇论文,读者可以了解到如何利用Android SDK和Java语言开发一个完整的音乐播放应用,包括界面设计、功能实现和性能优化。

    android学习档案

    - **多媒体应用**:MediaPlayer的使用,实现音频视频播放功能。 - **服务与广播**:Service的运行机制和BroadcastReceiver的使用,实现后台任务和系统事件监听。 - **MVC架构**:Model-View-Controller模式在Android...

Global site tag (gtag.js) - Google Analytics