Android Studio如何为资源生成id

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

在测试应用程序上工作时,我想在用户点击按钮时播放随机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以引用音轨。理想情况下,我可以在不触及代码的情况下将更多音轨上传到原始资源文件,当用户单击按钮时,应用程序仍然可以随机选择一个音轨以在原始资源文件中播放。

android resources mp3 id
2个回答
0
投票

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

这要确切知道你要做什么。 https://www.androidhive.info/2016/01/android-working-with-recycler-view/


0
投票

由于你想随意选择而不触摸代码,我有一个解决方案,遵循伪代码

  1. 创建资产文件夹//拥有资产文件夹的原因是您只能在assets文件夹中执行文件和文件夹。例如,在您的资源文件夹中,创建一个名为random_sounds的子文件夹以及您希望在其中播放的所有随机声音。
  2. 在您的MainActivity中,java代码获取assets> random_sounds文件夹中的所有文件名,并将其存储在String [] soundStrings中
  3. 并且每个OnClick的playSound按钮,使用随机数生成器生成从0到包含名称的soundStrings长度的任何数字。使用此生成的数字并将其用作索引值,以从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关于如何从assets文件夹播放音频。

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

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