天天看點

車載系統 降噪處理

private AudioManager.OnAudioFocusChangeListener mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
    public void onAudioFocusChange(int focusChange) {
        switch (focusChange) {
            case AudioManager.AUDIOFOCUS_GAIN:     // 之前的音量    1
                if (mAudioManager != null)
                    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                            (int) (mMaxVolum * 0.8), 0);
                if (mIsLossAutioFocus) {
                    weDriveResume();
                    mIsLossAutioFocus = false;
                }
                break;

            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:  // 降音處理  -3
                if (mAudioManager != null)
                    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                            (int) (mMaxVolum * 0.3), 0);
                break;

            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: // 失去音頻焦點  暫停播放  -2
                mIsLossAutioFocus = true;
                weDrivePause();
                break;

            case AudioManager.AUDIOFOCUS_LOSS:   // -1
                // weDrivePause();
                break;

            default:
                break;
        }
    }
};      
//   請求焦點
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

if (mAudioManager != null)      
mAudioManager.requestAudioFocus(mAudioFocusListener,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);

// 放棄焦點      
if (mAudioManager != null)
    mAudioManager.abandonAudioFocus(mAudioFocusListener);

      

轉載于:https://www.cnblogs.com/wutianlong/p/5730192.html