Android Studio播放音频问题

时间:2017-02-01 15:35:18

标签: android android-studio

我们对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;
&#13;
&#13;

我们的xml文件是这样的:

&#13;
&#13;
<?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;
&#13;
&#13;

非常感谢你的帮助......

1 个答案:

答案 0 :(得分:0)

使用以下内容播放新声音之前的声音:

pool.release();
相关问题