2012-01-05 2 views
0

Как воспроизвести звуковой сигнал «Положительный»? Я знаю, как играть по умолчанию один ...Как воспроизвести звуковой сигнал «Положительный»?

Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)); 
if (ringtone != null) { 
    ringtone.play(); 
} 

EDIT: Пробовал ниже, но курсор просто возвращает тот же URI ???

RingtoneManager rm = new RingtoneManager(getApplicationContext()); 
    rm.setType(RingtoneManager.TYPE_ALARM); 
    Cursor c = rm.getCursor(); 
    c.moveToFirst(); 
    if (!c.isAfterLast()) { 
     do { 
      int uriIndex = c.getInt(RingtoneManager.URI_COLUMN_INDEX); 
      Uri ring = rm.getRingtoneUri(uriIndex); 
      Log.d("TC", ring.toString()); 
     } while (c.moveToNext()); 
    } 

ответ

1

Функция RingtoneManager.getCursor() обеспечивает курсор, который позволит вам перебрать все звонки и вы можете проверить название мелодии для совпадающего имени. Возврат uri зависит от того, где была сохранена мелодия звонка, но как только найден правильный, вы можете сохранить uri в качестве предпочтения. Код я (с использованием предпочтения) ничего очень фантазий не делает:

Uri alert; 
String alarmname = mPrefs.getString(getString(R.string.pref_sound_key, null); 
if (alarmname != null && !alarmname.equals("")) 
    alert = Uri.parse(alarmname); 

в другом месте Вы можете использовать предпочтение рингтона для сохранения выбора пользователя и должны быть в состоянии организовать по умолчанию, чтобы быть «Позитивным», как только вы выясните, как выглядит ури.

+0

См. Редактирование ... –

0

RingtoneManager.URI_COLUMN_INDEX - столбец TEXT.

RingtoneManager rm = new RingtoneManager(getApplicationContext()); 
rm.setType(RingtoneManager.TYPE_ALARM); 
Cursor c = rm.getCursor(); 
c.moveToFirst(); 
if (!c.isAfterLast()) { 
    do { 
     int uriString = c.getString(RingtoneManager.URI_COLUMN_INDEX); 
     Log.d("TC", uriString); 
    } while (c.moveToNext()); 
} 
Смежные вопросы