Не удалось открыть файл (в доступе отказано) - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь записать звук с помощью класса MediaRecorder в Android, сохранить его в файл и затем воспроизвести с помощью MediaPlayer.

Здесь я выбираю файл, в котором хочу сохранить свой аудиофайл:

currentDate = Calendar.getInstance().getTime();
condensedDate = currentDate.toString().replaceAll("\\s", "")
fileName = getExternalCacheDir().getAbsolutePath();
fileName += File.separator + condensedDate + ".3gp";

и здесь я установил его как выходной файл для MediaRecorder

Recorder.setOutputFile(fileName);

Затем в другом Activity я использую MediaPlayer для воспроизведения этого файла аудио:

MediaPlayer player = new MediaPlayer();
try {
     player.setDataSource(fileName);
     player.prepare();
     player.start();
} catch (IOException e) {
        e.printStackTrace();
}

Здесь начинаются проблемы, ничего не воспроизводится, и это мой журнал:

09-09 14:31:38.887 1522-26066/? E/FileSource: Failed to open file '/storage/emulated/0/Android/data/com.mycompany.dbmeter.pro/cache/SunSep0914:31:19GMT+00:002018.3gp'. (Permission denied)
09-09 14:31:38.887 1522-26066/? E/GenericSource: Failed to create data source!
09-09 14:31:38.887 25996-26064/com.mycompany.dbmeter.pro E/MediaPlayerNative: error (1, -2147483648)

Это странно, потому что я пошагово следовал официальному образцу кода, который можно найти здесь .

Я попытался сделать мир файлов читаемым, как предлагалось в этом сообщении о переполнении стека .

Я также попробовал то, что было предложено здесь , но ничего не изменилось.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я решил проблему, по какой-то причине имя файла, которое я использовал, вызвало эту ошибку.

Я использовал, чтобы получить дату, преобразовать ее в строку и исключить все пробелы; как то так:

SunSep0914:31:19GMT+00:002018.3gp

Теперь, отлаживая приложение, я изменил его на test.3gp, и оно работает как шарм ...

0 голосов
/ 09 сентября 2018

Добавили ли вы разрешения в свой файл манифеста

<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Источник: https://developer.android.com/guide/topics/media/mediarecorder

...