2014-09-13 4 views
1

안드로이드에서 오디오와 이미지를 동시에 재생하려고합니다 ... 하나의 이미지보기와 두 개의 버튼을 사용하여 다음으로 이동 한 후 다음 버튼으로 이동합니다. 다음 버튼을 클릭하면 그리고 완벽하게 잘 작동하지만 뒤로 버튼을 클릭하자마자 오디오 파일 만 이미지가 변경됩니다. 내가 다시 버튼 다음 이미지 변경에 있지만 다른 오디오를 클릭 한 경우 여기 this..thanks 좀 도와 file..please 것은 내 코드안드로이드에서 이미지와 오디오를 동시에 재생

public class Main extends Activity{ 

Button btn_back,btn_play,btn_next; 
ImageView img_view; 
int current_img = 0; 
int current_aud = 0; 
MediaPlayer mp; 

int[] images = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5, 
       R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9,R.drawable.img10, 
       R.drawable.img11,R.drawable.img12}; 

int[] audio = {R.raw.aud,R.raw.a,R.raw.aud,R.raw.a,R.raw.aud,R.raw.a,R.raw.aud,R.raw.a, 
       R.raw.aud,R.raw.a,R.raw.aud,R.raw.a}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    btn_back = (Button)findViewById(R.id.button1); 
    btn_play = (Button)findViewById(R.id.button2); 
    btn_next = (Button)findViewById(R.id.button3); 
    img_view = (ImageView)findViewById(R.id.imageView1); 
    img_view.setImageResource(R.drawable.ic_launcher); 
    mp =new MediaPlayer(); 

    btn_play.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
     mp.stop(); 
     } 
    }); 

    btn_next.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      current_img = current_img % images.length; 
      img_view.setImageResource(images[current_img]); 
      current_img ++; 
     try { 
      if(mp != null){ 
       if(mp.isPlaying()){ 
        mp.stop(); 
       // mp.release(); 
       } 
      } 


      current_aud = current_aud % audio.length; 

      mp.reset(); 
      mp = MediaPlayer.create(Main.this, audio[current_aud]); 
      mp.start(); 
      current_aud ++; 





     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     } 
    }); 

    btn_back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      current_img = (current_img + images.length) % images.length; 
      current_img --; 
      img_view.setImageResource(images[current_img]); 
      try { 
       if(mp != null){ 
        if(mp.isPlaying()){ 
         mp.stop(); 
         // mp.reset(); 
        } 
       } 



       current_aud = (current_aud + audio.length)% audio.length; 
       mp.reset(); 
       mp = MediaPlayer.create(Main.this, audio[current_aud]); 
       current_aud --; 
       mp.start(); 





      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      } 

    }); 
+0

조건 (if current_img> 0) current_img- = 1 else current_img = 0;로 current_img 변수 값을 확인하십시오. 해봐. 그것은 작동해야합니다 –

+0

예 제임스 .... 다시 버튼에 대한 작업 괜찮아요하지만 지금은 다음 버튼으로 동일한 문제가 발생 –

+0

답변을 잠시만 기다려주십시오 –

답변

1
public class Main extends Activity implements OnClickListener{ 

     Button btn_back,btn_play,btn_next; 
     ImageView img_view; 
     int current_img = 0; 
     int current_aud = 0; 
     MediaPlayer mp; 

     int[] images = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5, 
        R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9,R.drawable.img10, 
        R.drawable.img11,R.drawable.img12}; 

     int[] audio = {R.raw.aud,R.raw.a,R.raw.aud,R.raw.a,R.raw.aud,R.raw.a,R.raw.aud,R.raw.a, 
        R.raw.aud,R.raw.a,R.raw.aud,R.raw.a}; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btn_back = (Button)findViewById(R.id.button1); 
     btn_play = (Button)findViewById(R.id.button2); 
     btn_next = (Button)findViewById(R.id.button3); 
     img_view = (ImageView)findViewById(R.id.imageView1); 
     img_view.setImageResource(R.drawable.ic_launcher); 
     mp =new MediaPlayer(); 

     btn_play.setOnClickListener(this); 

     btn_next.setOnClickListener(this); 

     btn_back.setOnClickListener(this); 
     } 

     @Override 
     public void OnClick(View view){ 
      switch(view.getId()){ 
       case R.id.button1: 
        current_img --; 
        if(current_img == -1){ 
         current_img = images.length-1; 
        } 
        img_view.setImageResource(images[current_img]);    
        if(mp != null && mp.isPlaying()){ 
         mp.stop(); 
        } 
        current_aud--; 
        if(current_aud == -1){ 
         current_aud = audio.length-1; 
        } 
        mp.reset(); 
        mp = MediaPlayer.create(Main.this, audio[current_aud]); 
        current_aud --; 
        mp.start(); 
        break; 

       case R.id.button3: 
        current_img ++; 
        if(current_img == images.length){ 
         current_img = 0; 
        } 
        img_view.setImageResource(images[current_img]);    
        if(mp != null && mp.isPlaying()){ 
         mp.stop(); 
        } 
        current_aud++; 
        if(current_aud == audio.length){ 
         current_aud = 0; 
        } 
        mp.reset(); 
        mp = MediaPlayer.create(Main.this, audio[current_aud]); 
        current_aud --; 
        mp.start(); 
        break; 

        case R.id.button2: 
         if(mp != null && mp.isPlaying()){ 
          mp.stop(); 
         } 
         break; 
      } 
     } 

    } 
+0

친구에게 감사했지만 그에게주는 mi는 current_aud == 0에 오류가 있었습니까; 유효하지 않은 대입 연산자와 강제 종료 –

+0

코드를 편집했습니다. 죄송합니다. 메모장에서 코드를 작성했습니다. ++ ... –

+0

@ChaitanyaSantoshSheth 수정되었습니다. 나는 체크했다 ... –

0

입니다 당신은 다음

이를 변경해야
if (currentimg < (media_list.size())) { 
    currentimg+= 1; 

    } else { 
    currentimg = 0; 

    } 

다시

if (currentimg > 0) { 
currentimg -= 1; 

} else { 
currentimg = 0; 

} 

에 대한 그냥 추가합니다. 작동해야합니다

+0

아니 작동 james..when 내가 다음에 그것을 직접 보여 주면 제 2 이미지 –

+0

@ ChaitanyaSantoshSheth 지금은 무엇을 원하는지. –

+0

2의 배수로 점프하는 중 ... 다시 작동합니다. –

관련 문제