YouTubePlayerView仅在Android中显示一个视频

时间:2018-01-06 00:25:08

标签: android webview youtube

我正在做一个问题的应用,其中,当你回答不正确时,它会向你显示要学习的视频,问题是,当你跳到下一个问题并且我回答时,它会一直向我展示相同的视频,而不是向我展示每个问题的视频。我正在使用适用于Android的Youtube API。

import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;

public class preguntas extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

    public int numero, califip, califin, errores = 0, correctas = 0;
    public TextView pregunta, respuesta, califica, dc, pts;
    public RadioButton r1, r2, r3, r4;
    public Button iniciar, calificar, continuar;
    public RadioGroup radioG;
    public ImageView hb;
    MediaPlayer mp;
    public static int MILISEGUNDOS_ESPERA = 2500;
    public LinearLayout calif, preguntas, respuestas;

    public int duracion = 0;
    public int duration;
    //Youtube
    YouTubePlayerView YouTubePlayerView;
    String claveYT = "AIzaSyBiDq2Xz_aF2iuonWboIOY7BJ-iHfo-spY";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preguntas);

        pregunta = (TextView)findViewById(R.id.pregunta);
        respuesta = (TextView)findViewById(R.id.respuesta);
        califica = (TextView)findViewById(R.id.califica);
        r1 = (RadioButton)findViewById(R.id.r1);
        r2 = (RadioButton)findViewById(R.id.r2);
        r3 = (RadioButton)findViewById(R.id.r3);
        r4 = (RadioButton)findViewById(R.id.r4);
        radioG = (RadioGroup)findViewById(R.id.radioG);
        iniciar = (Button)findViewById(R.id.iniciar);
        calificar = (Button)findViewById(R.id.calificar);
        continuar = (Button)findViewById(R.id.continuar);
        hb = (ImageView)findViewById(R.id.hb);
        dc = (TextView)findViewById(R.id.dc);
        pts = (TextView)findViewById(R.id.pts);
        calif = (LinearLayout)findViewById(R.id.calif);

        preguntas = (LinearLayout)findViewById(R.id.preguntas);
        respuestas = (LinearLayout)findViewById(R.id.respuestas);

        //Youtube
        YouTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtube_view);

        dc.setVisibility(View.INVISIBLE);
        calif.setBackgroundResource(R.drawable.neutral);
        calificar.setVisibility(View.INVISIBLE);
        hb.setVisibility(View.INVISIBLE);

        if(r1.isChecked() || r2.isChecked() || r3.isChecked() || r4.isChecked()){
            calificar.setEnabled(true);
            calificar.setVisibility(View.VISIBLE);
        }else{
            calificar.setEnabled(false);
            calificar.setVisibility(View.INVISIBLE);
        }


    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.fade_in,R.anim.fade_out);
    }


    //Código para generar un número aleatorio para las preguntas
    public void NumeroAleatorio() {

        for (int i = 0; i < 9; i++) {

            numero = (int) (Math.random() *9) + 1;
        }
    }

    //Código para generar un número aleatorio para las respuestas POSITIVAS
    public void RespuestaAleatoriaP() {

        for (int i = 0; i < 4; i++) {

            califip = (int) (Math.random() *5) + 1;
        }
    }

    //Código para generar un número aleatorio para las respuestas NEGATIVAS
    public void RespuestaAleatoriaN() {

        for (int i = 0; i < 4; i++) {

            califin = (int) (Math.random() *5) + 1;
        }
    }

    //Método para destruir el audio en caso de repetir el audio, para no causar empalmes de audio
    public void destruir() {
        if (mp != null)
            mp.release();
    }

    //Método para reproducir audio en caso de que la respuesta sea correcta
    public void correcto(){
        destruir();
        mp = MediaPlayer.create(this, R.raw.sonido_rask_correcto);
        mp.start();
    }

    //Método para reproducir audio en caso de que la respuesta sea incorrecta
    public void incorrecto(){
        destruir();
        mp = MediaPlayer.create(this, R.raw.sonido_rask_incorrecto);
        mp.start();
    }

    //Método para empezar el cuestionario
    public void Iniciar(View view){

        iniciar.setVisibility(View.INVISIBLE);
        preguntas.setVisibility(View.VISIBLE);
        respuestas.setVisibility(View.GONE);
        preguntas.setVisibility(View.VISIBLE);
        calif.setBackgroundResource(R.drawable.neutral);
        pregunta.setText("");
        r1.setEnabled(true);
        r2.setEnabled(true);
        r3.setEnabled(true);
        r4.setEnabled(true);
        radioG.clearCheck();
        dc.setVisibility(View.INVISIBLE);

        YouTubePlayerView.initialize(claveYT, this);

        calificar.setEnabled(false);
        Preguntas();

        hb.setVisibility(View.VISIBLE);
    }

    public void Continuar(View view){

        iniciar.setVisibility(View.INVISIBLE);
        preguntas.setVisibility(View.VISIBLE);
        respuestas.setVisibility(View.GONE);
        calif.setBackgroundResource(R.drawable.neutral);
        pregunta.setText("");
        r1.setEnabled(true);
        r2.setEnabled(true);
        r3.setEnabled(true);
        r4.setEnabled(true);
        dc.setVisibility(View.INVISIBLE);
        radioG.clearCheck();

        YouTubePlayerView.initialize(claveYT, this);

        calificar.setEnabled(false);
        Preguntas();

        hb.setVisibility(View.VISIBLE);
    }

    //Método para elegir preguntas
    public void Preguntas(){

        //Llamamos un número aleatorio para lanzar una pregunta
        NumeroAleatorio();
        if(numero>0 && numero<9){
            if(numero == 1){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p1);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r1_d);
                r2.setVisibility(View.VISIBLE);
                r2.setText(R.string.r1_a);
                r3.setVisibility(View.VISIBLE);
                r3.setText(R.string.r1_b);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r1_c);
            }else if(numero == 2){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p2);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r2_a);
                r2.setVisibility(View.VISIBLE);
                r2.setText(R.string.r2_d);
                r3.setVisibility(View.VISIBLE);
                r3.setText(R.string.r2_b);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r2_c);
            }else if(numero == 3){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p3);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r2_d);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r3_a);
                r3.setText(R.string.r3_b);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r3_c);
            }else if(numero == 4){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p4);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r4_d);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r4_a);
                r3.setText(R.string.r4_b);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r4_c);
            }else if(numero == 5){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p5);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r5_a);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r5_d);
                r3.setText(R.string.r5_c);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r5_b);
            }else if(numero == 6){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p6);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r6_d);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r6_a);
                r3.setText(R.string.r6_c);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r6_b);
            }else if(numero == 7){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p7);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r7_c);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r7_a);
                r3.setText(R.string.r7_b);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r7_d);
            }else if(numero == 8){
                pregunta.setVisibility(View.VISIBLE);
                pregunta.setText(R.string.p8);
                r1.setVisibility(View.VISIBLE);
                r1.setText(R.string.r8_c);
                r2.setVisibility(View.VISIBLE);
                r3.setVisibility(View.VISIBLE);
                r2.setText(R.string.r8_d);
                r3.setText(R.string.r8_a);
                r4.setVisibility(View.VISIBLE);
                r4.setText(R.string.r8_b);
            }
        }else{
            //Llamamos el metodo de nuevo si el numero no esta dentro de nuestro parametro
            NumeroAleatorio();
            Preguntas();
        }
    }

    //Método para calificar
    public void calificar(View view){

        //Hacemos los radiobutton invisibles al igual que el botón calificar y la pregunta
        preguntas.setVisibility(View.GONE);
        respuestas.setVisibility(View.VISIBLE);

        //Switch para ejecutar los casos dependiendo del número de la pregunta
        switch (numero){
            case 1:
                p1();break;
            case 2:
                p2();break;
            case 3:
                p3();break;
            case 4:
                p4();break;
            case 5:
                p5();break;
            case 6:
                p6();break;
            case 7:
                p7();break;
            case 8:
                p8();break;
        }
    }

    //Método de la pregunta número 1
    public void p1(){

        //Si la respuesta es correcta
        if(numero == 1 && r2.isChecked()){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();

            correctas++;
            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            respuesta.setText(R.string.resp_n);
            if(califin == 1){
                califica.setText(R.string.calin1);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
            }else if(califin == 4){
                califica.setText(R.string.calin4);

            }
        }
        hb();
    }

    //Método de la pregunta número 2
    public void p2(){

        //Si la respuesta es correcta
        if(r3.isChecked() && numero == 2){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;
            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            if(califin == 1){
                califica.setText(R.string.calin1);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 4){
                califica.setText(R.string.calin4);
                respuesta.setText(R.string.resp_n);
            }
        }
        hb();
    }

    //Método de la pregunta número 3
    public void p3(){

        //Si la respuesta es correcta
        if(r2.isChecked() && numero == 3){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;
            dc.setVisibility(View.VISIBLE);
            dc.setText(R.string.dc3);
            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            dc.setVisibility(View.VISIBLE);
            dc.setText(R.string.dc3);
            if(califin == 1){
                califica.setText(R.string.calin1);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 4){
                califica.setText(R.string.calin4);
                respuesta.setText(R.string.resp_n);
            }
        }
        hb();
    }

    //Método de la pregunta número 4
    public void p4(){

        //Si la respuesta es correcta
        if(r4.isChecked() && numero == 4){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;
            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            if(califin == 1){
                califica.setText(R.string.calin1);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
                respuesta.setText(R.string.resp_n);
            }else if(califin == 4){
                califica.setText(R.string.calin4);
                respuesta.setText(R.string.resp_n);
            }
        }
        hb();
    }

    public void p5(){

        //Si la respuesta es correcta
        if(numero == 5 && r3.isChecked()){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;

            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            respuesta.setText(R.string.resp_n);
            if(califin == 1){
                califica.setText(R.string.calin1);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
            }else if(califin == 4){
                califica.setText(R.string.calin4);

            }
        }
        hb();
    }
    public void p6(){

        //Si la respuesta es correcta
        if(numero == 6 && r4.isChecked()){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;

            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            respuesta.setText(R.string.resp_n);
            if(califin == 1){
                califica.setText(R.string.calin1);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
            }else if(califin == 4){
                califica.setText(R.string.calin4);

            }
        }
        hb();
    }
    public void p7(){
        //Si la respuesta es correcta
        if(numero == 7 && r4.isChecked()){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;

            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            respuesta.setText(R.string.resp_n);
            if(califin == 1){
                califica.setText(R.string.calin1);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
            }else if(califin == 4){
                califica.setText(R.string.calin4);

            }
        }
        hb();
    }
    public void p8(){

        //Si la respuesta es correcta
        if(numero == 8 && r2.isChecked()){
            calif.setBackgroundResource(R.drawable.correcto);
            RespuestaAleatoriaP();
            correcto();
            correctas++;

            if(califip == 1){
                califica.setText(R.string.calip1);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 2){
                califica.setText(R.string.calip2);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 3){
                califica.setText(R.string.calip3);
                respuesta.setText(R.string.resp_p);
            }else if(califip == 4){
                califica.setText(R.string.calip4);
                respuesta.setText(R.string.resp_p);
            }

            //Si la respuesta es incorrecta
        }else{
            calif.setBackgroundResource(R.drawable.incorrecto);
            RespuestaAleatoriaN();
            incorrecto();
            errores++;
            respuesta.setText(R.string.resp_n);
            if(califin == 1){
                califica.setText(R.string.calin1);
            }else if(califin == 2){
                califica.setText(R.string.calin2);
            }else if(califin == 3){
                califica.setText(R.string.calin3);
            }else if(califin == 4){
                califica.setText(R.string.calin4);

            }
        }
        hb();
    }

    public void atras(View view){
        finish();
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

        if(!b) {

            if (numero == 1) {
                youTubePlayer.loadVideo("ysIQMAjpuYY"); //Pregunta 1
            } else if (numero == 2) {
                youTubePlayer.loadVideo("KYwdFqJU_W4"); //Pregunta 2
            } else if (numero == 3) {
                youTubePlayer.loadVideo("KYwdFqJU_W4"); //Pregunta 3
            } else if (numero == 4) {
                youTubePlayer.loadVideo("z9ebtjvkFm8"); //Pregunta 4
            } else if (numero == 5) {
                youTubePlayer.loadVideo("Yarf9BEf-Z4"); //Pregunta 5
            } else if (numero == 6) {
                youTubePlayer.loadVideo("ppht2fot6-0"); //Pregunta 6
            } else if (numero == 7) {
                youTubePlayer.loadVideo("vemPBw_KgiA"); //Pregunta 7
            } else if (numero == 8) {
                youTubePlayer.loadVideo("O-nS0889Y0I"); //Pregunta 8
            }
        }
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

        if(youTubeInitializationResult.isUserRecoverableError()){
            youTubeInitializationResult.getErrorDialog(this,1).show();
        }else{
            String error = "Error al inicializar Youtube"+youTubeInitializationResult.toString();
            Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
        }

    }

    protected void onActivityResult(int requestCode, int resultcode, Intent data){
        if(resultcode==1){
            getYouTubePlayerProvider().initialize(claveYT, this);
        }
    }

    protected YouTubePlayer.Provider getYouTubePlayerProvider(){

        return YouTubePlayerView;

    }

}

我不知道是否有任何方法可以“重新启动”youTubePlayer或类似的东西,提前谢谢。

0 个答案:

没有答案