有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在使用MediaRecorder在Android上录制屏幕时无法获取表面

我想录下我手机的屏幕。当我在API23上测试它时,它工作得很好,但当我在API22上测试代码时,它无法得到表面,但代码在安卓棉花糖上工作得很好

private VirtualDisplay createVirtualDisplay()
{
    return mMediaProjection.createVirtualDisplay("MainActivity",
            DISPLAY_WIDTH, DISPLAY_HEIGHT, mScreenDensity,
            DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
            mMediaRecorder.getSurface(), null /*Callbacks*/, null
            /*Handler*/);
}

接收错误

mMediaRecorder.getSurface()

这是错误enter image description here的屏幕截图


共 (1) 个答案

  1. # 1 楼答案

    我也面临同样的问题。授予运行时权限

    if (ContextCompat.checkSelfPermission(TestInstructions.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            + ContextCompat.checkSelfPermission(TestInstructions.this,
                    Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(TestInstructions.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                || ActivityCompat.shouldShowRequestPermissionRationale(TestInstructions.this,
                        Manifest.permission.RECORD_AUDIO)) {
            Snackbar.make(relativeLayout, R.string.label_permissions, Snackbar.LENGTH_INDEFINITE)
                    .setAction("ENABLE", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            ActivityCompat.requestPermissions(TestInstructions.this, new String[] {
                                    Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO },
                                    REQUEST_PERMISSIONS);
                        }
                    }).show();
        } else {
            ActivityCompat.requestPermissions(TestInstructions.this,
                    new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO },
                    REQUEST_PERMISSIONS);
        }
    }
    

    它会解决你的问题