6.7.0 - Alpha7 - 修复频繁获取或重建 ImageReader 时可能因缓冲区暂无可用帧导致应用崩溃的问题
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"$data": {
|
||||
"v6.7.0": {
|
||||
"released_date": "2025/10/09",
|
||||
"released_date": "2025/10/19",
|
||||
"feature": [
|
||||
"zip 模块, 用于文件压缩与解压缩操作 (Ref to [Auto.js Pro](https://g.pro.autojs.org/)) (参阅 项目文档 > [Zip](https://docs.autojs6.com/#/zip))",
|
||||
"mediainfo 模块, 用于查看媒体文件的详细信息 (参阅 项目文档 > [媒体信息](https://docs.autojs6.com/#/mediainfo))",
|
||||
"UiObject#isShifted 方法, 用于检测控件位置变化",
|
||||
"s13n.bytes 方法, 用于标准化点对象及时长对象 (参阅 项目文档 > [标准化](https://docs.autojs6.com/#/s13n))",
|
||||
"structuredClone 全局方法, 用于深拷贝 JavaScript 对象 (参阅 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/structuredClone))",
|
||||
"设置页面支持应用启动器图标设置选项 _[`issue #405`](http://issues.autojs6.com/405)_",
|
||||
"Scrapers 工具 (run-scrapers.mjs) 用于自动更新 Gradle 构建脚本结构化数据/README 通用数据/README 模板数据等"
|
||||
@@ -15,6 +16,7 @@
|
||||
"timers.keepAlive 方法 timeout 参数功能无效的问题",
|
||||
"floaty.window/rawWindow 方法无法接受字符串参数的问题",
|
||||
"util.class[Name]/getClass[Name] 可能返回错误结果的问题",
|
||||
"无法使用 console/toast 等方法显示 BigInt 数据类型的问题",
|
||||
"部分全局对象可能丢失 JavaScript 原型属性及方法的问题",
|
||||
"使用 XML 语法将 JavaScript 表达式作为属性值时, this 对象可能出现指向错误的问题",
|
||||
"canvas 元素控件 setMaxFps 方法内部帧率计算错误",
|
||||
@@ -24,6 +26,7 @@
|
||||
"images 部分相关方法可能引发内存泄露的问题 _[`issue #372`](http://issues.autojs6.com/372)_",
|
||||
"Android 10 UiObject#child 方法可能出现 ArrayIndexOutOfBoundsException 异常的问题 _[`issue #416`](http://issues.autojs6.com/416)_",
|
||||
"运行项目时 project.json 配置参数无法正常解析的问题",
|
||||
"频繁获取或重建 ImageReader 时可能因缓冲区暂无可用帧导致应用崩溃的问题",
|
||||
"打包应用无法正常使用 Paddle OCR 与 Rapid OCR 功能的问题",
|
||||
"版本历史页面部分系统因字体差别导致统计数据显示不完整的问题",
|
||||
"部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_",
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.hardware.display.DisplayManager;
|
||||
import android.hardware.display.VirtualDisplay;
|
||||
import android.media.Image;
|
||||
import android.media.ImageReader;
|
||||
@@ -123,7 +124,7 @@ public class ScreenCapturer {
|
||||
}, mHandler);
|
||||
}
|
||||
|
||||
mVirtualDisplay = mMediaProjection.createVirtualDisplay(ScreenCapturer.class.getSimpleName(), width, height, screenDensity, 16, mImageReader.getSurface(), null, null);
|
||||
mVirtualDisplay = mMediaProjection.createVirtualDisplay(ScreenCapturer.class.getSimpleName(), width, height, screenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mImageReader.getSurface(), null, null);
|
||||
}
|
||||
|
||||
private void refreshImageReader(int width, int height) {
|
||||
@@ -167,10 +168,16 @@ public class ScreenCapturer {
|
||||
}
|
||||
|
||||
public void setImageListenerAsync(ImageReader imageReader) {
|
||||
if (mOnScreenCaptureAvailableListener != null) {
|
||||
Image acquireLatestImage = imageReader.acquireLatestImage();
|
||||
mOnScreenCaptureAvailableListener.onCaptureAvailable(acquireLatestImage);
|
||||
acquireLatestImage.close();
|
||||
var listener = mOnScreenCaptureAvailableListener;
|
||||
if (listener == null) return;
|
||||
try (Image img = imageReader.acquireLatestImage()) {
|
||||
// acquireLatestImage may return null (no available frames/competition/switching).
|
||||
// zh-CN: acquireLatestImage 可能返回 null (无可用帧/竞争/切换中).
|
||||
if (img == null) return;
|
||||
listener.onCaptureAvailable(img);
|
||||
} catch (IllegalStateException e) {
|
||||
// Ignore the current frame if ImageReader/VirtualDisplay is switching or closed.
|
||||
// zh-CN: 当 ImageReader/VirtualDisplay 正在切换或已关闭时可能抛出, 忽略本帧.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ public record ScreenCaptureAvailableHandler(ScriptRuntime scriptRuntime, Images.
|
||||
|
||||
@Override
|
||||
public void onCaptureAvailable(Image image) {
|
||||
if (image == null) return;
|
||||
Images.setImageCaptureCallback(scriptRuntime, listener, image);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#Thu Oct 09 17:46:30 CST 2025
|
||||
BUILD_TIME=1760003190056
|
||||
#Thu Oct 23 22:53:43 CST 2025
|
||||
BUILD_TIME=1761231223404
|
||||
COMPILE_SDK_VERSION=36
|
||||
IMAGE_QUANT_CMAKE_VERSION=3.22.1
|
||||
IMAGE_QUANT_NDK_VERSION=26.1.10909125
|
||||
@@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
|
||||
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
||||
TARGET_SDK_VERSION=36
|
||||
TARGET_SDK_VERSION_INRT=29
|
||||
VERSION_BUILD=3410
|
||||
VERSION_NAME=6.7.0 Alpha6
|
||||
VERSION_BUILD=3434
|
||||
VERSION_NAME=6.7.0 Alpha7
|
||||
VSCODE_EXT_REQUIRED_VERSION=1.0.8
|
||||
|
||||
Reference in New Issue
Block a user