我向mediaControllerCompat发出了一个简单的命令:
controller.adjustVolume(-1,0);
然而我的应用程序FC与......
java.lang.IllegalArgumentException: Bad direction 3
at android.os.Parcel.readException(Parcel.java:1469)
at android.os.Parcel.readException(Parcel.java:1419)
at android.media.IAudioService$Stub$Proxy.adjustStreamVolume(IAudioService.java:1097)
at android.media.AudioManager.adjustStreamVolume(AudioManager.java:952)
at android.support.v4.media.session.MediaSessionCompat$MediaSessionImplBase.adjustVolume(MediaSessionCompat.java:1376)
at android.support.v4.media.session.MediaSessionCompat$MediaSessionImplBase.access$1700(MediaSessionCompat.java:963)
at android.support.v4.media.session.MediaSessionCompat$MediaSessionImplBase$MediaSessionStub.adjustVolume(MediaSessionCompat.java:1602)
at android.support.v4.media.session.MediaControllerCompat$MediaControllerImplBase.adjustVolume(MediaControllerCompat.java:969)
at android.support.v4.media.session.MediaControllerCompat.adjustVolume(MediaControllerCompat.java:252)
at pl.qus.xenoamp.NewMainActivity.onKeyDown(NewMainActivity.java:1149)
MainActivity是上述行的来电者......什么是错误的?!
答案 0 :(得分:1)
这是Android支持库中的内部错误,自版本23.1.0起已修复。
上一个答案
这是支持库中的一个错误,它影响使用本地回放的API 21之前的设备(即没有调用setPlaybackToRemote()) - 根据{AudioManager.adjustStreamVolume()发送到source code的参数顺序{3}}不正确 - 因此,为什么方向显示为3 - STREAM_MUSIC的值。
您可以通过始终在API 21之前的设备上调用setPlaybackToRemote()来临时解决此问题,并传入 正确调用VolumeProviderCompat AudioManager.adjustStreamVolume() },但您还必须处理VolumeProviderCompat
的其他方法,例如检索最大音量(通过getStreamMaxVolume())和当前音量(通过getStreamVolume())以及设置音量(通过{ {3}})。
答案 1 :(得分:0)
我在使用API 23(不是支持库)并在M设备上运行时遇到了同样的错误。我通过监听错误并在必要时调用API 1方法来解决它。
try {
...
} catch (IllegalArgumentException e) {
audioManager.setStreamVolume(STREAM, VOLUME, FLAGS);
}
由于Compat接口调用系统音量控制的内部方法,如果您没有直接声明实例,也可以实例化AudioManager实例。