Android 11中不支持的MIME类型

new9mtju  于 2023-02-17  发布在  Android
关注(0)|答案(4)|浏览(374)

在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);
pxiryf3j

pxiryf3j1#

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;
}
bttbmeg0

bttbmeg02#

我用下面的代码设置铃声但有错误的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.最佳应用铃声.安卓免费版铃声I/Toast:显示:isActivityContext = true 2021年10月11日14:53:03.106 10319 - 10319/com.最佳应用程序铃声.适用于安卓系统的免费铃声W/铃声管理器:直接打开失败;正在尝试故障切换:java.io.FileNotFoundException:打开失败:ENOENT(没有这样的文件或目录)2021 - 10 - 11 14:53:03.114 10319 - 10319/com. bestappsringtones.铃声为android免费W/铃声管理器:无法缓存铃声:java.io.IOException:java.lang.SecurityException:URI不是铃声、警报或通知:内容://0@media/外置/音频/媒体/56062 2021 - 10 - 11 14:53:03.114 10319 - 10319/com.最佳应用铃声.安卓免费铃声I/铃声管理器:保存路径类型:1,URI:内容://0@media/外置/音频/媒体/56062 2021 - 10 - 11 14:53:03.132 10319 - 10319/com.最佳应用铃声.安卓免费铃声I/铃声管理器:铃声路径:/存储/模拟/0/音乐/1633951383000.oga 2021 - 10 - 11 14:53:03.148 10319 - 10319/com.最佳应用铃声.安卓免费D铃声/吐司:显示:caller = com.最佳应用程序铃声.安卓免费铃声.设置活动

o75abkj4

o75abkj43#

你换吧
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/wav");

values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");

yxyvkwin

yxyvkwin4#

尝试使用'音频/x-wav':

values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/x-wav")

相关问题