在一个 Onclick 语句中播放多个 mp3 文件?

问题描述 投票:0回答:1

我正在学习 Android,我的第一个应用程序是一个简单的乐器。我现在有 7 个按钮,每个按钮都使用 MediaPlayer。问题是每个按钮都有相同的功能,我想避免在 Onclick 方法上使用 switch 语句 - 这是我在网络上找到的唯一的东西。有人告诉我用相应的 mp3 文件命名按钮,并编写一个简单的“播放”函数来匹配正确的键/按钮,但我想我做得不对。有人可以帮我吗?这是我所得到的,非常感谢您的帮助:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

   //these buttons have the same name as the mp3 key notes file

    c1= (Button) findViewById(R.id.key1); 
    c1.setOnClickListener(this);
    d1= (Button) findViewById(R.id.key2);
    d1.setOnClickListener(this);
    e1= (Button) findViewById(R.id.key3);
    e1.setOnClickListener(this);
    f1= (Button) findViewById(R.id.key4);
    f1.setOnClickListener(this);        
    g1= (Button) findViewById(R.id.key5);
    g1.setOnClickListener(this);
    a1=(Button) findViewById(R.id.key6);
    a1.setOnClickListener(this);
    b1=(Button) findViewById(R.id.key7);
    b1.setOnClickListener(this);

OnClick 方法(当然,第一个 if 示例有效,但如果我想要一个复杂的工具,我将有重复的代码。所以我希望这个“else”成为唯一的语句):

@Override
public void onClick(View v) {

    Button b = (Button)v;
    String note=b.getText().toString();

    if(v==c1){
        mp = MediaPlayer.create(this, R.raw.c1);
        mp.start();
       }
      else{
        play( note+".mp3");
      }

以及玩法的尝试:

  public void play(String note){
  note.equals("cs2");//?? 

  //the mp3 files are stored in res/raw and I also tried that specific path, but it didn't work. The keys are silent, except the c1

 }        

编辑: 现在我只有这个:

    public void play(String note){
      mp = MediaPlayer.create(this,getResources().getIdentifier(note,"raw",getPackageName()));
      mp.start();
    }

    @Override
    public void onClick(View v) {

    clickCount++;
    updateClickCount();

    Button b = (Button)v;
    String note=b.getText().toString();
    play(note);
    }

但是应用程序仍然崩溃

编辑:XML

            <?xml version="1.0" encoding="utf-8"?>

         <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.vtorferreira.sounds.MainActivity">



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.vtorferreira.sounds.MainActivity">

    <ImageView
        android:layout_width="300dp"
        android:layout_height="1200dp"
        android:id="@+id/kid"
        android:src="@drawable/kid"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:clickable="true"/>



    <ImageView
        android:layout_width="300dp"
        android:layout_height="1200dp"
        android:id="@+id/partido"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:clickable="true"/>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="10">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:orientation="horizontal"
            android:weightSum="34"
            android:gravity="center">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#9BC53D"
                android:visibility="invisible"
                android:id="@+id/key1_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="1dp"
                android:layout_marginRight="1dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black1"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key2_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black2"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key3_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key4_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black3"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#FA7921"
                android:visibility="invisible"
                android:id="@+id/key5_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black4"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#9BC53D"
                android:visibility="invisible"
                android:id="@+id/key6_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black5"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key7_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key8_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black6"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key9_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black7"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#FA7921"
                android:visibility="invisible"
                android:id="@+id/key10_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black8"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#9BC53D"
                android:visibility="invisible"
                android:id="@+id/key11_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key12_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black9"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key13_ext"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#000000"
                android:visibility="invisible"
                android:id="@+id/black10"/>
            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key14_ext"/>









        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            android:orientation="horizontal"
            android:weightSum="7"
            android:gravity="center">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key1"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key2"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key3"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key4"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#FA7921"
                android:visibility="invisible"
                android:id="@+id/key5"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#9BC53D"
                android:visibility="invisible"
                android:id="@+id/key6"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key7"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key8"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key9"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#FA7921"
                android:visibility="invisible"
                android:id="@+id/key10"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#9BC53D"
                android:visibility="invisible"
                android:id="@+id/key11"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#2660A4"
                android:visibility="invisible"
                android:id="@+id/key12"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#399E5A"
                android:visibility="invisible"
                android:id="@+id/key13"/>

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="3dp"
                android:background="#5F0F40"
                android:visibility="invisible"
                android:id="@+id/key14"/>





        </LinearLayout>

        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:orientation="horizontal"
            android:weightSum="10"
            android:gravity="center">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:id="@+id/pontos"
                android:textSize="15sp"
                android:textStyle="normal|bold" />

        </LinearLayout>

        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:orientation="horizontal"
            android:weightSum="8"
            android:gravity="center">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:orientation="horizontal"
                android:gravity="center">

                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:layout_marginLeft="2dp"
                    android:layout_marginRight="2dp"
                    android:background="#2072CA"
                    android:id="@+id/pref"
                    android:text="Preferences"

                    />
                <ToggleButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:layout_marginLeft="2dp"
                    android:layout_marginRight="2dp"
                    android:background="#2072CA"
                    android:id="@+id/solo"
                    android:textOff="Play Magic Piano!"
                    android:textOn="Close Piano"/>

                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:layout_marginLeft="2dp"
                    android:layout_marginRight="2dp"
                    android:background="#2072CA"
                    android:id="@+id/learn"
                    android:text="Learn about piano"
                    />

            </LinearLayout>

        </LinearLayout>


      </LinearLayout>

     </RelativeLayout>



   </RelativeLayout>
java android onclick
1个回答
0
投票

删除文件扩展名(+“.mp3”)并使用:

getResources().getIdentifier("FILE NAME WITHOUT EXTENSION","raw", getPackageName())

还要确保每个按钮文本都包含原始文件夹中存在的文件名(不带扩展名)。例如“c1”。

最终代码应如下所示:

@Override
public void onClick(View v) {
    Button b = (Button)v;
    String note = b.getText().toString().toLowerCase();
    play(note);
}

public void play(String note){
  try {
    mp = MediaPlayer.create(this,getResources().getIdentifier(note,"raw", getPackageName()));
    mp.start();
  } catch (Exception e) {
     Log.e("Error", "error playing file with name : " + note + "\n" + e);
  }

}  

您必须在按钮元素上设置文本。对于每个文件,您应该显示一个文件名。例如添加

android:text"c1"
:

<Button
   android:text="c1"
   android:layout_width="0dp"
   android:layout_height="match_parent"
   android:layout_weight="0.5"
   android:layout_marginLeft="3dp"
   android:layout_marginRight="3dp"
   android:background="#2660A4"
   android:visibility="visible"
   android:id="@+id/key1"/>

为了澄清一点,代码检索按钮上的文本。例如“c1”。然后,您的应用程序将尝试在原始文件夹中查找名为 c1 的文件。如果您没有在按钮上设置任何文本...那么当然,您的应用程序将找不到任何名称为 '' 的资源!希望你明白我的意思。

© www.soinside.com 2019 - 2024. All rights reserved.