我们对4-5名Y / O孩子进行了测试。实际上它工作正常。但有时问题音频不播放。如果它不能播放下一个问题'如果快速单击按钮,音频不会停止,同时播放2个或更多音频。
我需要在每个问题开始时播放一个问题声音(raw.kirmizi,raw.yesil)。
当孩子点击答案时我需要停止声音(secenek1,secenek2,secenek3)
如果4/5或更多的答案是真的,我需要发出你很好的声音(raw.alkis)
如果3/5或更少的答案是真的,我需要更努力地工作(raw.tekrar)
如果孩子点击后退(secenek2),raw.alkis或raw.tekrar声音必须停止。
我们的类代码是这样的:
package tr.com.blogspot.etkinlikhavuzu.benimilkogretmenim;
import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Random;
public class AA extends Activity implements View.OnClickListener {
TextView soru, sonuc, dogrusayi, yanlissayi;
ImageView secenek1, secenek2, secenek3;
ArrayList<Soru> sorular;
Random random;
int dogruSayisi, yanlisSayisi, sayac, dogruCevap, kalanSoruSayisi;
SoundPool soundPool, soundPoolDogru, soundPoolYanlis;
int sound, dogruSound, yanlisSound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.aa);
init();
sorulariYukle();
}
public void init() {
secenek1 = (ImageView) findViewById(R.id.secenek1);
secenek1.setOnClickListener(this);
secenek2 = (ImageView) findViewById(R.id.secenek2);
secenek2.setOnClickListener(this);
secenek3 = (ImageView) findViewById(R.id.secenek3);
secenek3.setOnClickListener(this);
soru = (TextView) findViewById(R.id.soru);
sonuc = (TextView) findViewById(R.id.sonuc);
dogrusayi = (TextView) findViewById(R.id.dogrusayi);
yanlissayi = (TextView) findViewById(R.id.yanlissayi);
sorular = new ArrayList<Soru>();
random = new Random();
kalanSoruSayisi = 5;
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
soundPoolDogru = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
soundPoolYanlis = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
dogruSound = soundPoolDogru.load(this, R.raw.alkis, 1);
yanlisSound = soundPoolYanlis.load(this, R.raw.tekrar, 1);
}
public void sorulariYukle() {
sorular.add(new Soru("Hangi Elma Yeşildir?", R.raw.yesil, R.drawable.yesilelma, R.drawable.kirmizielma, R.drawable.kirmizielma, R.drawable.yesilelma));
sorular.add(new Soru("Hangi Elma Kırmızıdır?", R.raw.kirmizi, R.drawable.kirmizielma, R.drawable.yesilelma, R.drawable.yesilelma, R.drawable.kirmizielma));
sorular.add(new Soru("Hangi Elma Yeşildir?", R.raw.yesil, R.drawable.kirmizielma, R.drawable.yesilelma, R.drawable.kirmizielma, R.drawable.yesilelma));
sorular.add(new Soru("Hangi Elma Kırmızıdır?", R.raw.kirmizi, R.drawable.yesilelma, R.drawable.yesilelma, R.drawable.kirmizielma, R.drawable.kirmizielma));
sorular.add(new Soru("Hangi Elma Yeşildir?", R.raw.yesil, R.drawable.kirmizielma, R.drawable.kirmizielma, R.drawable.yesilelma, R.drawable.yesilelma));
sayac = random.nextInt(kalanSoruSayisi);
soru.setText(sorular.get(sayac).getSoru());
secenek1.setImageResource(sorular.get(sayac).getSecenek1());
secenek2.setImageResource(sorular.get(sayac).getSecenek2());
secenek3.setImageResource(sorular.get(sayac).getSecenek3());
dogruCevap = sorular.get(sayac).getDogruCevap();
sound = soundPool.load(this, sorular.get(sayac).getSoruSesi(), 1);
soundPool.play(sound, 1, 1, 0, 0, 1);
}
@Override
public void onClick(View view) {
soundPool.stop(sound);
switch (view.getId()) {
case R.id.secenek1:
soundPool.stop(sound);
if (dogruCevap == sorular.get(sayac).getSecenek1()) {
dogruSayisi++;
dogrusayi.setText(String.valueOf(dogruSayisi));
} else {
yanlisSayisi++;
yanlissayi.setText(String.valueOf(yanlisSayisi));
}
siradakiSoru();
break;
case R.id.secenek2:
soundPool.stop(sound);
if (kalanSoruSayisi == 0) {
soundPoolDogru.stop(dogruSound);
soundPoolYanlis.stop(yanlisSound);
startActivity(new Intent(this, MainActivity.class));
finish();
} else {
if (dogruCevap == sorular.get(sayac).getSecenek2()) {
dogruSayisi++;
dogrusayi.setText(String.valueOf(dogruSayisi));
} else {
yanlisSayisi++;
yanlissayi.setText(String.valueOf(yanlisSayisi));
}
siradakiSoru();
}
break;
case R.id.secenek3:
soundPool.stop(sound);
if (dogruCevap == sorular.get(sayac).getSecenek3()) {
dogruSayisi++;
dogrusayi.setText(String.valueOf(dogruSayisi));
} else {
yanlisSayisi++;
yanlissayi.setText(String.valueOf(yanlisSayisi));
}
siradakiSoru();
break;
}
}
public void siradakiSoru() {
soundPool.stop(sound);
sorular.remove(sayac);
kalanSoruSayisi--;
if (kalanSoruSayisi == 0) {
soru.setText(String.valueOf(dogruSayisi)+" Doğru "+String.valueOf(yanlisSayisi)+" Yanlışın Var!!!");
sonuc.setText("Test Bitti!!!");
if (dogruSayisi >= 4) {
soundPoolDogru.play(dogruSound, 1, 1, 0, 0, 1);
secenek1.setClickable(false);
//secenek2.setClickable(false);
secenek3.setClickable(false);
secenek1.setImageResource(R.drawable.bos);
secenek2.setImageResource(R.drawable.alkis);
secenek3.setImageResource(R.drawable.bos);
}else{
soundPoolYanlis.play(yanlisSound, 1, 1, 0, 0, 1);
secenek1.setClickable(false);
//secenek2.setClickable(false);
secenek3.setClickable(false);
secenek1.setImageResource(R.drawable.bos);
secenek2.setImageResource(R.drawable.geri);
secenek3.setImageResource(R.drawable.bos);
}
} else {
sayac = random.nextInt(kalanSoruSayisi);
soru.setText(sorular.get(sayac).getSoru());
secenek1.setImageResource(sorular.get(sayac).getSecenek1());
secenek2.setImageResource(sorular.get(sayac).getSecenek2());
secenek3.setImageResource(sorular.get(sayac).getSecenek3());
dogruCevap = sorular.get(sayac).getDogruCevap();
sound = soundPool.load(this, sorular.get(sayac).getSoruSesi(), 1);
soundPool.play(sound, 1, 1, 0, 0, 1);
}
}
}
&#13;
我们的xml文件是这样的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="tr.com.blogspot.etkinlikhavuzu.benimilkogretmenim.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="30dp">
<Button
android:id="@+id/dogru"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@drawable/dogru" />
<Button
android:id="@+id/yanlis"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/dogru"
android:layout_marginTop="10dp"
android:background="@drawable/yanlis" />
<TextView
android:id="@+id/dogrusayi"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_above="@+id/yanlis"
android:layout_toEndOf="@+id/dogru"
android:layout_toRightOf="@+id/dogru"
android:gravity="center"
android:text="0"
android:textColor="#006600"
android:textSize="30sp" />
<TextView
android:id="@+id/yanlissayi"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignBottom="@+id/yanlis"
android:layout_toEndOf="@+id/yanlis"
android:layout_toRightOf="@+id/yanlis"
android:gravity="center"
android:text="0"
android:textColor="#990000"
android:textSize="30sp" />
<ImageView
android:id="@+id/secenek1"
android:layout_width="170dp"
android:layout_height="170dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ImageView
android:id="@+id/secenek2"
android:layout_width="170dp"
android:layout_height="170dp"
android:layout_alignBottom="@+id/secenek1"
android:layout_centerHorizontal="true" />
<ImageView
android:id="@+id/secenek3"
android:layout_width="170dp"
android:layout_height="170dp"
android:layout_alignBottom="@+id/secenek2"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/soru"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/secenek2"
android:layout_marginBottom="18dp"
android:layout_toEndOf="@+id/dogrusayi"
android:layout_toRightOf="@+id/dogrusayi"
android:gravity="center"
android:text=""
android:textColor="#000000"
android:textSize="40sp"
android:textStyle="bold|italic" />
<TextView
android:text=""
android:textColor="#000000"
android:textSize="40sp"
android:textStyle="bold|italic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sonuc"
android:layout_above="@+id/soru"
android:layout_toRightOf="@+id/yanlissayi"
android:layout_toEndOf="@+id/yanlissayi" />
</RelativeLayout>
</RelativeLayout>
&#13;
非常感谢你的帮助......
答案 0 :(得分:0)
使用以下内容播放新声音之前的声音:
pool.release();