До уровня Jelly Bean 18 я могу использовать музыкальные файлы, которых нет в Медиа-магазине (например, частный .mp3-файл в папке содержит файл .nomedia, поэтому Media Scanner не сканирует эту папку и не знает об этом файле), но с Android 4.3 (проверено на Nexus 4) я не могу этого сделать, это работает только для музыкальных файлов, которые уже сканированы Media Scanner.
Настоящая причина этой проблемы в том, что я не могу вставить ContentValues с помощью MediaColumns. DATA — это абсолютный путь к файлу, не сканируемому Media Scanner, метод вставки всегда возвращает ноль.
Uri newUri = getCR().insert(uri, contentValues); // returns null in Android 4.3
Есть ли у кого-нибудь способ использовать личный файл (не сканируемый и не распознаваемый Media Scanner) в качестве мелодии звонка?
Вот как я устанавливаю мелодию звонка:
File ringtoneFile = new File(audio.getPath());
ContentValues cv = new ContentValues();
cv.put(MediaColumns.DATA, ringtoneFile.getAbsolutePath());
cv.put(MediaColumns.TITLE, audio.getTitle());
cv.put(MediaColumns.MIME_TYPE, "audio/*");
if (audio.getArtist() != null)
cv.put(Media.ARTIST, audio.getArtist());
cv.put(Media.IS_RINGTONE, true);
cv.put(Media.IS_NOTIFICATION, false);
cv.put(Media.IS_ALARM, false);
cv.put(Media.IS_MUSIC, false);
Uri uri = Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
Uri newUri = getCR().insert(uri, cv); ////return null in Android 4.3
if (newUri == null)
{
Cursor c = getCR().query(uri, new String[] { Media._ID }, Media.DATA + "=?",
new String[] { ringtoneFile.getAbsolutePath() }, null);
long id = -1;
if (c != null && c.moveToFirst())
{
id = c.getLong(c.getColumnIndex(Media._ID));
newUri = Uri.parse(uri.toString() + "/" + id);
c.close();
}
}
if (newUri != null)
{
RingtoneManager.setActualDefaultRingtoneUri(getAppContext(), RingtoneManager.TYPE_RINGTONE, newUri);
}
Подробнее здесь: https://stackoverflow.com/questions/184 ... s-ringtone
Как установить музыкальные файлы, которых нет в Media Store, в качестве мелодии звонка ⇐ Android
Форум для тех, кто программирует под Android
1771806645
Anonymous
До уровня Jelly Bean 18 я могу использовать музыкальные файлы, которых нет в Медиа-магазине (например, частный .mp3-файл в папке содержит файл .nomedia, поэтому Media Scanner не сканирует эту папку и не знает об этом файле), но с Android 4.3 (проверено на Nexus 4) я не могу этого сделать, это работает только для музыкальных файлов, которые уже сканированы Media Scanner.
Настоящая причина этой проблемы в том, что я не могу вставить ContentValues с помощью MediaColumns. DATA — это абсолютный путь к файлу, не сканируемому Media Scanner, метод вставки всегда возвращает ноль.
Uri newUri = getCR().insert(uri, contentValues); // returns null in Android 4.3
Есть ли у кого-нибудь способ использовать личный файл (не сканируемый и не распознаваемый Media Scanner) в качестве мелодии звонка?
Вот как я устанавливаю мелодию звонка:
File ringtoneFile = new File(audio.getPath());
ContentValues cv = new ContentValues();
cv.put(MediaColumns.DATA, ringtoneFile.getAbsolutePath());
cv.put(MediaColumns.TITLE, audio.getTitle());
cv.put(MediaColumns.MIME_TYPE, "audio/*");
if (audio.getArtist() != null)
cv.put(Media.ARTIST, audio.getArtist());
cv.put(Media.IS_RINGTONE, true);
cv.put(Media.IS_NOTIFICATION, false);
cv.put(Media.IS_ALARM, false);
cv.put(Media.IS_MUSIC, false);
Uri uri = Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
Uri newUri = getCR().insert(uri, cv); ////return null in Android 4.3
if (newUri == null)
{
Cursor c = getCR().query(uri, new String[] { Media._ID }, Media.DATA + "=?",
new String[] { ringtoneFile.getAbsolutePath() }, null);
long id = -1;
if (c != null && c.moveToFirst())
{
id = c.getLong(c.getColumnIndex(Media._ID));
newUri = Uri.parse(uri.toString() + "/" + id);
c.close();
}
}
if (newUri != null)
{
RingtoneManager.setActualDefaultRingtoneUri(getAppContext(), RingtoneManager.TYPE_RINGTONE, newUri);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/18459808/how-to-set-music-files-which-are-not-in-media-store-as-ringtone[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия