【发布时间】:2015-09-01 01:35:39
【问题描述】:
我已尝试找到此问题的答案,但我的搜索不断返回不相关的结果...
所以问题是 - 我正在编写一个播放音效的游戏(还没有音乐),我将流类型设置为音乐。但是,当我将手机置于静音模式(也没有振动,如果这很重要)时,应用程序仍然会播放声音。我可以使用音量键关闭应用程序中的声音,但我所期望的(以及我未来的用户可能也会期望的)是当手机处于静音模式时应用程序不会发出声音。
在这一点上,我不确定这是否应该由操作系统自动管理,或者我是否应该对此做些什么。我肯定可以检测到静音模式,将音量设置为 0,例如 onResume,但这可能会覆盖用户通过按下音量按钮设置的设置 - 所以当他们取消手机静音时,应用程序要么必须设置以编程方式将音量设置为预定义的值,或者理想情况下,将音量设置为从 sharedPrefs 中保存的值……这听起来相对繁琐。有更好的解决方案吗?
这就是我初始化然后使用声音的方式:
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new SparseIntArray();
soundPoolMap.put(CLICK_1, soundPool.load(activity, R.raw.click1, 1));
soundPoolMap.put(CLICK_2, soundPool.load(activity, R.raw.click2, 2));
...
float volume = 1.0f;
soundPool.play(soundPoolMap.get(soundID), volume, volume, 1, 0, 1f);
【问题讨论】: