Skip to content
/ iMusic Public

一个集视频播放器、音乐播放器封装库于一身的iMusic工程

Notifications You must be signed in to change notification settings

hty527/iMusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Aug 31, 2022
04223a0 · Aug 31, 2022
Aug 31, 2022
Aug 31, 2022
Jun 16, 2021
Aug 31, 2022
Aug 31, 2022
Aug 16, 2019
Aug 31, 2022
Nov 26, 2019
Aug 31, 2022
Aug 31, 2022
May 7, 2019
Apr 17, 2019
Apr 17, 2019
Aug 31, 2022

Repository files navigation

iMusic

此项目已不再更新维护!!!

视频播放需求请使用:iPlayer,功能特性支持包括但不限于:

  • 支持网络地址、直播流、本地Assets和Raw资源文件播放
  • 支持播放倍速、缩放模式、静音、镜像等功能设置
  • 支持自定义视频解码器、自定义控制器、自定义UI交互组件
  • 支持多播放器同时播放
  • SDK默认控制器(局部UI交互可自定义)支持手势控制、付费试看等交互
  • 支持任意位置启动Activity级别悬浮窗口播放
  • 支持任意位置启动全局悬浮窗口播放
  • 支持任意位置直接启动全屏播放
  • 支持连续播放视频列表

免责声明:

此项目中应用到了自行收藏的歌单列表、酷狗API、开眼API,纯属Demo演示,无任何商业用途,禁止任何人将示例项目中的第三方API应用于商业用途,如果使用了,连带的法律责任与本作者无关!

音乐播放器:Android音乐播放器封装

视频播放器:Android视频播放器封装

基于原生MediaPlayer解码器封装的音乐播放器和视频播放器功能库。极简接入、功能全面、体积甚小。欢迎Star!欢迎下载apk体验!
iMusic示例工程主要界面遵循MVP思想开发,搜索音乐API取自《酷狗音乐》开放API,视频资源API取自《开眼视频》。禁止直接使用此项目中的API于商业行为中,一经使用,与本作者无关!


功能演示及概述:

功能演示:(更多功能快照在结尾处)

  • 音乐播放器预览(如播放不流畅请点击图片查看)
  • 视频播放器预览

功能概述:

1.音乐播放器

  • 网络音乐播放
  • 本地音乐检索播放
  • 全局悬浮窗口播放,精准的扇形区域碰撞检测
  • 搜索歌手、专辑、歌曲名播放(iMusic)
  • 播放器歌词显示、自定义歌词解析器(>=1.0.7)
  • 自1.0.9版本起开放 退出APP后,后台播放能力。iMusic已对重开处理
  • 基本常规操作示例播放器
  • 锁屏播放控制
  • 自定义唱片机、锁屏界面、通知栏
  • 状态栏通知控制
  • 定时关闭播放
  • 播放模式设置
  • 对音乐收藏至本地
  • 最近播放记录浏览
  • 已对音频输出焦点管理作处理

2.视频播放器

  • 支持自定义视频控制器
  • 支持自定义封面控制器
  • 支持自定义手势识别调节器
  • 支持4种画面缩放模式设置
  • 支持界面跳转无缝衔接播放
  • 迷你小窗口播放、支持屏幕中拖拽
  • 全局悬浮窗播放、支持屏幕全局拖拽
  • 全屏播放下手势识别调节音量、屏幕亮度、快进、快退
  • 支持全局悬浮窗播放器中无缝切换至Activity播放界面
  • 列表单例播放
  • 列表横竖屏切换
  • 常规横竖屏切换
  • 已对视频输出焦点管理作处理

历史版本

查看历史版本

一.音乐播放器集成:

1.依赖

  • 项目根build.gradle中加入:
    allprojects {
        repositories {
            maven { url 'https://jitpack.io' }
        }
    }
  • 模块build.gradle中加入:
    dependencies {
        implementation 'com.github.hty527.iMusic:music-player:1.2.0'
    }

