我需要我的应用程序在电视破坏频道时获得音频焦点,并且我的应用程序启动并在进入后台时失去焦点。我试过了,但在谷歌电视上不起作用。我尝试了mAudioManager.requestAudioFocus(this,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);它在设备中工作,即音乐在应用程序启动时停止。但在没有任何参数的谷歌电视中工作。音频焦点的步骤如下:
1.In 主应用
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
requestFocus();
在恢复()
protected void onResume() { super.onResume(); requestFocus(); }
3.in onStop()
protected void onStop(){
abandonFocus();
super.onStop();
Log.e("APPLICATION", "APPLICATION onStop");
}
4.in onDestroy()
public void onDestroy(){
super.onDestroy();
//Log.e("APPLICATION", "APPLICATION onDestroy");
abandonFocus();
}
5.音频焦点的方法。
/** Requests audio focus. Returns whether request was successful or not. */
public boolean requestFocus() {
return AudioManager.AUDIOFOCUS_REQUEST_GRANTED ==
mAudioManager.requestAudioFocus(this, AudioManager.STREAM_DTMF, AudioManager.AUDIOFOCUS_GAIN);
}
/** Abandons audio focus. Returns whether request was successful or not. */
public boolean abandonFocus() {
return AudioManager.AUDIOFOCUS_REQUEST_GRANTED == mAudioManager.abandonAudioFocus(this);
}
/**
* Called by AudioManager on audio focus changes. We implement this by calling our
* MusicFocusable appropriately to relay the message.
*/
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
Log.e("AUDIOFOCUS","AUDIOFOCUS_GAIN");
break;
case AudioManager.AUDIOFOCUS_LOSS:Log.e("AUDIOFOCUS","AUDIOFOCUS_LOSS");
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:Log.e("AUDIOFOCUS","AUDIOFOCUS_LOSS_TRANSIENT");
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:Log.e("AUDIOFOCUS","AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
break;
default:
}
}
任何人都可以在这方面帮助我。 谁在谷歌电视中做了音频焦点。
谢谢,巴拉特
我在这里尝试了一下,在谷歌电视上获得/接收音频焦点。问题可能是在应用之前运行的应用未发布音频焦点。
音频焦点在Google TV上确实有效,但并非所有应用程序都尊重音频焦点。我写了一篇关于如何正确使用音频焦点(http://android-developers.blogspot.com/2013/08/respecting-audio-focus.html)的博客文章,但是对于忽略它或不使用音频焦点的应用程序,没有解决方案。