/*
软件作者:https://xuhss.com/oxox/pro
*/
"ui";
ui.layout(
<vertical gravity="center_horizontal">
<VideoView id="video" w="auto" h="auto" />
<frame w="*" h="*">
<list id="list" h="*">
<linear w="*" bg="?selectableItemBackground">
<img src="@drawable/ic_videocam_black_48dp" tint="white" bg="#ff5722" w="50" h="50" margin="16" />
<vertical>
<text textSize="16sp" textColor="#000000" text="{{this.name}}" marginTop="16" maxLines="1" ellipsize="middle"/>
<text textSize="13sp" textColor="#929292" text="{{this.dir}}" marginTop="8" maxLines="1" ellipsize="start"/>
</vertical>
</linear>
</list>
<progressbar id="search" w="auto" h="auto" layout_gravity="center"/>
</frame>
</vertical>
);
var videoFilesList = new Array;
var fileExtsList = ["mp4"];
var CurrentPlay = 0;
ui.list.setDataSource(videoFilesList);
var mc = new android.widget.MediaController(activity);
ui.video.setMediaController(mc);
ui.list.on("item_click", function(item, i) {
if (CurrentPlay != i) {
CurrentPlay = i;
var path = files.join(item.dir, item.name);
// toastLog(path);
ui.run(() => {
ui.video.setVideoPath(path);
ui.video.start();
});
};
});
ui.video.setOnCompletionListener(function() {
// toastLog("下一个");
CurrentPlay++;
CurrentPlay = (0 <= CurrentPlay && CurrentPlay < videoFilesList.length) ? CurrentPlay : (0 <= CurrentPlay ? 0 : videoFilesList.length - 1);
var path = files.join(videoFilesList[CurrentPlay].dir, videoFilesList[CurrentPlay].name);
// toastLog(path);
ui.run(() => {
ui.video.setVideoPath(path);
ui.video.start();
});
});
threads.start(function() {
searchFiles("/sdcard", videoFilesList, fileExtsList, 2);
});
threads.start(function() {
while (true) {
if (videoFilesList.length) {
var path = files.join(videoFilesList[CurrentPlay].dir, videoFilesList[CurrentPlay].name);
// toastLog(path);
ui.run(() => {
ui.search.setVisibility(8);
ui.video.setVideoPath(path);
ui.video.start();
});
break;
};
};
});
function searchFiles(dir, list, fileExts, C) {
//遍历该文件夹的文件
files.listDir(dir).forEach(fileName => {
// C == 1 ? log(C, fileName) : 0;
var path = files.join(dir, fileName);
//如果是子文件夹则继续扫描子文件夹的文件
if (files.isDir(path) && ((!C && C != 0) || C > 0)) {
searchFiles(path, list, fileExts, C - 1);
return;
}
for (var i = 0; i < fileExts.length; i++) {
//如果文件名的后缀是音乐格式
if (fileName.split(".")[1] == fileExts[i] && fileName.endsWith(fileExts[i])) {
//则把它添加到列表中
list.push({
name: fileName,
dir: dir
});
}
}
});
};
[虚幻私塾】
- 粉丝: 337
- 资源: 1558
最新资源
- 机械臂代码_Mechanical_arm.zip
- 自己开发的一款桌面级模块化的协作机械臂(A desktop level modular collabora
- 我的超迷你机械臂机器人项目。_Dummy-Robot.zip
- dummy机械臂出自稚晖君_dummy-solidworks-.zip
- 大模型AI机械臂,结合机械臂+大模型+多姿态+语音识别,能看图识物、听懂指令、精准执行任务_xzarm.zip
- Unity2d上位机,通过Arduino辅助机械手的直线电机移动实现抓握_UnityRboticHandGrispHelper.zip
- 机械革命蛟龙5黑苹果EFI_jiaolong5-EFI.zip
- 古月居ROS机械臂开发代码和笔记_Development-of-robot-with-ROS.zip
- 我的超迷你机械臂机器人项目。_Dummy-Robot.zip
- 中国大学MOOC《ROS机械臂开发技术》课程代码示例 _ROS-Academy-for-RoboticArm.zip
- 这是2023年华南理工大学机器人校内赛五山五狼—车车难造队的机械建模开源,我是本队机械建模队员杨欣然_-.zip
- 高级开发简单游戏制作,期末项目答辩小组作业
- MySQL存储引擎解析及其应用场景与优化策略
- 电机控制器,谐波电流注入 为解决汽车NvH而开发,旨在消除转矩谐波,降低运行噪声…… 已成功应用于某项目
- MATLAB代码:基于小生境粒子群算法的配电网有功-无功协调优化 关键词:配电网优化 有功-无功优化 小升境粒子群 光伏波动性 DG配电网 参考文档:模型部分参考:基于粒子群算法的含光伏电站的配
- 2024更新付费进群源码/9.9付费进群系统/付费进群系统源码教程【带详细教程】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