Android-AIDL调用Android操作系统Music的方式来播放音乐
Android操作系统Music源码修改:把包名,各种命名都修改成自己的
修改Android操作系统Music源码,把后台播放核心服务对外暴漏:
- <!-- 核心服务 -->
- <!--
- 定义对外暴露的配置
- android:exported="true"
- android:process=":remote"
- android:enabled="true"
- -->
- <service android:name="liudeli.music2.service.MediaPlaybackService"
- android:exported="true"
- android:process=":remote"
- android:enabled="true">
- <intent-filter>
- <!--
- 定义对外暴露的 唯一标示
- -->
- <action android:name="liudeli.custom.system.music.backplay.service" />
- </intent-filter>
- </service>
阅读Android操作系统Music源码的AIDL:
- // IMediaPlaybackService.aidl
- package liudeli.music2.service;
- // Declare any non-default types here with import statements
- import android.graphics.Bitmap;
- interface IMediaPlaybackService
- {
- void openFile(String path);
- void open(in long [] list, int position);
- int getQueuePosition();
- boolean isPlaying();
- void stop();
- void pause();
- void play();
- void prev();
- void next();
- long duration();
- long position();
- long seek(long pos);
- String getTrackName();
- String getAlbumName();
- long getAlbumId();
- String getArtistName();
- long getArtistId();
- void enqueue(in long [] list, int action);
- long [] getQueue();
- void moveQueueItem(int from, int to);
- void setQueuePosition(int index);
- String getPath();
- long getAudioId();
- void setShuffleMode(int shufflemode);
- int getShuffleMode();
- int removeTracks(int first, int last);
- int removeTrack(long id);
- void setRepeatMode(int repeatmode);
- int getRepeatMode();
- int getMediaMountedCount();
- int getAudioSessionId();
- String getLyricPath();
- String getArtistPath();
- }
阅读Android操作系统核心后台播放服务:
经过阅读Android操作系统Music源码发现,系统Music播放音乐采用来MediaPlaybackService服务来处理复杂的音乐播放逻辑,还用来AIDL来接口控制播放
既然如此,我就修改AndroidManifest.xml--->MediaPlaybackService服务,对外暴露,⚠️注意:暴露的时候,action:name="必须唯一"
-------------------- 以下代码是创建一个Android工程,来访问操作系统Music播放服务来播放音乐
Android-AIDL调用Android操作系统Music的方式来播放音乐的更多相关文章
- Ubuntu系统下实现Android工程调用独立编译的C++程序和GMP、PBC库
目的: 实现使用C++编写代码供Android工程调用.C++代码中可以使用STL库,也可以使用常用的由源码编译生成的库,如PBC.因为PBC是基于GMP库的,所以这里只记录了GMP和PBC库的编译安 ...
- Inno调用dll --- 实现背景播放音乐
Inno 播放音乐可以调用系统api函数mciSendString来实现,而mciSendString函数存在C:\Windows\System32\winmm.dll中,因此最终只要成功从该dll文 ...
- Android -- service的开启方式, start开启和绑定开启服务,调用服务的的方法, aidl调用远程服务
1. 概述 bindService() 绑定服务 可以得到服务的代理人对象,间接调用服务里面的方法. 绑定服务: 间接调用服务里面的方法. 如果调用者activity被销毁了, ...
- Android 使用AIDL调用外部服务
好处:多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作, 本文包括: 1 .创建AIDL 服务端.2 .创建AIDL 客户端. 3.客户端调用服务端提供的 ...
- Unity调用Android的两个方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- Unity3D调用android方法(非插件方式)
关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...
- Unity调用Android的两种方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- Android跨进程通信的四种方式
由于android系统中应用程序之间不能共享内存.因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些.在android SDK中提供了4种用于跨进程通讯的方式.这4种方式正好对应于andro ...
随机推荐
- Linux6系统安装
- 异步编程之co——源码分析
异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...
- C#中使用lockbits方法处理图像
转自 使用lockbits方法处理图像(转) 许多图像处理任务即时是最简单的文件类型转换,例如从32位深度到8位深度的格式转化,直接获得像素阵列要比使用GetPixel和SetPixel等方法的效率高 ...
- Halcon算子之shape_trans,用于变换区域的形状
函数原型:shape_trans(Region : RegionTrans : Type : ) *shape_trans*仍然是区域,smallest_rectangle1可以获得四个角的坐标 函数 ...
- fileinput模块可以循环一个或多个文本文件的内容
fileinput模块可以循环一个或多个文本文件的内容. [默认格式] fileinput.input (files=None, inplace=False, backup='', bufsize=0 ...
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
#if UNITY_EDITOR using System.Collections; using System.Collections.Generic; using System.IO; using ...
- Elasticsearch from+size 超过10000结果解决方法
方法一: 如果需要搜索分页,可以通过from size组合来进行.from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10, 如果搜索size大于10000,需要设置 ...
- input子系统分析之一:框架
内核版本:3.9.5 输入设备总类繁杂,包括按键,键盘,触摸屏,鼠标,摇杆等等,它们本身都是字符设备,不过内核为了能将这些设备的共性抽象出来,简化驱动的开发,建立了一个Input子系统.Input子系 ...
- Lenovo SplitScreen联想分屏软件只能在联想电脑运行,如何破解
1.正常安装软件,重启电脑. 2.打开安装目录 C:\Program Files\Lenovo\Lenovo SplitScreen\SplitScreen 找到 MachineChecker.dll ...
- 在SharePoint解决方案中使用JavaScript (0)
随着Web前段技术(JavaScript/HTML5)的日益发扬光大,在Web应用程序中,我们开始更多的使用JavaScript.很多以往是放在服务器上运行的逻辑,现在都开始逐渐的向前段转移.这种趋势 ...