как включить и выключить звук программно в андроиде - PullRequest
2 голосов
/ 14 июня 2011

В моем игровом приложении JumbledWords я предоставляю опции для включения и выключения звуков.Проблема в том, что я не могу этого сделать.Я написал код для него, но он не работает.

SplashScreen.java

RadioButton rbSoundOn, rbSoundOff;
JumbledWords jw = new JumbledWords();
@Override
public void onCreate(Bundle bundle)
{
    super.onCreate(bundle);

    //set the full screen view of the activity
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash_screen);

    rbSoundOn =  (RadioButton)findViewById(R.id.optSoundOn);
    rbSoundOff =  (RadioButton)findViewById(R.id.optSoundOff);

    if(rbSoundOn.isChecked() == true)
    {
        jw.setSoundOn(true);
    }
    else
    {
        jw.setSoundOn(false);
    }}

JumbledWords.java

static boolean soundOn;
public void setSoundOn(boolean soundOn)
{
    this.soundOn = soundOn;
}

public boolean isSoundOn()
{
    return soundOn; 
}

public void checkWord()
{
    if(abcd.equalsIgnoreCase(etGuessedWord.getText().toString()))
    {
        WordLibrary.setMyInt(WordLibrary.getMyInt() + 10);
        tvScore.setText(String.valueOf(WordLibrary.getMyInt()));
        if(soundOn == true)
        {
         mp = MediaPlayer.create(this, R.raw.clap);
         mp.start();

         mp.setOnCompletionListener(new OnCompletionListener(){

            @Override
            public void onCompletion(MediaPlayer arg0) {
                // TODO Auto-generated method stub
                mp.release();
            }

         });
        }
    }
    else
    {
        if(soundOn == true)
        {
         mp = MediaPlayer.create(this, R.raw.oop);
         mp.start();

         mp.setOnCompletionListener(new OnCompletionListener(){

                @Override
                public void onCompletion(MediaPlayer arg0) {
                    // TODO Auto-generated method stub
                    mp.release();
                }

             });
        }


    }
}

Моя проблема заключается в том, что если я используюОтключить опцию, мой звук играет, что не должно произойти в этом случае.Пожалуйста, помогите мне.

Ответы [ 3 ]

3 голосов
/ 14 июня 2011

Вы на самом деле не обрабатываете изменения для своих радиокнопок.

Вам необходимо определить элемент управления RadioGroup, который обертывает ваши элементы управления RadioButton и определяет «группу» переключателей;затем вызовите setOnCheckedChangeListener() в вашей RadioGroup, чтобы определить прослушиватель, который будет вызываться при изменении состояния.Именно в этом Слушателе вам нужно проверять состояние отдельных кнопок и вызывать jw.setSoundOn();, а не делать это в вашем методе onCreate():

public void onCreate(Bundle bundle)
{
    super.onCreate(bundle);

    //set the full screen view of the activity
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash_screen);
    RadioGroup group = (RadioGroup)findViewById( R.id.optSoundGroup );
    final RadioButton rbSoundOn =  (RadioButton)findViewById(R.id.optSoundOn);
    final RadioButton rbSoundOff =  (RadioButton)findViewById(R.id.optSoundOff);
    group.setOnCheckedChangeListener( new OnCheckedChangeListener() {
        @Override
        void onCheckedChanged(RadioGroup group, int checkedId)
        {
            if(rbSoundOn.isChecked() == true)
            {
                jw.setSoundOn(true);
            }
            else
            {
                jw.setSoundOn(false);
            }
        }
    } );
}
0 голосов
/ 14 июня 2011

Проверьте код, который я написал в этом посте.Вы можете получить представление о том, как использовать громкость мультимедиа и мелодии звонка и показать пользователю, что вы меняете его.

Как получить / установить громкость мультимедиа (не громкость мелодии звонка) в Android?

0 голосов
/ 14 июня 2011

Не уверен, в чем проблема, но обнаружил некоторые проблемы в вашем коде: 1) Не создавайте объекты при их инициализации:

JumbledWords jw = new JumbledWords();

не правильно.Вы должны инициализировать переменную, а затем вызвать конструктор в onCreate действия:

JumbledWords jw;

И внутри onCreate():

jw = new JumbledWords();

2) Если soundOn объявлен как статический, каждыйМетод, использующий эту переменную, также должен быть статическим.И вы должны вызывать эти методы статически:

JumbledWords.setSoundOn(true);

Попробуйте исправить эти проблемы, и, возможно, вы решите свою проблему.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...