不确定这是否是正确的地方,因为这个问题可能被标记为基于意见,但我需要的主要是关于架构的建议。
我开发了一个应用程序,可以录制屏幕(使用媒体投影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);
}
在服务中,我设置了媒体投影,启动和停止录制,最后启动分析录制视频的过程。 我在通知栏中跟踪进度。
我想听听您的建议:
直接从通知栏中的按钮开始录制会更合适吗?
到目前为止,用户一次只能进行一次记录,这意味着用户需要停止或取消当前分析,然后才能继续进行新的记录。在对以前的录音进行分析的同时,让用户有机会开始其他录音是否更合适?如果是这样,我应该使用主要活动来跟踪所有进程还是应该使用多个通知?
谢谢你。
直接从通知栏中的按钮开始录制会更合适吗?
这取决于您是否已经获得许可。
Notification
无法轻易使用startActivityForResult()
。因此,活动中需要使用 mediaProjectionManager.createScreenCaptureIntent()
。如果您之前这样做过,并且只是想使用 Notification
来触发录制,那么这可能会起作用。
在对之前的录音进行分析的同时,让用户有机会开始其他录音是否更合适?
设备可能没有足够的能力来同时完成这两件事。
我应该使用主要活动来跟踪所有进程还是应该使用多个通知?
我会避免多次通知。