gpt4 book ai didi

android - Android 中的屏幕录像机以编程方式,而不是屏幕截图

转载 作者:行者123 更新时间:2023-11-29 14:48:52 24 4
gpt4 key购买 nike

我想制作类似“EASY screen recorder”的应用。从我必须开始的地方开始,因为我搜索了很多但没有找到任何入门链接。有任何 api 用于创建屏幕录像机而不是屏幕截图。我不想使用 javacv 从屏幕截图创建视频。我只想让用户启动应用程序并单击开始录制按钮,然后记录用户在移动设备上所做的一切。

1) android 中有没有这方面的api。

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

3) android 中是否没有任何api,请向我推荐其他api,以便我可以在android 中使用。

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

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

最佳答案

很抱歉回答晚了,但这是一个有效的代码。它适用于 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;
}

关于android - Android 中的屏幕录像机以编程方式,而不是屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com