2.MainActivity播放器初始化

    @Override
    protected void onCreate() {
        super.onCreate();
        //初始化播放器内部存储及服务组件。此initialize方法为重载方法,请阅读内部入参说明
        MusicPlayerManager.getInstance().init(getApplicationContext()).initialize(MainActivity.this);
        //其他功能初始化请下方【其他功能初始化】
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //播放器反初始化。此方法为重载方法,请阅读内部入参说明
        MusicPlayerManager.getInstance().unInitialize(MainActivity.this);
    }

完整初始化其他功能初始化
3.开始播放你的音频任务

    /**
     * audios:待播放的歌单列表,音频对象需继承BaseAudioInfo类,请阅读类中成员属性注解
     * position:开始播放的位置(位于audios中的index)
     */
    MusicPlayerManager.getInstance().startPlayMusic(List<?> audios,int position);

4.音乐歌词

    歌词解析及显示功能在>=1.0.7版本起提供支持,具体使用请参考唱片机类MusicJukeBoxView。(持续优化中)
    iMuisc内置网络歌词解析仅支持酷狗音乐(搜索模块播放的歌曲)。

具体使用和说明详见播放器歌词
5.权限声明

    <!--网络状态检查-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--锁屏下继续缓冲-->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
  • Demo内置一套完整的UI交互播放器,请注册监听事件MusicPlayerManager.getInstance().addOnPlayerEventListener(this);并参照MusicPlayerActivity集成。

代码混淆和自定义交互及其他功能


二.视频播放器集成:

1.依赖

    dependencies {
        implementation 'com.github.hty527.iMusic:video-player:1.2.0'
    }

2.xml中引入播放器通道布局

    <com.video.player.lib.view.VideoPlayerTrackView
        android:id="@+id/video_track"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:video_autoSetCoverController="true"
        app:video_autoSetVideoController="true"/>

        //开启默认封面控制器
        app:video_autoSetCoverController="true"
        //开启默认视频交互控制器
        app:video_autoSetVideoController="true"

你也可以在java代码中创建播放器,前往视频播放器Wiki介绍

3.播放器初始化及基本数据设置

    mVideoPlayer = (VideoPlayerTrackView) findViewById(R.id.video_player);
    //开始准备播放
    mVideoPlayer.startPlayVideo(dataSource,title);
    //第二种姿势准备播放
    //mVideoPlayer.setDataSource(dataSource,title,);
    //mVideoPlayer.startPlayVideo();

4.Activity生命周期方法加入

    @Override
    protected void onResume() {
        super.onResume();
        VideoPlayerManager.getInstance().onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        VideoPlayerManager.getInstance().onPause();
    }

    @Override
    public void onBackPressed() {
        //尝试弹射返回
        if(VideoPlayerManager.getInstance().isBackPressed()){
            super.onBackPressed();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        VideoPlayerManager.getInstance().onDestroy();
        //如果你的Activity是MainActivity并且你开启过悬浮窗口播放器,则还需要对其释放
        VideoWindowManager.getInstance().onDestroy();
    }

5.权限声明:

    <!--网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--锁屏工作,防止休眠-->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <!--悬浮窗-->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <!--启用通知栏需使用-->
    <uses-permission android:name="android.permission.GET_TASKS" />

6.Activity Manifest文件配置:

    <activity android:name="xxx.xxx.xxx.MainActivity"
        android:screenOrientation="portrait"
        <!--在你需要全屏播放的Activity中加上这个属性,告诉系统Activity在横竖屏切换时不要销毁Activity-->
        android:configChanges="orientation|screenSize">
    </activity>

至此基础的视频播放器项目集成完毕,更多高级功能和API请阅读自定义交互和其他Wiki

iMusic预览及下载:

强烈建议集成前先下载体验此APP,根据APP中的功能对照对应的API集成开发!!

功能快照预览:

下载地址:


**或者扫描二维码下载
**

  • 集成中遇到问题请阅读Wiki,BUG提交欢迎issues。如有其他问题,联系邮箱:[email protected]

About

一个集视频播放器、音乐播放器封装库于一身的iMusic工程

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages