为什么AudioManager.isStreamMuted不可用?

daf*_*afi 6 android android-audiomanager

我正在使用android AudioManager来静音和取消静音流,如STREAM_SYSTEM和STREAM_NOTIFICATION,静音是直接调用setStreamMute但我无法找到isStreamMuted方法.

查看内部源代码我可以看到它存在所以问题是'如何检查流是否静音?

我正在使用Android 4.0.4

Eri*_*nge 8

思考是你的朋友.这对我有用.

try {
    Method m = AudioManager.class.getMethod("isStreamMute", int.class);
    isMuted = (Boolean) m.invoke(am, AudioManager.STREAM_MUSIC);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
    System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

更新:public boolean isStreamMute (int streamType)现在可以在API 23中访问该方法,而无需使用反射.


Rob*_*ies 7

令人不快的答案是流静音基于每个进程运行.因此,您可以安全地将静音状态存储在某个静态变量中,适当地包裹,并自己跟踪静音状态.说到痛苦的经历.有时你做你必须做的事.他们为什么这样做?这是一个更难的问题......