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,语音将继续播放
}
}
在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音
原创
©著作权归作者所有:来自51CTO博客作者yongfengnice的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android Webview内嵌HTML使用Echarts画图并动态传值
Android Webview内嵌HTML使用Echarts画图并动态传值
Android Webview html echarts 动态传值 -
Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?
技术选型我们知道,Android平台一般RTMP|RTSP播放器通常不直接提供回调YUV或RGB数据的功能。如果播放端有视觉分析或类似的需求,需要播放端,能支持YUV或ARG的数据回调,一般来说,可参考的方法如下:1. 使用FFmpeg和JNIFFmpeg是一个强大的多媒体处理库,它支持解码视频并提取帧数据。你可以通过JNI在Android的Java层调用C/C++层的FFmpeg库来解码RTSP
Android rtsp播放器回调yuv rtsp播放器回调rgb rtmp播放器回调yuv rtmp播放器回调rgb