【问题标题】:What is one method I can use to play an mp3 when a button is pressed?当按下按钮时,我可以使用什么方法来播放 mp3?
【发布时间】:2014-01-11 06:44:04
【问题描述】:

让我澄清一下。我正在为我的一个班级创建一个音板(android 应用程序),我使用此方法 30 次,每个按钮/mp3 一个

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class pageOneSounds extends Activity {
public void onCreate(Bundle savedState) {
    super.onCreate(savedState);
    setContentView(R.layout.pageonesounds);

final MediaPlayer pg1 = MediaPlayer.create(this, R.raw.sound1);

Button playSound1 = (Button) this.findViewById(R.id.sound1Button);

playSound1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {


    pg1.start();

    }
});

所以这个方法效果很好,但是我将在这个布局上有 30 个带有滚动视图的按钮。我想知道是否有一种方法可以让我只使用一种方法,而不必复制和粘贴 .setOnClickListener 30 次。让我知道我是否有意义。对 java 和 android 真的很陌生,我真的不知道我在做什么/可能不理解你。

【问题讨论】:

  • 您需要不同的按钮点击声音?

标签: java android button methods mp3


【解决方案1】:

在您的 xml 文件中为每个按钮执行此操作:

<Button android:id="@+id/sound1Button"
  android:onClick="buttonClick"
  ... />
<Button android:id="@+id/sound2Button"
  android:onClick="buttonClick"
  ... />
<Button android:id="@+id/sound3Button"
  android:onClick="buttonClick"
  ... />
etc

然后在您的 pageOneSounds 活动中,执行以下操作:

public void buttonClick(View v) {
  switch(v.getId()) {
    case R.id.sound1Button:
    // do what u want here for button 1
    break;
    case R.id.sound2Button:
    // do what u want here for button 2
    break;
    case R.id.sound3Button:
    // do what u want here for button 3
    break;
    // etc
  }
}

【讨论】:

  • 您介意扩展一下这里到底发生了什么吗?我了解您告诉每个按钮使用相同的方法(buttonClick),但是该方法在做什么?案例是什么意思?休息呢?如果有非常广泛的问题,不要觉得有义务向我解释。再次感谢。
  • @frosty 我认为你应该先看看 Java 编程。如果您没有编程背景,甚至可以使用 C。 switch、case、breaks 都是 Java(和其他语言)中的关键字。
  • 好的,谢谢。一些python和html背景,仅此而已。我最近刚接触到 android 应用程序,所以我正在制作一个音板并在途中学习。谢谢。 @harikris
  • @frosty 学习愉快。 Android 的最佳资源是 developer.android.com,而对于 Java,我使用 Head First 系列。
  • 谢谢。还有一件事;你给我的方法比我以前做的更“干净”还是更好(在 .java 中发布相同的方法 30 次)?
【解决方案2】:

你能做的是

让你的班级implements OnClickListener

@Override
public void onClick(View view) {
    switch(view.getId())
    {
    case R.id.button1:
    {
        break;
    }
    case R.id.button2:
    {
        finish();
    }
           // define your working of button 
    }

}

别忘了设置button1.setOnClickListener(this)

【讨论】:

    【解决方案3】:

    如果我正确理解您的问题,您想将您的 OnClickListener 保存到一个变量中,以便您可以简单地将其传递给您的所有 setOnClickListener() 调用?这可以通过为它创建一个变量来实现,就像为任何其他类型创建一个变量一样。

    View.OnClickListener playSoundListener = new View.OnClickListener(){
        @Override
        public void onClick(View v){
            pg1.start();
        }
    };
    

    然后将其传递给setOnClickListener(),如下所示:

    playSound1.setOnClickListener(playSoundListener);
    

    【讨论】:

      【解决方案4】:

      您可以创建一个返回 MediaPlayer 的Object 的方法。单击按钮即可开始播放声音。

      public static MediaPlayer (Context context,int Idofmediaplayer) {
          MediaPlayer pg1 = MediaPlayer.create(context, Idofmediaplayer);
          return pg1;
      }
      

      OnClickListener 方法中使用Switch caseif else 循环

      MediaPlayer m = MediaPlayer (pageOneSounds.this, R.raw.sound1);
      m.start();
      

      【讨论】:

        【解决方案5】:

        实现OnClickListener然后在onClick()中使用switch case或者写你的mp3播放方法(如果你没有其他功能键) p>

        public class pageOneSounds extends Activity implements View.OnClickListener{
            final MediaPlayer pg1;
            Button playSound1;
            @Override
            public void onCreate(Bundle savedState) {
                super.onCreate(savedState);
                setContentView(R.layout.pageonesounds);
                pg1 = MediaPlayer.create(this, R.raw.sound1);
                playSound1 = (Button) this.findViewById(R.id.sound1Button);
                playSound1.setOnClickListener(this);
           }
        
            @Override
            public void onClick(View v) {
                pg1.start();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多