23 服务音乐的启动Demo4
来源:互联网 发布:义乌淘宝村 编辑:程序博客网 时间:2024/05/29 15:19
注意如果音乐服务和Activity在一个应用中那么将不会因为绑定的Activity销毁而关闭音乐
MainActivity.java
package com.qf.day23_service_demo4;import com.qf.day23_service_demo4.MyMusicService.MyBinder;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;public class MainActivity extends Activity { private MyMusicService musicService; private MyServiceConn conn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); conn = new MyServiceConn(); } public void MyClick(View v){ switch (v.getId()) { case R.id.btn_play://播放 if(musicService!=null){ musicService.playMusic(); }else{ Intent intent = new Intent(MainActivity.this, MyMusicService.class); bindService(intent, conn, Context.BIND_AUTO_CREATE); } break; case R.id.btn_pause://暂停 if(musicService!=null){ musicService.pauseMusic(); } break; case R.id.btn_stop://停止 if(musicService!=null){ musicService.stopMusic(); musicService =null; unbindService(conn); } break; default: break; } } public class MyServiceConn implements ServiceConnection{ @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub MyBinder myBinder = (MyBinder) service; musicService = myBinder.getMyMusicService(); } @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub conn = null; } }}
MyMusicService.java
package com.qf.day23_service_demo4;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Binder;import android.os.IBinder;public class MyMusicService extends Service{ private MediaPlayer mediaPlayer;//媒体操作对象 private int pos=0;//每次暂停的位置 @Override public IBinder onBind(Intent intent) { playMusic();//绑定时 开始播放音乐 return new MyBinder(); } //传递Service对象 public class MyBinder extends Binder{ public MyMusicService getMyMusicService(){ return MyMusicService.this; } } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); if(mediaPlayer == null){ //初始化媒体对象 将资源文件设置给mediaPlayer mediaPlayer = MediaPlayer.create(MyMusicService.this, R.raw.heavencity); } //播放完毕的监听 mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaPlayer.release();//是放资源 } }); } //播放 public void playMusic(){ if(mediaPlayer!=null&&!mediaPlayer.isPlaying()){ try { if(pos!=0){//从暂停到开始 mediaPlayer.seekTo(pos);//播放位置 移动到 暂停位置 mediaPlayer.start(); }else{//开始 mediaPlayer.stop();//暂停 mediaPlayer.prepare();//进行准备 必须写的 mediaPlayer.start(); } } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //暂停 public void pauseMusic(){ if(mediaPlayer!=null&&mediaPlayer.isPlaying()){ pos = mediaPlayer.getCurrentPosition();//获取播放的位置 mediaPlayer.pause(); } } //停止 public void stopMusic(){ if(mediaPlayer!=null){ mediaPlayer.stop(); mediaPlayer.reset();//资源重置 } } @Override public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub return super.onUnbind(intent); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); }}
清单文件
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.qf.day23_service_demo4" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.qf.day23_service_demo4.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyMusicService"></service> </application></manifest>
0 0
- 23 服务音乐的启动Demo4
- Android—音乐和制作-----demo4
- Android-Service (基本知识,生命周期,实例-startService 启动的服务音乐播放器后台服务播放)
- Android-Service (基本知识,生命周期,实例-startService 启动的服务音乐播放器后台服务播放)
- demo4.c(求100以内的素数)
- Demo4 告别Toast:精致的Snackbar
- 【Mrpc】Demo4 客户端动态代理的创建
- Android启动服务播放音乐(两种启动方式)
- 23 服务的启动Demo2
- Android基于Service服务的音乐播放
- 郭彦儒-提升移动音乐服务的竞争力
- 使用服务实现简单的音乐播放
- 带服务的音乐播放器
- Service 简单的音乐播放服务
- 23 广播服务结合音乐Demo5
- 23 服务的绑定启动Demo3
- DEBIAN启动的服务
- OpenStack服务的启动
- 囚徒困境、价格大战与 iPhone 的价格
- 机器学习 --算法思想梳理
- CentOS升级python后遇到问题解决办法
- popup.js弹出层回调关闭
- 为什么要用单例模式?
- 23 服务音乐的启动Demo4
- 开源代码Hadoop NFS connector (链接分享)
- 大型多人在线游戏服务器架构设计 - RPC封装原理
- 进程间的通信方式
- HDU-5584 LCM Walk(GCD/LCM+找规律)
- 用SQL*PLUS创建网页
- 啊啊啊求c(n,k)
- 图之 邻接表 邻接矩阵 结构体定义
- redis学习教程