如何播放“正面”闹钟声?

时间:2012-01-05 09:33:13

标签: android ringtone

我如何玩'#34​​;肯定"闹铃声?我知道怎么玩默认的......

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

编辑: 尝试下面但光标只返回相同的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());
    }

2 个答案:

答案 0 :(得分: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);
在其他地方你可以使用铃声首选项来保存用户选择,并且一旦你弄清楚了uri的样子,你应该可以将默认值设置为“肯定”。

答案 1 :(得分: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());
}