Почему startActivityForResult () не приводит к выполнению onActivityResult ()? - PullRequest
0 голосов
/ 23 февраля 2019

Все еще пытаюсь сделать мое приложение для записи экрана.Я продолжаю работать с 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 с тем же кодом ничего не исправили.

Большое спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Было очень простое решение.Я только что инициализировал сервис записи, который поместил ноль в mediaRecorder mediaRecorder, так что после этого я не смог его повторно инициализировать.Исправлена ​​ошибка, при которой интент, который вызывал onActivivtyResult () в onCreate () действия перед запуском службы, исправил это.

0 голосов
/ 23 февраля 2019

Ваш 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);
    } else { 
      //TODO: Do something 
        Toast.makeText(getBaseContext(), "Result code is not RESULT_OK, ", Toast.LENGTH_LONG).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...