首先设置监听:
说明:这里的代码屏蔽了系统层提示音播放暂停
java
AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
manager.registerAudioPlaybackCallback(new AudioPlaybackCallback() {
@Override
public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
super.onPlaybackConfigChanged(configs);
boolean isPlayer = false;
for (int i = 0; i < configs.size(); i++) {
int clientPid = configs.get(i).getClientPid();
int systempid = getSystemPID();
Log.d("播放pid:" + clientPid);
Log.d("系统pid:" + systempid);
if (systempid == clientPid) continue;
if (configs.get(i).isActive()) {
isPlayer = true;
break;
}
}
if (isPlayer) {
//开始本地播放
Log.d("开始本地播放");
updatePlayModeAnim(SWITCH_LOCAL_MODE);
} else {
Log.d("停止本地播放");
}
}
}, new Handler());
获取系统pid判断是否是系统层提示音播放暂停
java
private int systemPID = -1;
private int getSystemPID() {
if (systemPID >= 0) return systemPID;
int pid = -1;
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> mRunningProcess = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo amProcess : mRunningProcess) {
if (!TextUtils.isEmpty(amProcess.processName) && TextUtils.equals("system", amProcess.processName)) {
pid = amProcess.pid;
break;
}
}
return pid;
}