uni-app 红米k40s无法拍摄视频

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 红米k40s无法拍摄视频

示例代码:

testVideo() {  
    uni.chooseVideo({  
        sourceType:['camera'],  
        success(res){  
            console.log("

操作步骤:

testVideo() {  
    uni.chooseVideo({  
        sourceType:['camera'],  
        success(res){  
            console.log("

预期结果:

如上代码所示

实际结果:

可以正常拍摄视频

项目信息 描述
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 windows10
HBuilderX类型 正式
HBuilderX版本号 4.24
手机系统 Android
手机系统版本号 Android 14
手机厂商 红米
手机机型 Redmi K40S
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

Image

bug描述:

os为小米澎湃1.0.5.0
进入应用时已经清空了后台的其他应用。
拍摄视频后,相机无反应,但是应用也不会直接退出。
代码中也不会走到错误回调。


2 回复

小米澎湃OS系统也遇到这个问题,拍完视频应用直接卡死,只能强制杀进程


在处理uni-app在特定设备(如红米K40s)上无法拍摄视频的问题时,首先需要确认几个关键点:设备权限、设备兼容性、以及uni-app和相关插件的使用方式。以下是一个简要的代码案例和检查流程,帮助你定位并可能解决问题。

1. 检查设备权限

确保应用已正确请求并获得了摄像头和存储权限。在manifest.json中配置必要的权限:

"mp-weixin": { // 示例平台,针对其他平台如Android、iOS需相应配置
    "requiredPrivateInfos": ["chooseImage", "saveImageToPhotosAlbum"]
},
"plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.CAMERA",
                "android.permission.WRITE_EXTERNAL_STORAGE"
            ]
        }
    }
}

在代码中动态请求权限(对于Android 6.0及以上版本):

#ifdef APP-PLUS
const main = plus.android.importClass('android.app.Activity');
const context = plus.android.runtimeMainActivity();
const PackageManager = plus.android.importClass('android.content.pm.PackageManager');

if (context.checkSelfPermission(PackageManager.PERMISSION_CAMERA) !== PackageManager.PERMISSION_GRANTED) {
    const requestCode = 1;
    const permissions = [PackageManager.PERMISSION_CAMERA, PackageManager.PERMISSION_WRITE_EXTERNAL_STORAGE];
    context.requestPermissions(permissions, requestCode);
}
#endif

2. 使用uni-app拍摄视频

使用uni-app的uni.createCameraContext()接口进行视频拍摄:

const cameraContext = uni.createCameraContext();

function startRecording() {
    cameraContext.startRecord({
        success: function() {
            console.log('开始录像');
        },
        fail: function(err) {
            console.error('录像失败', err);
        }
    });
}

function stopRecording() {
    cameraContext.stopRecord({
        success: function(res) {
            console.log('录像结束', res.tempVideoPath);
        },
        fail: function(err) {
            console.error('停止录像失败', err);
        }
    });
}

3. 设备兼容性测试

由于不同设备的硬件和软件环境差异,建议在不同的Android设备上进行测试。如果问题仅出现在红米K40s上,可能需要检查该设备的Android版本、MIUI版本是否有特定的兼容性问题。

4. 调试和日志

利用uni-app的开发者工具和真机调试功能,查看详细的错误日志,以便进一步分析问题所在。

通过上述步骤,你应该能够定位到问题的具体原因,并可能找到解决方案。如果问题依旧存在,可能需要考虑是否是uni-app框架或相关插件的已知问题,查阅官方文档或社区论坛获取更多信息。

回到顶部