Java 如何在Android中获得铃声名称?
我允许我的用户在我的应用程序中为通知选择铃声。我想存储声音的URI以及人们可读的声音标题 到目前为止,URI代码工作得很好:Java 如何在Android中获得铃声名称?,java,android,android-intent,android-notifications,ringtone,Java,Android,Android Intent,Android Notifications,Ringtone,我允许我的用户在我的应用程序中为通知选择铃声。我想存储声音的URI以及人们可读的声音标题 到目前为止,URI代码工作得很好: Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 但是当我试图获取标题,并将其设置为按钮文本时,我什么也得不到。似乎没有头衔 String title = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGT
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获取标题?谢谢这应该可以了:
Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
String title = ringtone.getTitle(this);
有关文档,请参阅,但简短的故事是:Ringtone.getTitle(Context-ctx) 我对“MediaPlayer最终版未发布”有问题。我用这个:
Cursor returnCursor = getContentResolver().query(uri, null, null, null, null);
returnCursor.moveToFirst();
String title = returnCursor.getString(returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
returnCursor.close();
有关文档,请参阅。我个人在尝试接受的答案时遇到了严重的性能问题,仅加载包含30个铃声的列表大约需要2秒钟。我对它做了一点修改,它的工作速度快了10倍左右:
uri = ringtoneMgr.getRingtoneUri(cursor.getPosition());
ContentResolver cr = getContext().getContentResolver();
String[] projection = {MediaStore.MediaColumns.TITLE};
String title;
Cursor cur = cr.query(uri, projection, null, null, null);
if (cur != null) {
if (cur.moveToFirst()) {
title = cur.getString(0);
cur.close();
谢谢医生似乎总是让我着迷。阿列克谢·库兹涅佐夫你什么意思?