Android-bindService本地服务-音乐播放(后台播放)-下
在上一篇 Android-bindService本地服务-音乐播放-上,博客中是不能在后台中播放到,这次博客增加了一个后台播放
通常情况下,Activity切换到后台,Service提升到前台进程,既然Service提升到前台进程就会有一个通知。
Activity ---> moveTaskToBack(true);
Service ---> startForeground(1, builder1.getNotification());
进程优先级别:前台进程,可视进程,服务进程,后台进程,空进程 (前台进程是最稳定,系统内存不足是先回收 空进程) 为什么要把服务Service提升为前台进程,在内存不足时,前台进程不会那么容易被系统回收 把 服务进程 提升到 前台进程 会自动绑定通知 UI相关,当在播放当过程中点击返回键,就需要告诉用户是否在后台运行

点击后台播放,Activity就会被切换到后台,想要再次启动APP就可以点击通知进入:

由于这个MainActivity会被多次启动,为了保证单任务,需要设置启动模式:android:launchMode="singleTask"
<activity android:name=".MainActivity5"
android:launchMode="singleTask"> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </activity>
定义Binder扩展接口:
package liudeli.service1.service.inter;
import android.media.MediaPlayer;
public interface IMusicPlay {
/**
* 播放音乐
* @param musicPath 音乐文件的路径
*/
void playMusic(String musicPath);
/**
* 暂停播放
*/
void pausedPlay();
/**
* 继续播放
*/
void continuePlay();
/**
* 停止播放
*/
void stopPlay();
/**
* 让Activity可以获取到服务使用到MediaPlayer
* @return
*/
MediaPlayer getMediaPlayer();
}
Service控制播放:
package liudeli.service1.service; import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.RequiresApi;
import android.util.Log; import java.io.IOException; import liudeli.service1.MainActivity5;
import liudeli.service1.R;
import liudeli.service1.service.inter.IMusicPlay; public class MyService5 extends Service { private final String TAG = MyService5.class.getSimpleName(); @RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onCreate() {
super.onCreate(); /**
* 进程优先级别:前台进程,可视进程,服务进程,后台进程,空进程 (前台进程是最稳定,系统内存不足是先回收 空进程)
*
* 为什么要把服务Service提升为前台进程,在内存不足时,前台进程不会那么容易被系统回收
*
* 把 服务进程 提升到 前台进程 会自动绑定通知
*/ // 需要用到通知,用户点击通知栏,就计划APP-->Activity // 这是以前到写法,已经过时
/*Notification notification = new
Notification(R.mipmap.ic_launcher, "我的音乐播放器", System.currentTimeMillis());*/ // 设置事件信息,点击通知可以跳转到指定Activity
Intent intent = new Intent(this, MainActivity5.class); // 设置事件信息,点击通知可以跳转到指定Activity
NotificationManager notificationManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE); // 设置通知显示相关信息
Notification.Builder builder1 = new Notification.Builder(this);
builder1.setSmallIcon(R.mipmap.ic_launcher); //设置图标
/*builder1.setTicker("显示第二个通知");*/
builder1.setContentTitle("播放中"); //设置标题
builder1.setContentText("我的音乐播放器"); //消息内容
builder1.setWhen(System.currentTimeMillis()); //发送时间
builder1.setDefaults(Notification.DEFAULT_ALL); //设置默认的提示音,振动方式,灯光
builder1.setAutoCancel(true);//打开程序后图标消失 // 延时意图,所谓延时意图就是不是马上执行,需要用户去点击后才执行,其实就是对Intent对封装
PendingIntent pendingIntent =PendingIntent.getActivity(this, 0, intent, 0);
builder1.setContentIntent(pendingIntent);
Notification notification1 = builder1.build();
notificationManager.notify(124, notification1); // 通过通知管理器发送通知 // id=通知到唯一标示 notification=通知
startForeground(1, builder1.getNotification());
} @Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "绑定成功");
return new PlayMusicBinder();
} private MediaPlayer mediaPlayer; /**
* 增强版Binder,扩展出播放音乐Android-bindService本地服务-音乐播放(后台播放)-下的更多相关文章
- 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制
[源码下载] 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台 ...
- AVPlayer 音乐播放后台播放,以及锁屏主题设置
第一步:在appDelegate中通知app支持后台播放:在方法 - (BOOL)application:(UIApplication *)application didFinishLaunching ...
- iOS开发--QQ音乐练习,后台播放和锁屏界面
一.设置后台播放 首先允许程序后台播放 代码实现 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- Android-bindService本地服务-音乐播放-上
播放音乐的行为写在服务里,Activity去调用Service里面到方法,进行音乐播放,当Activity结束后,音乐播放器停止播放 界面: MainActivity: package liudeli ...
- android测试本地服务调试流程
我今天调试的整个过程 1,安卓发现连不上本地的tomcat 2,使用浏览器直接尝试,发现可以连上 3,怀疑是安卓APP和浏览器访问有差异,后上网搜索不到APP,只有浏览器尝试 再不就是改I ...
- iOS音乐后台播放及锁屏信息显示
实现音乐的后台播放.以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示 此实例须要真机调试.效果图例如以下: project下载:githubproject下载 实现步骤: 1.首先 ...
- Android平台的音乐资源管理与播放
Android平台基于Linux和开放手机联盟(OHA)系统,经过中国移动的创新研发,设计出拥有新颖独特的用户操作界面,增强了浏览器能力和WAP 兼容性,优化了多媒体领域的OpenCORE.浏览器领域 ...
- Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
我想实现如下的场景,判断当前Android手机上是否正在播放音乐,如果是,通过某个特定的手势, 或者点击某个按键,将当前我正在听的音乐共享出去. 第一步,就是判断当前是否有音乐正在播放. 最开始我想得 ...
- Android(java)学习笔记181:利用Service在后台播放背景音乐
1.在android应用程序里,有一种没有UI的类(android.app.Service)——Service.简单来说,Service是一个 background process(背景程序),通过背 ...
随机推荐
- boost::threadpool 调用类成员变量并传入参数 的方法
1. 首先到官网下载 http://threadpool.sourceforge.net/ 2. 包含头文件 #include "../boost/threadpool.hpp& ...
- java之扫描包里面的class文件
一.class作为,编译过后的产物,在很多时候,我们需要通过反射去执行class的具体方法.但是扫描class就是一个很大的问题了. 二.所以我这里写了一个简单的class文件扫描方式. 三.主要是利 ...
- alibaba fastjson的使用总结和心得
最初接触alibaba fastjson是由于其性能上的优势,对比原来采用codehause.jackson的解析,在hadoop平台上的手动转换对象有着将近1/3的性能提升,但随着开发应用越来越 ...
- 使用protocol buffer时关闭警告
在生成的文件头尾添加屏蔽警告的代码. 头部: #pragma warning(push, 2) // --------------------------------------------- 尾部: ...
- canvas设置阴影
canvas设置阴影 属性 shadowOffsetX = float 阴影向右偏移量 shadowOffsetY = float 阴影向下偏移量 shadowBlur = float 阴影模糊效果 ...
- Python 测试题目-1
l1 = [11,22,33]l2 = [22,33,44] # 1.获取内容相同的两个元素# 2.获取l1中有l2没有的元素# 3.获取l2中有l1中没有的元素# 4.获取l1 l2中内容都不通的元 ...
- leetcode654
class Solution { public: TreeNode* constructMaximumBinaryTree(vector<int>& nums) { ) retur ...
- 自动把\r\n 替换成<p></p>
function nl2p($string, $line_breaks = true, $xml = true) { // Remove existing HTML formatting to avo ...
- zookeeper 节点讲解以及实际项目运用
转自:https://www.jianshu.com/p/86acf1df6cdd 前言:最近工作不是很忙,本应该乘着闲暇的时间看书的,之前每天晚上都要翻翻的,可是自己竟然迷恋上了王晓磊 写的 卑鄙的 ...
- 背景半透明rgba最佳实践
by 一丝 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...