java - 谷歌地图指示时降低音量,完成后恢复音量
问题描述
---我正在使用 Handler,因为我的是一个广播应用程序,它总是需要播放音乐,直到它被用户杀死。我得到的结果总是1---
audioHandler=new Handler();
audioHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mAudioManager.registerAudioPlaybackCallback(new AudioManager.AudioPlaybackCallback() {
@Override
public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
super.onPlaybackConfigChanged(configs);
mAudioFocusChangeListener = new AudioFocusChangeListenerImpl();
int result = mAudioManager.requestAudioFocus(mAudioFocusChangeListener,
AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
Log.d("AudioFocus", "Audio focus received");
mFocusGranted = true;
} else if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
Log.d("AudioFocus", "Audio focus NOT received");
mFocusGranted = false;
}
/* String message = "Focus request " + (mFocusGranted ? "granted" : "failed");*/
String message = "Focus request " + (mFocusGranted ? "true" : "false");
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
Log.i(TAG, message);
}
}, audioHandler);
}
}
}, 500);
}
---- Audio Focus 的更改监听器始终运行,但我不知道应该在哪里降低和提高音量。---
private class AudioFocusChangeListenerImpl implements AudioManager.OnAudioFocusChangeListener {
@Override
public void onAudioFocusChange(int focusChange) {
mFocusChanged = true;
Log.i(TAG, "Focus changed");
switch (focusChange) {
/*case AudioManager.AUDIOFOCUS_GAIN:
Log.i(TAG, "AUDIOFOCUS_GAIN");
Toast.makeText(MainActivity.this, "Focus GAINED", Toast.LENGTH_LONG).show();
break;*/
case AudioManager.AUDIOFOCUS_LOSS:
Log.i(TAG, "AUDIOFOCUS_LOSS");
Toast.makeText(MainActivity.this, "Focus LOST", Toast.LENGTH_LONG).show();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT");
Toast.makeText(MainActivity.this, "Focus AUDIOFOCUS_GAIN_TRANSIENT", Toast.LENGTH_LONG).show();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
Toast.makeText(MainActivity.this, "Focus LOST TRANSIENT CAN DUCK", Toast.LENGTH_LONG).show();
break;
}
}
}
解决方案
推荐阅读
- amazon-cognito - 如何通过 amazon cognito 托管登录传递 url 参数
- apache - 如何使用 Apache 通过 ip 阻止
- javascript - 对本地托管文件进行子资源完整性检查?
- r - Delete incomplete cases in nested dataframe using map function from purrr
- visual-studio - 无需再次安装即可重建 vcpkg
- java - 我需要帮助了解此代码的工作原理
- javascript - 如何修复“无法读取未定义的属性”?
- svelte - Sapper Svelte 博客从服务器获取数据
- laravel - 使用 Where 子句获取 id
- python-3.x - 如何计算特定数字在python 3中垂直出现在列表中的次数?