0

テレビがチャンネルを荒らしているときにアプリがオーディオフォーカスを取得し、アプリが起動され、バックグラウンドになるとフォーカスが失われる必要があります。試してみましたが、Google TV で動作しませんでした。mAudioManager.requestAudioFocus(this,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN); を試しました。アプリの起動時に音楽が停止しました。しかし、パラメータを使用してGoogle TVでは機能しませんでした。オーディオ フォーカスの手順は次のとおりです。

1.メインアプリ内

 AudioManager  mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
requestFocus();
  1. onresume() で

    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.AudioFocus のメソッド。

/** 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 でオーディオ フォーカスを行ったのは誰ですか。

ありがとう、バーラト

4

2 に答える 2

0

オーディオ フォーカスは Google TV で機能しますが、すべてのアプリケーションがオーディオ フォーカスを尊重するわけではありません。オーディオ フォーカスを適切に利用する方法についてのブログ記事を書きました ( http://android-developers.blogspot.com/2013/08/respecting-audio-focus.html ) が、それを無視するかしないアプリケーションに対する解決策はありません。オーディオ フォーカスを使用します。

于 2013-09-03T17:17:44.933 に答える
0

ここで試してみたところ、音声フォーカスの取得/受信は Google TV で機能しました。アプリの前に実行されていたアプリがオーディオ フォーカスを解放していないことが問題である可能性があります。

于 2012-06-29T20:35:36.750 に答える