Android Studio如何为资源生成ID

时间:2019-04-03 18:02:48

标签: android resources mp3 id

使用测试应用程序时,我想在用户单击按钮时播放随机的mp3音乐。

到目前为止,当用户单击按钮时,我就可以播放配乐(明确分配了ID)。

package com.example.audio;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends AppCompatActivity {

    final MediaPlayer sound = MediaPlayer.create(this, R.raw.bell_sound)

    Button playSound = (Button) this.findViewById(R.id.button)

            playSound.setOnClickListener(new View.OnClickListener(){
                @Override;
                public void onClick(View v){
                    sound.start();
        }
    })

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

但是,我以后在添加更多音轨时不知道如何在原始资源文件中生成ID以引用音轨。理想情况下,我可以在不触摸代码的情况下将更多配乐上传到原始资源文件,并且应用程序仍然可以随机选择一个配乐以在原始资源文件中播放用户单击按钮。

2 个答案:

答案 0 :(得分:0)

您必须创建一个单独的类和一个Arrayadapter类,当相应地单击特定图像或按钮时,它们将适应音频。请检查此链接以了解更多https://developer.android.com/guide/topics/ui/layout/recyclerview

这完全知道您必须执行的操作。 https://www.androidhive.info/2016/01/android-working-with-recycler-view/

答案 1 :(得分:0)

由于您想在不触摸密码的情况下随机选择,因此我有一个解决方案,可以使用伪代码

  1. 创建一个Assets文件夹//要拥有Assets文件夹是因为您只能在Assets文件夹中执行文件和文件夹。例如,在您的Assets文件夹中,创建一个名为 random_sounds 的子文件夹,并创建所有您想在其中播放的随机声音。
  2. 在您的MainActivity Java代码中,获取资产> random_sounds文件夹中的所有文件名,并将其存储在 String [] soundStrings
  3. 以及playSound Button的每个OnClick,使用随机数生成器生成从0到包含名称的soundString长度的任何数字。使用此生成的数字并将其用作索引值,以从soundStrings获取随机声音名称。

从Assets> random_sounds中获取所有文件名的代码

soundStrings = getAssets().list("random_sounds");

//必须在MainActivity的onCreate()中启动


Random rand = new Random();
int rand_number_within_soundStrings_limit = rand.nextInt(soundStrings.length);
String randomSoundToPlay = soundStrings[rand_number_within_soundStrings_limit];

Link,了解如何从资源文件夹播放音频。

///使用上面生成的 randomSoundToPlay 随机播放音频。