使用场景
播放视频, 更多控制
效果展示
autoj版本
代码还有些许bug, 仅作为demo学习
原理
PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单、快捷的接口,帮助开发者在 Android 平台上快速开发播放器应用, 属于七牛云直播
autojs使用该sdk可以对视频有更多的操作
七牛直播云官方文档
https://developer.qiniu.com/pili/1210/the-android-client-sdk
知识点
- sdk转dex
- 判断cpuabi
- surfaceView布局
- 获取so文件夹路径
- 添加so
- 按钮事件监听
- 资源释放
- 脚本生命周期
- 打印对象属性
- java代码改为autojs代码
代码讲解
1. 布局
ui.layout(
<vertical background="#000000" gravity="center">
<frame android:layout_width="wrap_content" android:layout_height="wrap_content">
<android.view.SurfaceView android:id="surfaceView" android:layout_gravity="center" />
</frame>
<text text="作者: 牙叔" margin="10" textSize="50sp" textStyle="bold" gravity="center" textColor="#ddffffff"></text>
<horizontal>
<button id="play">play</button>
<button id="stop">stop</button>
<horizontal></horizontal>
<button id="pause">pause</button>
<button id="resume">resume</button>
</horizontal>
<button id="statInfo">statInfo</button>
<button id="loading">loading</button>
</vertical>
);
2. 复制so文件
copyJniLibs();
3. 定义全局变量
let TAG = "视频播放测试";
let mSurfaceView;
let mMediaPlayer;
let mLoadingView;
let mAVOptions;
let mStatInfoTextView;
let mSurfaceWidth = 0;
let mSurfaceHeight = 0;
let mVideoPath = null;
let mIsStopped = false;
let mToast = null;
let mLastUpdateStatTime = 0;
let mDisableLog = false;
let isLiveStreaming = false;
mLoadingView = ui.loading;
4. 添加各种按钮点击事件
ui.play.click(function () {
if (mIsStopped) {
prepare();
} else {
mMediaPlayer.start();
}
});
5. 退出时, 释放资源
events.on("exit", () => {
log("开始释放资源");
release();
let audioManager = context.getSystemService(context.AUDIO_SERVICE);
audioManager.abandonAudioFocus(null);
log("结束释放资源");
log("exit");
});
6. mMediaPlayer设置监听
mMediaPlayer.setOnVideoSizeChangedListener(getOnVideoSizeChangedListener());
mMediaPlayer.setOnCompletionListener(getOnCompletionListener());
mMediaPlayer.setOnErrorListener(getOnErrorListener());
7. 生成监听的函数
function getOnCompletionListener() {
return new JavaAdapter(PLOnCompletionListener, {
onCompletion: function () {
log(TAG, "Play Completed !");
Utils.showToastTips(activity, "Play Completed !");
log("finish");
},
});
}
8. 大致就以上步骤
9. 本项目需要先用安卓项目生成dex, autojs才能使用sdk
10. 所以有两个仓库, 一个安卓, 一个autojs
查看完整源码
微信公众号 AutoJsPro教程
QQ群
747748653