如何在Android中获取铃声名称?

时间:2013-10-04 18:01:21

标签: java android android-intent android-notifications ringtone

我允许我的用户在我的应用中为通知选择铃声。我想存储声音的URI以及人类可读的声音标题。

到目前为止,URI代码效果很好:

Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

但是当我试图获得标题并将其设置为按钮文本时,我什么也得不到。似乎没有头衔?

String title = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_TITLE);
button.setText(title);

但是我的按钮文字是空的。如果我这样做:

button.setText(uri.toString());
然后我完全看到了uri。我应该尝试从URI获取标题吗?感谢

3 个答案:

答案 0 :(得分:43)

这应该得到它:

Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
String title = ringtone.getTitle(this);

有关文档,请参阅http://developer.android.com/reference/android/media/Ringtone.html,但简短说明:Ringtone.getTitle(Context ctx);

答案 1 :(得分:2)

当我尝试接受的答案时,我个人遇到了严重的性能问题,只需加载一个30个铃声列表大约需要2秒钟。我稍微改了一下,速度提高了大约10倍:

X$Y <- ""
X <- transform(X, Y=ifelse(Z=="Alameda",20,""))
... (many more lines)

答案 2 :(得分:0)

我遇到了MediaPlayer未经发布而最终确定的问题&#39;。我用这个:

Cursor returnCursor = getContentResolver().query(uri, null, null, null, null);
returnCursor.moveToFirst();
String title = returnCursor.getString(returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
returnCursor.close();

有关文档,请参阅https://developer.android.com/training/secure-file-sharing/retrieve-info.html