在 Android 上,我在尝试确定实际播放的是哪个铃声时遇到了问题(我不是要检测默认铃声,但实际播放的铃声可能会有所不同,因为用户为特定铃声设置了特定铃声)接触)。
我正在使用 Ringtone.isPlaying() 函数,因为我从 RingtoneManager 循环(成功地)所有可用的铃声。然而,它们都没有返回 true 给 Ringtone.isPlaying()!任何人都知道我做错了什么?这是在环播放时肯定正在运行的代码示例:
RingtoneManager rm = new RingtoneManager(this); // 'this' is my activity (actually a Service in my case)
if (rm != null)
{
Cursor cursor = rm.getCursor();
cursor.moveToFirst();
for (int i = 0; ; i++)
{
Ringtone ringtone = rm.getRingtone(i); // get the ring tone at this position in the Cursor
if (ringtone == null)
break;
else if (ringtone.isPlaying() == true)
return (ringtone.getTitle(this)); // *should* return title of the playing ringtone
}
return "FAILED AGAIN!"; // always ends up here
}
Run Code Online (Sandbox Code Playgroud)
如果您查看 的来源,Ringtone您会发现该isPlaying()方法只关心Ringtone.
当您getRingtone()从RingtoneManager()它调用时会创建一个新Ringtone对象(source)。因此,Ringtone当有人调用时,这将与用于播放声音的对象不同(如果使用Ringtone对象来执行此操作),因此在您的情况下isPlaying()将始终返回false。
isPlaying()仅true当您调用play()该特定Ringtone对象时才会返回。
由于每个应用程序都创建了自己的MediaPlayer对象,因此我认为您无法监控其他应用程序当前正在播放哪些声音。
| 归档时间: |
|
| 查看次数: |
2820 次 |
| 最近记录: |