博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音
阅读量:5317 次
发布时间:2019-06-14

本文共 1093 字,大约阅读时间需要 3 分钟。

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,语音将继续播放
  }
}

转载于:https://www.cnblogs.com/yongfengnice/p/8399406.html

你可能感兴趣的文章
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
(五)归一化
查看>>
使用信号量
查看>>
《数据分析实战》--第三章 python实现
查看>>
实验八 接口与实现接口的类
查看>>
PostgreSQL 保留关键字添加方法之一,不带参数的函数
查看>>
赛前热手 (天梯赛暴力题)
查看>>
Uva(10330)
查看>>
vlan学习
查看>>