有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中循环声音

当按下按钮时,第一个声音激活。然后再次按下该按钮,它将停止,第二声激活我的代码是否正常

package com.Randomsentence;
    import java.util.Random;
    import 安卓.app.Activity;
    import 安卓.content.res.Resources;
    import 安卓.os.Bundle;
    import 安卓.os.Handler;
    import 安卓.os.Message;
    import 安卓.util.Log;
    import 安卓.view.View;
    import 安卓.widget.Button;
    import 安卓.widget.TextView;

    public class Randomsentence extends Activity {
      boolean showRandom = false;
      TextView txt;
      int time = 30;
      int random;
      public String[] myString;
      Button bt1;
      boolean check = false;

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txt=(TextView)findViewById(R.id.txt);
        bt1 = (Button)findViewById(R.id.bt1);
        Medaiplayer mp = new Medaiplayer();
        Mediaplayer mp2 = new Mediaplayer();
        bt1.setOnClickListener(new View.OnClickListener() {

          @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        showRandom = !showRandom;
                t = new Thread() {
                    public void run() {
                        try {
                            while(showRandom){
         mp = MediaPlayer.create(getApplicationContext(), R.raw.AudioFile1); 
         mp.setLooping(true);
         mp.start();
                mp2.reset();
                mp2.prepare();
                sleep(1000);
                handler.sendMessage(handler.obtainMessage());
                            }
                mp.reset();
                mp.prepare();
            mp2 = MediaPlayer.create(getApplicationContext(), R.raw.AudioFile2);      
            mp2.setLooping(true);   
            mp2.start();

                }catch(Exception ex){
                    ex.printStackTrace();
                }
                    }
                };
                t.start();

                }

        });

  }

      // our handler
      Handler handler = new Handler() {
        public void handleMessage(Message msg) {//display each item in a single line
          {

              Random rgenerator = new Random();
              Resources res = getResources();
              myString = res.getStringArray(R.array.myArray);
              String q = myString[rgenerator.nextInt(myString.length)];
              txt.setText(q);

          }
        }
      };
    }

共 (2) 个答案

  1. # 1 楼答案

    添加行:

    mp.setLooping(true);
    

    如果要停止循环,请将其设置为false

  2. # 2 楼答案

    您的代码有几个错误。打字错误,案例

    例:Medaiplayer应该是MediaPlayer

    仅此一项就足以导致错误。另外,在方法之外声明变量也是一个好主意