当前位置: 首页 > 知识库问答 >
问题:

Android中的屏幕录制程序,而不是屏幕截图

轩辕欣可
2023-03-14

我想让应用程序像“简易屏幕录制器”。我必须从哪里开始,因为我搜索了很多,但没有找到任何开始的链接。有任何用于创建屏幕录制器的api,而不是屏幕截图。我不想使用javacv从屏幕截图创建视频。我只想让用户启动应用程序,点击开始录制按钮,然后用户在手机上所做的一切来录制这些内容。

1) Android系统中是否有相关的api。

2) 如何在android中创建屏幕录制器应用程序。

3)是没有任何api在android然后请参考我其他api,所以我可以在android中使用。

我搜索了很多,但仍然无法创建录音应用程序。我有一个android应用程序,我在其中添加代码,在特定时间后使用处理程序拍摄屏幕截图,最后使用javacv创建视频,但我不喜欢,因为为此,我必须在每个应用程序中编写代码,并拍摄当前活动的屏幕截图,最后创建视频。

EASY屏幕记录器开发人员如何创建这个应用程序?他们使用了哪个api。我想创建这个应用程序的克隆。

共有3个答案

傅阿苏
2023-03-14

很少有工作围绕-这不需要你根你的设备)。

>

  • 如果你正在为你的应用程序创建一个演示,那么你可以使用一个模拟器或bluestack和一个桌面屏幕记录器来只录制模拟器。

    如果您需要在实际手机上显示正在使用的应用程序,那么您可以使用另一台相机来记录正在使用的应用程序

    如果你必须捕捉屏幕,并将手机连接到电脑上,你可以更快地从桌面上截取手机屏幕的截图(与Dalvik Debug Monitor Device相同)

    如果你必须创建一个应用程序,那么你必须探索NDK。

  • 牧梓
    2023-03-14

    根据Android 5.0,你将能够通过MediaProjection API捕获屏幕内容,而不必为设备设置根目录。尝试在SurfaceView上投影并从那里录制。

    郑承恩
    2023-03-14

    很抱歉回答晚了,但这里有一个工作代码。它将适用于Lollipop及以上

        private VirtualDisplay mVirtualDisplay;
        private MediaRecorder mMediaRecorder;
        private MediaProjection mMediaProjection;
        private MediaProjectionCallback callback;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            MediaProjectionManager projectionManager = (MediaProjectionManager) 
            context.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
            mMediaProjection.registerCallback(callback, null);
            initRecorder();
            mMediaRecorder.prepare();
            mVirtualDisplay = createVirtualDisplay();
            mMediaRecorder.start();
    }
    
    public void initRecorder() {
            path = "/sdcard/Record/video" + ".mp4";
            recId = "capture-" + System.currentTimeMillis() + ".mp4";
            File myDirectory = new File(Environment.getExternalStorageDirectory(), "Record");
    
                mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
                mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
                mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                mMediaRecorder.setVideoEncodingBitRate(MainFragment.bitRate);          
                mMediaRecorder.setVideoFrameRate(30);
                mMediaRecorder.setVideoSize(MainFragment.DISPLAY_WIDTH,
                MainFragment.DISPLAY_HEIGHT);
                mMediaRecorder.setOutputFile(path);
        }
    
    
        private VirtualDisplay createVirtualDisplay() {
            return mMediaProjection.createVirtualDisplay("MainActivity",
                    MainFragment.DISPLAY_WIDTH, MainFragment.DISPLAY_HEIGHT, MainFragment.screenDensity,
                    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                    mMediaRecorder.getSurface(), null /*Callbacks*/, null /*Handler*/);
        }
    
    public class MediaProjectionCallback extends MediaProjection.Callback {
            @Override
            public void onStop() {
                mMediaRecorder.stop();
                // mMediaRecorder.reset();
                mMediaRecorder.release();
                mMediaProjection.unregisterCallback(callback);
                mMediaProjection = null;
                mMediaRecorder = null;
            }
    
     类似资料:
    • 我已经在活动中创建了处理程序。这个Hanlder负责在10秒后拍摄屏幕截图。在运行方法中,我使用了虽然(标志==true)和屏幕捕获util标志==false,但这卡住了我的活动。我不能工作。它把屏幕拍摄一遍又一遍的相同的图像,因为动作被卡住了。我如何可以工作与我的屏幕和我正在做的处理程序采取屏幕截图后10秒?而循环卡住了我的应用程序。 它可以拍照,但我无法进行我的活动。

    • 在Linux下有很多屏幕载图的工具,下面简单介绍一下: 在GNOME桌面中自带了一个屏幕截图工具,位于“动作”栏内。该工具功能很少,只能截取当前屏幕。 在GMIP中也可截图,在“文件”--“获取”菜单下有一个“屏幕抓图”选项可进行屏幕截图。它可截取任意图窗口的内容,并自动输入到GMIP中,我们可方便地进行处理和保存。 安装ImageMagick软件,它有一个工具叫import可用于屏幕截图。该工具

    • 点击按钮进行截屏,可以将截屏图像保存到相册中。 作者说:听说会和苹果的策略有冲突,应用如果上架可能会被拒绝。这个估计是看人品了吧。经过测试发现,如果先弹出对话框,然后再截屏,似乎并不能把对话框也给保存下来。 [Code4App.com]

    • Android在Kitkat和Lollipop上获得了一个新的API,用于视频捕捉屏幕。您可以通过ADB工具或代码(从Lollipop开始)来完成。 自从新的API发布以来,许多应用程序都使用了这一功能,允许录制屏幕,微软甚至还开发了自己的Google Now On tap竞争对手应用程序。 使用ADB,您可以使用: 你甚至可以在Android Studio内部完成这项工作。 我找不到任何关于如何

    • 我知道使用android Studio录制应用程序屏幕的方法,并成功获得了视频进行演示,但我的问题是,还有多少其他方法可以在没有root设备的情况下录制android屏幕?我想在我的屏幕录制中添加语音。

    • 我试图截图Android Studio模拟器像素4 XL API 30,但每当我试图采取一个,模拟器结束自己。然后我得到消息"失去连接到设备"。谁能告诉我是否有办法解决这个问题? __ 我尝试更改保存的文件夹,并重新启动模拟器