Неподдерживаемый MIME-тип в Android 11

#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");