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

标签 java android android-studio screen-recording mediarecorder-api

我想录下我的手机屏幕。当我在 API 23 上测试它时它工作正常但是当我在 api 22 上测试代码时它无法获得表面,但代码在 android marshmallow 上运行良好。

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 的屏幕截图

最佳答案

我遇到了同样的问题。授予运行时权限。

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);
    }
}

它将解决您的问题。

关于java - 使用 MediaRecorder 在 Android 上录制屏幕时无法获取 Surface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240748/

相关文章:

android - 存储在 bintray 中的 AAR 类库不链接到扩展类

java - 在 Sdcard Android 中写入时找不到文件异常

android - 如何在 Android Studio 中或通过 ADB 获取 Android Things 设备上的应用程序的屏幕截图?

java - 极其奇怪的类(class)困惑

java - 线程卡在应用程序中

java - 按名称对枚举值排序

android - allprojects 存储库设置和 Fabric 之间的冲突

java - 场景生成器,如何配对 ComboBoxs 选择

android - html5 要求不能在 android 2.1 上工作

android - 如何在 android studio 中集成最新的 Google play 服务