Запись аудио в Android - PullRequest
       14

Запись аудио в Android

0 голосов
/ 28 апреля 2011

Я записал аудио в формате 3gp и сохранил его на SD-карте. Это мой код, и он успешно выполнен. Мне нужно добавить изображение в этот аудиофайл, чтобы добавленное изображение было обложкой альбома и когдая пытаюсь воспроизвести записанный звук, взятый из местоположения SD-карты в медиаплеере Android по умолчанию .. вот так ..

enter image description here

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

/**
 * Starts a new recording.
 */
public void start() throws IOException {
String state = android.os.Environment.getExternalStorageState();
if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
    throw new IOException("SD Card is not mounted.  It is " + state
        + ".");
}

// make sure the directory we plan to store the recording in exists
File directory = new File(path).getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
    throw new IOException("Path to file could not be created.");
}

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
System.out.println("audio_file_path : = " + path);
recorder.setOutputFile(path);
recorder.prepare();

recorder.start();  // Recording is now started




}

1 Ответ

1 голос
/ 28 апреля 2011

Если вам просто нужен файл для отображения обложек в проигрывателе Android Media, рассмотрите возможность добавления обложек альбомов с помощью Google Content Provider.После создания файла 3GP отсканируйте его с помощью API MediaScannerConnection.После того, как он был добавлен в базу данных, вы можете получить к нему доступ, используя ContentResolver в своей деятельности или услуге.MediaScannerConnection предоставит вам URI для вашего вновь созданного файла.Вы можете попробовать разместить новое искусство, которое вы хотите, в месте на SDCard.Затем позвоните: getContentResolver().udpate(uri, newArtContentValue, null, null).newArtContentValue является экземпляром объекта ContentValue с ключом MediaStore.Audio.AudioColumns.ALBUM_ART и значением file:///sdcard/yourartfile.png.

Предостережение: на самом деле я не пробовал этого, поэтому может потребоваться небольшойтвики.Вам может потребоваться изменить расширение вашего файла, чтобы Google рассматривал его как аудиофайл, а не как видеофайл, чтобы существовало поле ALBUM_ART.Могут быть и другие случаи, которые я не рассматривал.

Если вам абсолютно необходимо встроить изображение в сам файл:

Файлы 3gp (насколько мне известно) не поддерживают скрытые метаданные, встроенные в файл.Таким образом, вам придется записывать в другой формат контейнера, который делает.Даже тогда я думаю, что единственный доступный OutputFormat, который поддерживает скрытые метаданные, - это MP4, и я не знаю ни одной функциональности Android, которая позволяет вам напрямую изменять медиафайлы для добавления таких тегов.

...