首页 > 解决方案 > 谷歌地图指示时降低音量,完成后恢复音量

问题描述

---我正在使用 Handler,因为我的是一个广播应用程序,它总是需要播放音乐,直到它被用户杀死。我得到的结果总是1---

    audioHandler=new Handler();
    audioHandler.postDelayed(new Runnable() {

        @Override
        public void run() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                mAudioManager.registerAudioPlaybackCallback(new AudioManager.AudioPlaybackCallback() {
                    @Override
                    public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
                        super.onPlaybackConfigChanged(configs);
                        mAudioFocusChangeListener = new AudioFocusChangeListenerImpl();
                        int result = mAudioManager.requestAudioFocus(mAudioFocusChangeListener,
                                AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);


                        if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                            Log.d("AudioFocus", "Audio focus received");

                            mFocusGranted = true;

                        } else if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
                            Log.d("AudioFocus", "Audio focus NOT received");
                            mFocusGranted = false;

                        }




                        /* String message = "Focus request " + (mFocusGranted ? "granted" : "failed");*/
                        String message = "Focus request " + (mFocusGranted ? "true" : "false");
                        Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
                        Log.i(TAG, message);
                    }
                }, audioHandler);
            }
        }
    }, 500);

}

---- Audio Focus 的更改监听器始终运行,但我不知道应该在哪里降低和提高音量。---

private class AudioFocusChangeListenerImpl implements AudioManager.OnAudioFocusChangeListener {

    @Override
    public void onAudioFocusChange(int focusChange) {
        mFocusChanged = true;
        Log.i(TAG, "Focus changed");

        switch (focusChange) {
            /*case AudioManager.AUDIOFOCUS_GAIN:
                Log.i(TAG, "AUDIOFOCUS_GAIN");
                Toast.makeText(MainActivity.this, "Focus GAINED", Toast.LENGTH_LONG).show();

                break;*/
            case AudioManager.AUDIOFOCUS_LOSS:
                Log.i(TAG, "AUDIOFOCUS_LOSS");
                Toast.makeText(MainActivity.this, "Focus LOST", Toast.LENGTH_LONG).show();

                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT");
                Toast.makeText(MainActivity.this, "Focus  AUDIOFOCUS_GAIN_TRANSIENT", Toast.LENGTH_LONG).show();


                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
                Toast.makeText(MainActivity.this, "Focus LOST TRANSIENT CAN DUCK", Toast.LENGTH_LONG).show();

                break;
        }
    }
}

标签: javaandroid

解决方案


推荐阅读