zoukankan      html  css  js  c++  java
  • 在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音

    private AudioManager mAudioManager;
    private AudioManager.OnAudioFocusChangeListener mFocusChangeListener;

    @Override
    protected void onPause() {
      super.onPause();
      stopPlayVoice();
    }

    @Override
    protected void onResume() {
      super.onResume();
      startPlayVoice();
    }

    public void stopPlayVoice() {
      if (mAudioManager == null) {
        mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
        mFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
          @Override
          public void onAudioFocusChange(int focusChange) {
          }
        };
      }
      for (int i = 0; i < 10; i++) {  //尝试10次请求AudioFocus,一般一两次可以请求到,一旦请求到,语音将暂停播放
        if (mAudioManager.requestAudioFocus(mFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
          break;
        }
        SystemClock.sleep(100);
      }
    }

    private void startPlayVoice() {
      if (mAudioManager != null) {
        mAudioManager.abandonAudioFocus(mFocusChangeListener);//放弃并还回拿到的AudioFocus,语音将继续播放
      }
    }

  • 相关阅读:
    C/C++中浮点数输出格式问题
    C/C++中的输出对齐设置
    C++11 中的initialize_list
    c++中的构造函数初始化列表
    C++11中的array
    STL 中的链表排序
    poj1068 Parencodings
    poj 3295 Tautology
    How To Join XLA_AE_HEADERS and RCV_TRANSACTIONS(子分类账到事务处理追溯)
    销售订单的四个主要环节和每个环节用到的常用表
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/8399406.html
Copyright © 2011-2022 走看看