解决参考:http://blog.youkuaiyun.com/chenchuntong/article/details/8813719 照着另一篇写的,但是没找到..
需要获取音频焦点;
AUDIOFOCUS_REQUEST_GRANTED 永久获取媒体焦点(播放音乐)
AUDIOFOCUS_GAIN_TRANSIENT 暂时获取焦点 适用于短暂的音频
AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK Duck我们应用跟其他应用共用焦点 我们播放的时候其他音频会降低音量
package com.thinksns.tschat.unit;
import android.content.Context;
import android.media.AudioManager;
import android.os.Build;
import com.thinksns.sociax.thinksnsbase.base.BaseApplication;
/**
* @author LeiYan
* @describe 音频播放、录音获取焦点
* @date 2017/5/31
* @contact email:907238552@qq.com
*/
public class AudioFocusManager {
private AudioManager mAudioManager;
private AudioManager.OnAudioFocusChangeListener mAudioFocusChangeListener;
/*请求音频焦点 设置监听
* return AudioManager.AUDIOFOCUS_REQUEST_GRANTED
* */
public int requestTheAudioFocus() {
if (Build.VERSION.SDK_INT < 8) {//Android 2.2开始(API8)才有音频焦点机制
return 0;
}
if (mAudioManager == null) {
mAudioManager = (AudioManager) BaseApplication.getContext().getSystemService(Context.AUDIO_SERVICE);
}
if (mAudioFocusChangeListener == null) {
mAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {//监听器
@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT:
case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:
//播放操作
break;
case AudioManager.AUDIOFOCUS_LOSS:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
//暂停操作
break;
default:
break;
}
}
};
}
//下面两个常量参数试过很多 都无效,最终反编译了其他app才搞定,汗~
int requestFocusResult = mAudioManager.requestAudioFocus(mAudioFocusChangeListener,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
return requestFocusResult;
}
// 暂停、播放完成或退到后台释放音频焦点
public void releaseTheAudioFocus() {
if (mAudioManager != null && mAudioFocusChangeListener != null) {
mAudioManager.abandonAudioFocus(mAudioFocusChangeListener);
}
}
}