我正在让用户选择使用AudioManager来静音我的应用程序。我希望能够将用户取消静音应用到与用户最初相同的卷上。因此,我创建了一个变量,可以通过创建一个单独的java类从我的活动的所有访问。此变量获取原始卷:
public class userVolumeOnStart {
static AudioManager mAudioManager;
public static int userVolume = setVolume(); //Setting it equal to the return value of method setVolume
public static int setVolume() {
userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
return userVolume;
}
}
我从另一个活动中调用它来取消静音:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.userVolume, 0);
Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show();
出于某种原因,当我尝试将其取消静音到用户原始卷时,我会遇到异常:
ExceptionInInitializationError
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.userVolume, 0);
的NullPointerException
userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM);
public static int userVolume = setVolume(); //Setting it equal to the return value of method setVolume
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.userVolume, 0);
我一直试图解决这个问题好几个小时了,我已经通过互联网查看了没有运气。请帮助我将应用取消静音,使其与用户最初使用的音量相同。我将非常感谢您的帮助和反馈(积极或消极!)
谢谢,
{Rich}
答案 0 :(得分:0)
你在代码中为userVolumeOnStart()做了很多多余的事情,你不需要设置变量userVolume
所有你需要做的就是使用函数userVolumeOnStart.setVolume()
我不知道为什么你决定调用一个实际返回音量为setVolume
的函数,你应该重命名为getVolume()
,无论如何都要改变这一行
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.userVolume, 0);
到这个
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.setVolume(), 0);