从通知而不是 MainActivity 录制屏幕,并为每个录制使用多个通知?

问题描述 投票:0回答:1

不确定这是否是正确的地方,因为这个问题可能被标记为基于意见,但我需要的主要是关于架构的建议。

我开发了一个应用程序,可以录制屏幕(使用媒体投影API)并对录制的视频执行一些分析(前台服务)。 到目前为止,我基本上是在主活动中启动屏幕捕获请求,然后启动服务。 主要活动:

 @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode==REQUEST_SCREENCAST) {
                if (resultCode==RESULT_OK) {
                   startService(resultCode, data);
                }
            }
            finish();
        }
    
    
        button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                        startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), REQUEST_SCREENCAST);
                }
            });
    

服务:

     public int onStartCommand(Intent intent, int flags, int startId) {
            int resultCode = intent.getIntExtra(EXTRA_RESULT_CODE, 1337);
            Intent data = intent.getParcelableExtra(EXTRA_RESULT_INTENT);
            //...
            mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
            //...
            return super.onStartCommand(Intent intent, int flags, int startId);
            }

在服务中,我设置了媒体投影,启动和停止录制,最后启动分析录制视频的过程。 我在通知栏中跟踪进度。

我想听听您的建议:

  • 直接从通知栏中的按钮开始录制会更合适吗?

  • 到目前为止,用户一次只能进行一次记录,这意味着用户需要停止或取消当前分析,然后才能继续进行新的记录。在对以前的录音进行分析的同时,让用户有机会开始其他录音是否更合适?如果是这样,我应该使用主要活动来跟踪所有进程还是应该使用多个通知?

谢谢你。

java android android-service android-notifications android-mediaprojection
1个回答
0
投票

直接从通知栏中的按钮开始录制会更合适吗?

这取决于您是否已经获得许可。

Notification
无法轻易使用
startActivityForResult()
。因此,活动中需要使用
mediaProjectionManager.createScreenCaptureIntent()
。如果您之前这样做过,并且只是想使用
Notification
来触发录制,那么这可能会起作用。

在对之前的录音进行分析的同时,让用户有机会开始其他录音是否更合适?

设备可能没有足够的能力来同时完成这两件事。

我应该使用主要活动来跟踪所有进程还是应该使用多个通知?

我会避免多次通知。

© www.soinside.com 2019 - 2024. All rights reserved.