Skip to content
/ iMusic Public

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

Notifications You must be signed in to change notification settings

hty527/iMusic

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。如有其他问题,联系邮箱:584312311@qq.com

About

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

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages