Невозможно записать с помощью mediarecord, когда экран заблокирован. Пробовал WakeLock, но безрезультатно

0

Это ForegroundService, в котором функция OnCreate выглядит следующим образом:

public void onCreate() {
    super.onCreate();
    final long RECORDING_INTERVAL = 30000;

    TimerTask recordingTask = new TimerTask() {
        public void run() {
            if (wakeLock == null) {
                Log.d("WakeLock", "WakeLock");
                pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "FlexRat::Tag");
                wakeLock.acquire();
            }

            Log.i("Debug", "Recording Task");
            stopRecording();
            startRecording();
        }
    };

    Timer recordingTimer = new Timer();
    recordingTimer.scheduleAtFixedRate(recordingTask, 0, RECORDING_INTERVAL);
}

А метод startRecording () выглядит следующим образом:

private void startRecording() {
    Log.i("Info", "NEW RECORDING");
    try {
        recorder = new MediaRecorder();

        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

        Date today = Calendar.getInstance().getTime();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.ENGLISH);
        String reportDate = formatter.format(today);

        File instanceRecordDirectory = new File(getStoragePath());
        File instanceRecord = new File(instanceRecordDirectory.getAbsolutePath() + File.separator + reportDate + ".mp4");

        if (!instanceRecordDirectory.exists()) {
            instanceRecordDirectory.getParentFile().mkdirs();
            instanceRecordDirectory.mkdirs();
        }

        if (!instanceRecord.exists()) {
            instanceRecord.createNewFile();
        }

        recorder.setOutputFile(instanceRecord.getAbsolutePath());

        recorder.prepare();
        recorder.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Исключение возникает, когда я выключаю устройство, я получаю следующую трассировку стека:

I/MediaRecorderJNI: setAudioSource(1)
W/System.err: java.lang.RuntimeException: setAudioSource failed.
        at android.media.MediaRecorder._setAudioSource(Native Method)
        at android.media.MediaRecorder.setAudioSource(MediaRecorder.java:797)
        at com.multimedia.flexrat.BackgroundService.startRecording(BackgroundService.java:125)
        at com.multimedia.flexrat.BackgroundService.access$300(BackgroundService.java:42)
        at com.multimedia.flexrat.BackgroundService$1.run(BackgroundService.java:70)
        at java.util.TimerThread.mainLoop(Timer.java:562)
        at java.util.TimerThread.run(Timer.java:512)

Я хочу, чтобы задача записи продолжала работать даже после того, как устройство заблокировано. На данный момент меня не волнует использование батареи. Я знаю, что это довольно сложная тема. Я просто хочу, чтобы сейчас это работало. Может ли кто-нибудь указать мне правильное направление? Я искал в Интернете, но безрезультатно.