2015-11-07 6 views
0

Я предоставляю пользователю возможность отключить мое приложение с помощью AudioManager. Я хочу иметь пользователя unmute приложение к тому же тому, что пользователь был изначально на. Итак, я создал переменную, к которой можно получить доступ с всех моих действий, создав отдельный класс 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

Вы можете добавить logcat в этот вопрос, что именно происходит как null? – Bhargav

+0

btw где вы инициализируете 'mAudioManager' – Bhargav

+0

@Bhargav OH! Я забыл инициализировать его –

ответ

0

Вы делаете много избыточных вещей в вашем коде для userVolumeOnStart(), вы не должны установить переменную userVolume все, что вам нужно сделать, это использовать функцию, userVolumeOnStart.setVolume() я не знаю, почему вы решили назвать функцию, которая на самом деле возвращает громкость, как setVolume вы, вероятно, следует переименовать в getVolume() любом случае попробуйте изменить эту линию

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

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

О, это имеет гораздо больше смысла! Я изменил вызов переменной на вызов метода, но все равно получаю ошибки ... –

+0

** NullPointerException: ** userVolume = mAudioManager.getStreamVolume (AudioManager.STREAM_ALARM); –

+0

** NullPointerException: ** audioManager.setStreamVolume (AudioManager.STREAM_MUSIC, userVolumeOnStart.getVolume(), 0); –

Смежные вопросы