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" />
Android多媒体学习六:利用Service实现背景音乐的播放的更多相关文章
- Android开发学习之路--Service之初体验
		
android最后一个组件便是service了,终于学习到最后一个组件了,从年前的开发环境的搭建,到现在学到最后一个组件花了三周的时间,期间记录的点点滴滴,照着书本学习编写的代码都受益匪浅,这里要感谢 ...
 - Android开发学习之路-Service和Activity的通信
		
在很多时候,Service都不仅仅需要在后台运行,还需要和Activity进行通信,或者接受Activity的指挥,如何来实现,来看代码. 定义一个服务 // 创建一个服务,然后在onBind()中返 ...
 - Android JNI 学习(六):Object Operations Api
		
一.AllocObject jobjectAllocObject(JNIEnv *env, jclass clazz); 分配新 Java 对象而不调用该对象的任何构造函数.返回该对象的引用. cla ...
 - Android多媒体系列2:利用MediaRecorder实现录音
 - Android开发学习之路--MediaPlayer之简单音乐播放器初体验
		
很多时候我们都会用手机来播放音乐,播放视频,那么具体地要怎么实现呢,其实主要是MediaPlayer类来完成的.下面通过简单的例子来实现一首歌曲的播放吧.新建工程MediaPlayerStudy,这里 ...
 - 【Android 多媒体应用】使用MediaCodec解码使用AudioTrack播放音频数据
		
1.MainActivity.java import android.app.Activity; import android.os.Bundle; import android.os.Environ ...
 - 【Android 多媒体应用】使用MediaRecoder录制,MediaPlayer播放音频数据
		
1.MainActivity.java import android.annotation.TargetApi; import android.app.Activity; import android ...
 - Android多媒体访问
		
Android的多媒体文件主要存储在/data/data/com.android.providers.media/databases目录下,该目录下有两个db文件,一个是内部存储数据库文件(inter ...
 - Android(java)学习笔记181:利用Service在后台播放背景音乐
		
1.在android应用程序里,有一种没有UI的类(android.app.Service)——Service.简单来说,Service是一个 background process(背景程序),通过背 ...
 
随机推荐
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 用SPD开发SharePoint应用程序
			
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 用SPD开发SharePoint应用程序 非常多开 ...
 - STL之效率比較
			
1.vector 变长一维数组,连续存放的内存块,有保留内存.堆中分配内存: 支持[]操作,高效率的随机訪问: 在最后添加元素时,一般不须要分配内存空间,速度快:在中间或開始操作元素时要进行内存拷贝效 ...
 - Project Euler:Problem 37 Truncatable primes
			
The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...
 - Adding Kentico controls to the Visual Studio toolbox
			
https://docs.kentico.com/k10/references/kentico-controls https://docs.kentico.com/k10/references/ken ...
 - nginx的安装步骤
			
nginx学习资料;https://zhuanlan.zhihu.com/p/34943332 1.下载nginx的安装包:https://nginx.org/en/download.html 2. ...
 - UIimageView和UIimage的小区别
			
UIimageView 用来显示一张图片或者显示一组动画图片 UIimage 不是一个控件,只是一个普通的类,用来生成一张图片,只单纯的生成一张图片,图片只会被加载到内存,如果想要让用户 ...
 - Linux中文件上传使用rz
			
1.首先,要是服务器不支持rz命令的话,需要安装执行 sudo yum -y install lrzsz 2.再输入rz -be命令,选择需要上传的本地文件 sudo rz 从服务端发送文件到客户端: ...
 - ubuntu sublime text 2 破解版
			
原网地址 : http://blog.csdn.net/icephone/article/details/8217567 关于sublime text 2 的一个使用教程以及前端的不错的学习博客 ht ...
 - Bootstrap表格内容居中
			
1.<th style='text-align: center;'>host</th> 水平居中 2.<td rowspan=$row_host1 style='vert ...
 - 【转】在IIS上部署你的ASP.NET Core项目
			
概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kest ...