2012-07-23 45 views

回答

0

由于缺少一个权威性和可核查的答案,我会回答这个问题为:

没有,没有办法告诉任何声音当前是否正在通过电话的扬声器发射。

1

我认为你正在寻找这个:)

下面是一些方便的代码睡觉,直到音频播放完毕:

AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); 
    while(manager.isMusicActive()) 
    { 
     Log.d("music", "music is active"); 
     try 
     { 
      Thread.sleep(500); 
     } 
     catch (InterruptedException e) 
     { 
      Log.e("music", "interrupted waiting for music to stop"); 
     } 
     Log.d("music", "done playing music"); 
    } 

我希望这将帮助您完成您的工作。

谢谢:)

+0

非常感谢+1 [isMusicActive()](http://developer.android.com/reference/android/media/AudioManager.html#isMusicActive%28%29)指针。这肯定比我所知道的更有帮助。您是否碰巧知道'isMusicActive()'是否也会返回** true **以用于免提电话上的电话会话? – an00b 2012-07-23 11:24:11

+0

你必须自己检查一下,我没有测试这种情况下:)。你能否接受我的答案,这将是非常感谢。谢谢:) – SALMAN 2012-07-23 11:28:05

+0

那么,如果它适合我​​,我会很高兴地接受它。我目前的测试表明,即使扬声器完全无声,最后一个MediaPlayer的onCompletion在*检查之前到达560 ms *,'manager.isMusicActive()'仍然返回** true **。这怎么可能? – an00b 2012-07-23 16:44:19