我在Android编程方面遇到问题。我想告诉你这个问题。我有几个按钮。当我们点击播放器时,播放器正在运行。但是在前一个声音结束后声音不会播放。 另外,当我们按下后退按钮时,它会等待声音结束,然后执行后退按钮的功能。
我添加了onBackPressed和onPause。但是程序在第一个音频播放后失败。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class officeSounds extends AppCompatActivity implements View.OnClickListener{
ImageButton sofitukker,millieturner,jacobbanks,jameshersey;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//fullscreen - start
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//fullscreen - end
setContentView(R.layout.activity_office_sounds);
sofitukker=findViewById(R.id.sofitukker);
sofitukker.setOnClickListener(this);
millieturner=findViewById(R.id.millieturner);
millieturner.setOnClickListener(this);
jacobbanks=findViewById(R.id.jacobbanks);
jacobbanks.setOnClickListener(this);
jameshersey=findViewById(R.id.jameshersey);
jameshersey.setOnClickListener(this);
}
public void onClick(View view){
switch(view.getId()){
case R.id.sofitukker:
mp = MediaPlayer.create(this, R.raw.sofitukkersound);
break;
case R.id.millieturner:
mp = MediaPlayer.create(this, R.raw.millieturnersound);
break;
case R.id.jacobbanks:
mp = MediaPlayer.create(this, R.raw.jacobbankssound);
break;
case R.id.jameshersey:
mp = MediaPlayer.create(this, R.raw.jamesherseysound);
break;
default:
return;
}
mp.start();
while (mp.isPlaying()) {
}
mp.release();
}
}
我想在切换后退按钮和其他声音时停止上一个声音。
编辑:
当我添加switch-case语句到
while (mp.isPlaying()) { //here }
应用程序不希望声音结束。合并声音。当在按下第一声音之后按下第二声音时,第二声音在按下第一声音之前被播放。所以这两种声音在一起播放了一段时间。
答案 0 :(得分:0)
您可以尝试在每次单击屏幕时添加mp.release(),以便自动释放正在播放的媒体:
class SellerDataSerializer(serializers.ModelSerializer):
class Meta:
model = models.SellerData
fields = '__all__'
并将其添加到后按方法上(如果不需要保留mp,则最好使用mp.stop()):
public void onClick(View view){
mp.release();
switch(view.getId()){
case R.id.sofitukker:
mp = MediaPlayer.create(this, R.raw.sofitukkersound);
break;
case R.id.millieturner:
mp = MediaPlayer.create(this, R.raw.millieturnersound);
break;
case R.id.jacobbanks:
mp = MediaPlayer.create(this, R.raw.jacobbankssound);
break;
case R.id.jameshersey:
mp = MediaPlayer.create(this, R.raw.jamesherseysound);
break;
default:
return;
}