我正在从我的应用程序中保存声音以用作铃声或通知声音。这是我的代码的一部分,取自此页面:
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, soundName);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
values.put(MediaStore.Audio.Media.ARTIST, "artist");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
this.getContentResolver().insert(uri, values);
我的理解是声音将被保存以及铃声,通知声音和警报,因为标志都设置为“真”。至少在模拟器上这确实有效,但在实际设备上,声音只出现在铃声列表中,我不知道为什么。
编辑:我试图进一步调查:删除带有“IS_RINGTONE”的行不会改变任何东西(如果一次只能使用一个标志),声音不会显示在通知列表中 -声音。
任何帮助表示赞赏。
亲切的问候, Select0r