2013-11-15 38 views
1

一个按钮具有onClickMethod openTheLock(),它使ImageView可见并启动音频。点击ImageView时,它消失,音频停止。音频在onCreate()中初始化。问题是当ImageView被点击时,音频不会立即停止。可能是什么原因?当调用stop()时,MediaPlayer音频不会立即停止

MediaPlayer jokerAudio; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_earth_room); 
     jokerAudio= MediaPlayer.create(EarthRoomActivity.this, R.raw.joker_laugh); 
    } 
public void openTheLock(View v){ 
    if(selectedItem == R.id.key_er_item || keyUsed == true){ 
    jokerAudio.start(); 
    ImageView joker = (ImageView)parentLayout.findViewById(R.id.joker); 
    joker.setVisibility(View.VISIBLE); 
    joker.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      jokerAudio.stop(); 
      view.setVisibility(View.INVISIBLE);   
     } 
    }); 
    } 
+0

将joker代码移动到'onCreate'并尝试和'parentLayout'是什么? – Raghunandan

回答

1

如果您使用的不是MediaPlayer又那么你可以尝试释放MediaPlayer

joker.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      jokerAudio.stop(); 
      jokerAudio.reset(); 
      jokerAudio.release(); 
      view.setVisibility(View.INVISIBLE);   
     } 
    }); 

然而,如果你再次使用MediaPlayer在后面的代码,不要忘记再次重新初始化。

+0

是的,我再次使用音频,这就是为什么我没有发布。但是,我尝试了你所说的。如果我只是重置并释放它的作品,但如果我转移jokerAudio = MediaPlayer.create(EarthRoomActivity.this,R.raw.joker_laugh);里面的openTheLock方法,以便它在每个按钮上创建时单击原始问题出现 – Nazerke

+0

尝试使其成为本地...在openTheLock方法中定义像这样MediaPlayer jokerAudio = MediaPlayer.create(EarthRoomActivity.this,R.raw.joker_laugh) ;'并删除全局jokerAudio对象。 –

+1

嘿,谢谢,它帮助!虽然我不知道为什么。你愿意解释一下吗? – Nazerke