我正在做一个问题的应用,其中,当你回答不正确时,它会向你显示要学习的视频,问题是,当你跳到下一个问题并且我回答时,它会一直向我展示相同的视频,而不是向我展示每个问题的视频。我正在使用适用于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或类似的东西,提前谢谢。