Случайные вопросы на викторине и остановить предыдущую песню после перехода на другую песню - PullRequest
0 голосов
/ 20 апреля 2020

Я много чего перепробовал, но не могу понять. Я пытаюсь получить случайный список вопросов (в моем конкретном случае речь идет о песнях, которые пользователь будет слушать и должен будет найти ответ). Я подключил проект к базе данных Firebase, где он читает URL песни, а также возможные 4 ответа.

У меня проблемы с попыткой воспроизвести вопросы по какой-то причине в случайном порядке, хотя это не должно быть так сложно.

У меня также есть проблема, так как при изменении песни предыдущая песня по-прежнему воспроизводится вместе с Следующая песня.

public class Mixed extends AppCompatActivity {
    private TextView mScoreView;
    private static final long START_TIME_IN_MILLIS = 60000;
    private TextView mQuestion;
    private CountDownTimer mCountDownTimer;
    private long mTimeLeftInMillis = START_TIME_IN_MILLIS;
    private Button mButtonChoice1, mButtonChoice2, mButtonChoice3, mButtonChoice4;
    private int mScore;
    private String mAnswer;
    private int mQuestionNumber = 0;
    private int counter = 1;

private Firebase mQuestionRef, mChoice1Ref, mChoice2Ref, mChoice3Ref, mChoice4Ref, mAnswerRef;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mixed);


    mScoreView = (TextView) findViewById(R.id.score);
    mQuestion = (TextView) findViewById(R.id.question);

    mButtonChoice1 = (Button) findViewById(R.id.choice1);
    mButtonChoice2 = (Button) findViewById(R.id.choice2);
    mButtonChoice3 = (Button) findViewById(R.id.choice3);
    mButtonChoice4 = (Button) findViewById(R.id.choice4);


    updateQuestion();
    startTimer();


    // Button 1 trigger action
    mButtonChoice1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            counter++;

            if (mButtonChoice1.getText().equals(mAnswer)) {
                mScore = mScore + 1;
                updateScore(mScore);
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}


            } else {
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}


            }
        }

    });
    // Button 2 trigger action
    mButtonChoice2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            counter++;
            if (mButtonChoice2.getText().equals(mAnswer)) {
                mScore = mScore + 1;
                updateScore(mScore);
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                updateQuestion();}

            } else {
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}


            }
        }

    });
    // Button 3 trigger action
    mButtonChoice3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            counter++;
            if (mButtonChoice3.getText().equals(mAnswer)) {
                mScore = mScore + 1;
                updateScore(mScore);
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}

            } else {
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}

            }
        }

    });
    // Button 4 trigger action
    mButtonChoice4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            counter++;
            if (mButtonChoice4.getText().equals(mAnswer)) {
                mScore = mScore + 1;
                updateScore(mScore);
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}

            } else {
                Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
                launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());
                if (counter == 5) {

                    startActivity(launchReceivingIntent);
                }else {
                    updateQuestion();}


            }
        }

    });


}


private void startTimer() {
    mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 100) {
        @Override
        public void onTick(long millisUntilFinished) {
            mTimeLeftInMillis = millisUntilFinished;
            updateCountDownText();

        }

        @Override
        public void onFinish() {
            Intent launchReceivingIntent = new Intent(getBaseContext(), Highscore.class);
            launchReceivingIntent.putExtra(Highscore.MESSAGE, mScoreView.getText().toString());

                startActivity(launchReceivingIntent);

        }
    }.start();
}



private void updateCountDownText(){
    int minutes = (int) (mTimeLeftInMillis / 100) / 60;
    int seconds = (int) (mTimeLeftInMillis / 100) % 60;

    String timeLeftFormatted = String.format(Locale.getDefault(),"%02d:%02d", minutes, seconds);
    mQuestion.setText(timeLeftFormatted);
}



private void updateScore(int score) {

    mScoreView.setText("" + mScore);

}



private void updateQuestion() {

        mQuestionRef = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/url");
        //Read the question from database

        mQuestionRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String question = dataSnapshot.getValue(String.class);

                MediaPlayer mediaPlayer = new MediaPlayer();
                try {

                    mediaPlayer.setDataSource(question);
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mp.start();

                        }


                    });


                    mediaPlayer.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });


        //Read the choice 1 from database
        mChoice1Ref = new Firebase("https://.......firebaseio.com/" + mQuestionNumber + "/choice1");
        mChoice1Ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String choice = dataSnapshot.getValue(String.class);
                mButtonChoice1.setText(choice);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
        //Read the choice 2 from database
        mChoice2Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice2");
        mChoice2Ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String choice = dataSnapshot.getValue(String.class);
                mButtonChoice2.setText(choice);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
        //Read the choice 3 from database
        mChoice3Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice3");
        mChoice3Ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String choice = dataSnapshot.getValue(String.class);
                mButtonChoice3.setText(choice);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
        //Read the choice 4 from database
        mChoice4Ref = new Firebase("https://https://.......firebaseio.com/" + mQuestionNumber + "/choice4");
        mChoice4Ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String choice = dataSnapshot.getValue(String.class);
                mButtonChoice4.setText(choice);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

        mAnswerRef = new Firebase("https://https://.......firebaseio.com/ + mQuestionNumber + "/answer");
        mAnswerRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mAnswer = dataSnapshot.getValue(String.class);
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });


        mQuestionNumber++;

    }

}

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

Заранее спасибо!

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