2016-10-18 2 views
0

EDIT- Я нашел решение для выпуска I put mysound ++; View.OnClickListener aButtonChangeImageListener = new View.OnClickListener (Изображение и звук в Array сменить, нажав на следующую кнопку в Android

У меня есть приложение с массивом изображений и звуков. Когда пользователь нажимает следующую кнопку, фотографии меняются на следующую. Проблема заключается в том, что я не могу изменить звук на Следующее: приложение воспроизводит первый звук все время или воспроизводит все звуки из массива. Мне нужно, чтобы изменения звука были следующими после следующей щелчки мыши, чтобы отразить изменение изображения Пример: picture a1 = SOUND1, картина a2 = SOUND2

частный ImageButton MainImage, ImageLeft, ImageRight;. частный ImageButton nextButton;

private int currentImage = 0; 
int[] images = { R.drawable.a1, R.drawable.b1, R.drawable.c1, R.drawable.d1, R.drawable.e1, R.drawable.f1 }; 
private int currentImage2 = 0; 
int[] images2 = { R.drawable.a2, R.drawable.b2, R.drawable.c2, R.drawable.d2, R.drawable.e2, R.drawable.f2 }; 
private int currentImage3 = 0; 
int[] images3 = { R.drawable.a3, R.drawable.b3, R.drawable.c3, R.drawable.d3, R.drawable.e3, R.drawable.f3 }; 
private int[] sounds = { R.raw.sound1, R.raw.sound2, R.raw.sound3, R.raw.sound4, R.raw.sound5, R.raw.sound6, }; 
private int mysound = 0; 
private int[] sounds2 = { R.raw.sound1a, R.raw.sound2a, R.raw.sound3a,R.raw.sound4a, R.raw.sound5a, R.raw.sound6a, }; 
private int mysound2 = 0; 
MediaPlayer mp; 


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

    MainImage = (ImageButton) findViewById(R.id.imageButton1); 
    ImageLeft = (ImageButton) findViewById(R.id.imageButton2); 
    ImageRight = (ImageButton) findViewById(R.id.imageButton3); 
    nextButton = (ImageButton) findViewById(R.id.imageButton5); 

    ImageLeft.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      mp = MediaPlayer.create(Alphascreen.this, sounds[0]); 
      mp.start(); 
      mysound++; 

      ImageRight.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       mp = MediaPlayer.create(Alphascreen.this, sounds2[0]); 
        mp.start(); 
        mysound2++; 

       } 

      }); 

      nextButton.setOnClickListener(aButtonChangeImageListener); 

     } 

     View.OnClickListener aButtonChangeImageListener = new View.OnClickListener() { 

      public void onClick(View v) { 
       currentImage++; 
       currentImage = currentImage % images.length; 
       currentImage2++; 
       currentImage2 = currentImage2 % images.length; 
       currentImage3++; 
       currentImage3 = currentImage3 % images.length; 
       mysound++; 
       mysound = mysound % sounds.length; 
       mysound2++; 
       mysound2 = mysound2 % sounds2.length; 

       MainImage.setImageResource(images[currentImage]); 
       ImageLeft.setImageResource(images2[currentImage2]); 
       ImageRight.setImageResource(images3[currentImage3]); 

      } 
     }; 
    }); 
}} 
+0

Вы должны пройти MySound счетчик в звуковом массиве. У вас есть пропуск 0. Он будет воспроизводить только один звук для всех. –

+0

Я пытался mp = MediaPlayer.create (Alphascreen.this, sounds [mysound]); но все звуки из массива могут быть воспроизведены при нажатии кнопки, а только по необходимости. Пробовал также mp = MediaPlayer.create (Alphascreen.this, звучит [mysound% sounds.length]); но без положительных результатов – Pawel

ответ

0

Попробуйте этот код, необходимо сбросить MediaPlayer перед назначением нового трека

ImageRight.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      mp.reset(); // new line 
      mp = MediaPlayer.create(Alphascreen.this, sounds2[0]); 
       mp.start(); 
       mysound2++; 

      } 

     }); 
+0

mp.reset(); не работает – Pawel