Все еще пытаюсь сделать мое приложение для записи экрана.Я продолжаю работать с MediaRecorder, как мне сказали некоторое время назад, поэтому я застрял с другой проблемой.
Мне просто нужно инициализировать объект MediaProjection, чтобы заставить мой код работать, это то, что я делаю в onActivityResult (), как написано в этом руководстве :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RECORD_REQUEST_CODE && resultCode == RESULT_OK) {
mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
screenRecorder.setMediaProject(mediaProjection);
}
}
setMediaProjection () выглядит как
public void setMediaProject(MediaProjection project) {
mediaProjection = project;
}
, поэтому не должно вызывать никаких проблем.
И вот как я пытаюсь вызвать onActivityResult ():
/* start transmission */
if(screenRecorder.isRunning()) {
screenRecorder.stopRecord();
} else {
Intent captureIntent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, RECORD_REQUEST_CODE);
}
Забавно и безумно, что когда я впервые запустил отладку, это сработало!После startActivityForResult () я попал в onActivityResult () и инициализировал mediaProjection: мой телефон показал мне диалоговое окно, разрешить ли мне снимать экран или нет, поэтому я разрешил это и получил специальный символ (что-то вроде экрана с отображаемыми волнами) на моемстрока состояния.
Но через несколько мгновений я обнаружил проблему при остановке записи и перезапустил сеанс отладки, чтобы более точно его отследить.После этого onActivityResult () просто игнорируется: вызывается startActivityForResult (), отображается диалоговое окно, но после разрешения записи onActivityResult () полностью пропускается, а mediaProjection равно нулю.Перезапуск и переустановка apk с тем же кодом ничего не исправили.
Большое спасибо за любые предложения.