将音量设置回原来的音量?

时间:2015-11-07 19:36:26

标签: java android user-interface exception audio

我正在让用户选择使用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}

1 个答案:

答案 0 :(得分:0)

你在代码中为userVolumeOnStart()做了很多多余的事情,你不需要设置变量userVolume所有你需要做的就是使用函数userVolumeOnStart.setVolume()我不知道为什么你决定调用一个实际返回音量为setVolume的函数,你应该重命名为getVolume(),无论如何都要改变这一行

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.userVolume, 0);

到这个

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, userVolumeOnStart.setVolume(), 0);