在 Android 上,我在尝试找出实际正在播放的铃声时遇到问题(我不是在尝试检测默认铃声,而是实际播放的铃声,因为由于用户为特定铃声设置了特定铃声,因此实际播放的铃声可能会有所不同)接触)。
当我循环浏览(成功)RingtoneManager 中的所有可用铃声时,我正在使用 Ringtone.isPlaying() 函数。然而,它们都没有返回 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
}
如果你看一下来源Ringtone你可以看到isPlaying()
方法只关心该特定实例Ringtone
.
你打电话时getRingtone()
from RingtoneManager()
它创造了一个新的Ringtone
目的 (source)。所以这不会是一样的Ringtone
用于在有人呼叫时播放声音的对象(如果Ringtone
对象就是用来做到这一点的)所以isPlaying()
总会回来的false
在你的情况下。
isPlaying()
只会回来true
如果你打过电话play()
就那个具体的Ringtone
object.
由于每个应用程序都会创建自己的MediaPlayer
对象 我认为您无法监视其他应用程序当前正在播放的声音。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)