#android #mime-types #android-11
#Android #mime-типы #android-11
Вопрос:
Проблема ниже в Android 11, и она отлично работает ниже 11. Во время записи аудиофайла.
Вот исключение.
java.lang.IllegalArgumentException: Unsupported MIME type "audio/wav"
Код
File outFile = new File(outPath);
long fileSize = outFile.length();
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, outPath);
values.put(MediaStore.MediaColumns.TITLE, title.toString());
values.put(MediaStore.MediaColumns.SIZE, fileSize);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
values.put(MediaStore.Audio.Media.ARTIST, getApplicationInfo().name);
values.put(MediaStore.Audio.Media.DURATION, duration);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(outPath);
final Uri newUri = getContentResolver().insert(uri, values);
Комментарии:
1. Вы пробовали использовать
MPEG
вместоWAV
?2. позвольте мне проверить с помощью MPEG
3. Я рекомендую вам опубликовать всю трассировку стека, а не одну строку.
4. Попробуйте «audio / x-wav» вместо «audio / wav»
5. должна быть какая-то хорошо выглядящая документация, потому что я работаю
mp3
и все еще получаю ту же ошибку, я имею в виду, что это самый удобный формат вообще .. теперь такая же проблемаwav
и с
Ответ №1:
import android.webkit.MimeTypeMap;
// url = file path or suitable URL.
public static String getMIMEType(String url) {
String mType = null;
String mExtension = MimeTypeMap.getFileExtensionFromUrl(url);
if (mExtension != null) {
mType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(mExtension);
}
return mType;
}
Комментарии:
1. Он работает!!! когда мы регистрируем MimeType, появляется значение «audio / mpeg».
Ответ №2:
Я использовал приведенный ниже код для установки мелодии звонка, но имеет ошибку для Android 11
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DATA, outputfile.getAbsolutePath());
contentValues.put(MediaStore.MediaColumns.TITLE, "ringtonename");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, getMIMEType(ringtone_file.getPath()));
contentValues.put(MediaStore.MediaColumns.SIZE, outputfile.length());
contentValues.put(MediaStore.Audio.Media.ARTIST, "ringtonename");
contentValues.put(MediaStore.Audio.Media.IS_RINGTONE, true);
contentValues.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
contentValues.put(MediaStore.Audio.Media.IS_ALARM, true);
contentValues.put(MediaStore.Audio.Media.IS_MUSIC, false);
ContentResolver contentResolver = getContentResolver();
Uri generalaudiouri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
contentResolver.delete(generalaudiouri, MediaStore.MediaColumns.DATA "='" outputfile.getAbsolutePath() "'", null);
Uri ringtoneuri = contentResolver.insert(generalaudiouri, contentValues);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, ringtoneuri);
2021-10-11 14:53:03.037 10319-10319/com.bestappsringtones.ringtonesforandroidfree I/Toast:
показать: focusDisplayId = 0, isFocusInDesktop = false mCustomDisplayId =-1
isDexDualMode=false 2021-10-11 14:53:03.037
10319-10319/com.bestappsringtones.ringtonesforandroidfree I/Toast:
показать: isActivityContext = true 2021-10-11 14:53:03.106
10319-10319/com.bestappsringtones.ringtonesforandroidбесплатно
W / RingtoneManager: не удалось открыть напрямую; попытка перехода на другой ресурс:
java.io.FileNotFoundException: ошибка открытия: ENOENT (нет такого файла или
каталога) 2021-10-11 14:53:03.114
10319-10319/com.bestappsringtones.ringtonesforandroidбесплатно
W / RingtoneManager: не удалось кэшировать мелодию звонка: java.io.IOException:
java.lang.Исключение SecurityException: Uri не является мелодией звонка, будильником или
уведомлением: content://0@media/external/audio/media/56062 2021-10-11
14:53:03.114 10319-10319/com.bestappsringtones.ringtonesforandroidбесплатно
I / RingtoneManager: сохранить тип пути: 1, URI :
content://0@media/external/audio/media/56062 2021-10-11 14:53:03.132
10319-10319/com.bestappsringtones.ringtonesforandroidбесплатно
I / RingtoneManager: путь к рингтону:
/хранилище /эмулируется/0/Музыка/1633951383000.oga 2021-10-11 14:53:03.148
10319-10319/com.bestappsringtones.ringtonesforandroidбесплатный D / Toast:
показать: вызывающий =
com.bestappsringtones.ringtonesдляandroidбесплатно.Настройка активности
Ответ №3:
Попробуйте изменить
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");
Для
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");