2012-01-05 81 views
0

如何播放“正面”报警声音?我知道怎么打默认的...如何播放“正面”报警声音?

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()); 
    } 

回答

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的样子。

+0

请参阅编辑... – 2012-01-05 22:49:03

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()); 
}