爱播支持列表播放、全屏播放、重力自动旋转、清晰度切换、播放引擎切换、自定义主题颜色等。
- 全屏重力感应自动旋转
- 清晰度切换(高清/超清/蓝光)
- 自定义播放引擎(ijkPlayer/ExoPlayer/MediaPlayer/Vitamio)
- 视频列表播放(ListView/RecyclerView)
- 自定义主题颜色
- 可拖动窗口播放
- 拖动调节音量、亮度
- 支持Https视频源
- 多布局嵌套播放
属性 | 功能 | 值 | 默认状态 |
---|---|---|---|
enableTitleBar | 是否启用标题栏 | boolean | 是 |
enableBottomBar | 是否启用控制栏 | boolean | 是 |
enableBottomProgressBar | 是否启用底部进度条 | boolean | 是 |
enableEnlarge | 是否启用全屏按钮 | boolean | 是 |
enableClarity | 非全屏模式下是否启用播放源切换 | boolean | 是 |
enableShowWifiDialog | 非wifi条件下播放视频是否提示用户 | boolean | 是 |
enableCache | 是否启用缓存 | boolean | 否 |
enableTinyWindow | 视频列表中是否启用小窗口播放 | boolean | 否 |
tinyWindowWidth | 小窗口宽度 | dimension | 默认为普通窗口的2/5 |
tinyWindowHeight | 小窗口高度 | dimension | 默认为普通窗口的2/5 |
screenType | 普通窗口中,视频内容显示的方式 | adapter/fillCrop/fillParent/original | adapter |
screenTypeFull | 全屏窗口中,视频内容显示的方式 | adapter/fillCrop/fillParent/original | adapter |
screenTypeTiny | 小窗口中,视频内容显示的方式 | adapter/fillCrop/fillParent/original | adapter |
orientationFullScreen | 全屏模式中,Activity的方向 | vertical/horizontal | 重力感应自动旋转 |
需要使用的module中添加引用
dependencies {
implementation 'com.hacknife:iplayer:1.2.5'
//可选
implementation 'com.hacknife.ijkplayer:ijkplayer-java:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-exo:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-armv7a:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-armv5:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-arm64:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-x86:0.8.8'
implementation 'com.hacknife.ijkplayer:ijkplayer-x86_64:0.8.8'
implementation 'com.google.android.exoplayer:exoplayer:2.9.1'
implementation 'com.hacknife.vitamio:vitamio-java:5.2.3'
implementation 'com.hacknife.vitamio:vitamio-armv7a:5.2.3'
implementation 'com.hacknife.vitamio:vitamio-x86:5.2.3'
implementation 'com.hacknife.vitamio:vitamio-arm64:5.2.3'
implementation 'com.danikula:videocache:2.7.1'
}
在APP主题中添加如下属性
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="iplayer_primary_color">#00aeff</item>
</style>
实现ImageLoader中的方法
public class CoverLoader implements ImageLoader {
@Override
public void onLoadCover(ImageView cover, String coverUrl) {
Glide.with(cover).load(coverUrl).into(cover);
}
}
设置图片加载器和添加爱播生命周期管理器,播放引擎可选,如果不设置默认使用系统自带的MediaPlayer
Player.setPlayerEngine(new IjkEngine());
Player.setImageLoader(new CoverLoader());
Application.registerActivityLifecycleCallbacks(new PlayerLifecycleCallbacks());
<com.hacknife.iplayer.IPlayer
android:id="@+id/player"
android:layout_width="match_parent"
android:layout_height="match_parent" />
DataSource source = new DataSource.Builder()
.url("标清", Constant.url[0])
.url("高清", Constant.url[1])
.url("超清", Constant.url[2])
.url("蓝光", Constant.url[3])
.title(Constant.title[0])
.cover(Constant.img[0])
.build();
player.setDataSource(source, ContainerMode.CONTAINER_MODE_NORMAL);
player.setDataSource(String url, String title, String cover, ContainerMode containerMode, int position)
如果启用了全屏播放或者小窗口播放,需要实现以下方法
public void onBackPressed() {
if (Player.backPress()) return;
super.onBackPressed();
}
<activity
android:name=".DemoActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait"/>