MCPcopy Index your code
hub / github.com/KunMinX/Jetpack-MusicPlayer

github.com/KunMinX/Jetpack-MusicPlayer @5.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 5.2.0 ↗ · + Follow
568 symbols 1,241 edges 72 files 122 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

 

由来

Jetpack-MusicPlayer 是一款基于 Jetpack MVVM 架构音乐播放控制组件,它是因 “Jetpack-MVVM-Best-Practice” 这项目需求而存在。

最初寻遍 GitHub 也未找到合适开源库,于是另起炉灶,自己编写 高度解耦、轻松配置、可通过 Maven 仓库远程依赖 的真正第三方库。

Jetpack-MusicPlayer 使用十分简单,依托于 设计模式原则 及 Java 泛型特性,使用者无需知道内部实现细节,仅通过继承 Album、Music、Artist 基类 即可完成 “业务实体类” 定制和扩展

此外,在不设置自定义配置情况下,Jetpack-MusicPlayer 最少只需 一行代码即可运行起来

 

PureMusic Dispatcher PlayMode Switch

 

目标

Jetpack-MusicPlayer 目标是:一行代码即可接入 音乐播放控制组件

除一键接入省去 99% 繁杂重复工作外,你还可从该项目获得内容包括:

  • 整洁代码风格 和 标准资源命名规范。
  • 遵循 "响应式编程" 开发模式的 Dispatcher 使用,
  • 优秀代码分层和封装思想,在不做任何个性化配置情况下,一行代码即可接入。
  • 主体工程基于前沿软件工程安全 JetPack MVVM 架构。
  • AndroidX 和 Material Design 2 全面使用。
  • ConstraintLayout 约束布局最佳实践。
  • 绝不使用 Dagger,绝不使用奇技淫巧、编写艰深晦涩代码。

 

如你正在思考 如何为项目挑选合适的架构,这项目值得你参考!

 

 

简单使用:

1.在 build.gradle 中添加依赖。

implementation 'com.kunminx.player:player:5.2.0'

提示:本库托管于 Maven Central,请自行在根目录 build.gradle 添加 mavenCentral()

2.依据默认专辑实体类 DefaultAlbum 结构准备一串数据。此处以 JSON 为例:

// DefaultAlbum 包含 DefaultMusic 和 DefaultArtist 两个子类:
// 三者的字段可详见 BaseAlbumItem、BaseMusicItem 和 BaseArtistItem。
{
  "albumId": "JAY_008",
  "title": "依然范特西",
  "summary": "Still Fantasy",
  "artist": {
    "name": "Jay"
  },
  "coverImg": "https://...57036-570ed96eb055ef17.png",
  "musics": [
    {
      "musicId": "JAY_008_001",
      "title": "本草纲目",
      "artist": {
        "name": "Jay"
      },
      "coverImg": "https://.../57036-570ed96eb055ef17.png",
      "url": "bencaogangmu.mp3"
    },
    ...
  ]
}

3.在 Application 中初始化 多媒体播放控制组件。

DefaultPlayerManager.getInstance().init(this);

4.在得到数据后,最少只需一行代码 即可完成数据的装载。

//一行代码完成数据的初始化。
DefaultPlayerManager.getInstance().loadAlbum(album);

 

温馨提示:

1.实际开发中,项目数据或与本库数据 “结构上存在差异”,故通常做法是,从后端拿到和解析项目 JSON 数据,并对该数据进行遍历。在遍历过程中,实例化并装载 “本库实体类对象” 到列表中,以获本库所能使用的列表数据。

2.注意:如后端直接使用本库实体类读写 JSON 数据,请在 ProGuard Rules 中为该实体类配置混淆白名单:

-keep class com.kunminx.player.bean.** {*;}

 

更多

"播放控制" 及 "个性化配置" 等,详见 Wiki

 

Thanks to

material-components-android

AndroidX

ExoPlayer

AndroidVideoCache

 

My Pages

Email:kunminx@gmail.com

Juejin:KunMinX 在掘金

 

License

Copyright 2018-present KunMinX

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Extension points exported contracts — how you extend this code

IPlayInfoManager (Interface)
Create by KunMinX at 19/11/1 [3 implementers]
player/src/main/java/com/kunminx/player/contract/IPlayInfoManager.java
UseCaseScheduler (Interface)
Interface for schedulers, see UseCaseThreadPoolScheduler. [2 implementers]
architecture/src/main/java/com/kunminx/architecture/domain/usecase/UseCaseScheduler.java
PanelSlideListener (Interface)
(no doc) [1 implementers]
app/src/main/java/com/kunminx/puremusic/ui/page/helper/DefaultInterface.java
IPlayController (Interface)
Create by KunMinX at 18/9/24 [3 implementers]
player/src/main/java/com/kunminx/player/contract/IPlayController.java
RequestValues (Interface)
Data passed to a request.
architecture/src/main/java/com/kunminx/architecture/domain/usecase/UseCase.java
OnSeekBarChangeListener (Interface)
(no doc)
app/src/main/java/com/kunminx/puremusic/ui/page/helper/DefaultInterface.java
IServiceNotifier (Interface)
Create by KunMinX at 19/11/3
player/src/main/java/com/kunminx/player/contract/IServiceNotifier.java
ResponseValue (Interface)
Data received from a request.
architecture/src/main/java/com/kunminx/architecture/domain/usecase/UseCase.java

Core symbols most depended-on inside this repo

set
called by 53
app/src/main/java/com/kunminx/puremusic/ui/view/PlayPauseDrawable.java
getApp
called by 36
architecture/src/main/java/com/kunminx/architecture/utils/Utils.java
getInstance
called by 28
app/src/main/java/com/kunminx/puremusic/domain/proxy/PlayerManager.java
dip2px
called by 23
architecture/src/main/java/com/kunminx/architecture/ui/bind/DrawablesBindingAdapter.java
getApplicationContext
called by 17
architecture/src/main/java/com/kunminx/architecture/ui/page/BaseFragment.java
get
called by 16
app/src/main/java/com/kunminx/puremusic/ui/view/PlayPauseDrawable.java
getDisplayMetrics
called by 14
architecture/src/main/java/com/kunminx/architecture/utils/AdaptScreenUtils.java
getResources
called by 14
architecture/src/main/java/com/kunminx/architecture/ui/page/BaseActivity.java

Shape

Method 464
Class 87
Interface 14
Enum 3

Languages

Java100%

Modules by API surface

player/src/main/java/com/kunminx/player/domain/PlayerController.java30 symbols
architecture/src/main/java/com/kunminx/architecture/utils/Utils.java30 symbols
player/src/main/java/com/kunminx/player/domain/MusicDTO.java27 symbols
architecture/src/main/java/com/kunminx/architecture/utils/BarUtils.java27 symbols
app/src/main/java/com/kunminx/puremusic/domain/proxy/PlayerManager.java27 symbols
player/src/main/java/com/kunminx/player/DefaultPlayerManager.java26 symbols
architecture/src/main/java/com/kunminx/architecture/utils/ScreenUtils.java20 symbols
player/src/main/java/com/kunminx/player/contract/IPlayController.java18 symbols
app/src/main/java/com/kunminx/puremusic/ui/view/PlayPauseDrawable.java17 symbols
app/src/main/java/com/kunminx/puremusic/ui/page/PlayerFragment.java16 symbols
player/src/main/java/com/kunminx/player/domain/PlayingInfoManager.java15 symbols
app/src/main/java/com/kunminx/puremusic/ui/view/PlayPauseView.java15 symbols

For agents

$ claude mcp add Jetpack-MusicPlayer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page