Android Studio как сгенерировать id для ресурсов - PullRequest
0 голосов
/ 03 апреля 2019

Работая над тестовым приложением, я хотел бы воспроизводить случайную звуковую дорожку в формате mp3, когда пользователь нажимает кнопку.

До сих пор я мог воспроизводить саундтрек (явно назначенный идентификатор), когдапользователь нажимает кнопку.

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 для ссылки на звуковые дорожки в файле raw resource , когда я добавлю больше звуковых дорожек в будущем.В идеале я могу просто загрузить больше саундтрека в файл необработанных ресурсов , не касаясь кода, и приложение все еще может случайным образом выбрать один саундтрек для воспроизведения в файле необработанных ресурсов, когда пользователь нажимаеткнопка.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Так как вы хотите выбрать случайно, не касаясь кода, у меня есть решение для этого, следуйте псевдокоду

  1. Создание папки ресурсов // Причина наличия папки ресурсов в том, что вы можете выполнять файл и папку только в папке ресурсов. Например, в вашей папке ресурсов создайте подпапку с именем random_sounds и все случайные звуки, которые вы хотите воспроизвести в ней.
  2. В вашем Java-коде MainActivity получите все имена файлов в папке assets> random_sounds и сохраните его в String [] soundStrings
  3. И при каждом нажатии кнопки PlaySound используйте генератор случайных чисел, чтобы сгенерировать любое число от 0 до длины soundStrings, содержащей имя. Используя это сгенерированное число и используя его в качестве значения индекса, чтобы получить случайное имя звука из soundStrings.

Код для получения всех имен файлов из Assets> random_sounds

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

// Должен инициироваться в onCreate () MainActivity


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

Ссылка о том, как воспроизводить аудио из папки ресурсов.

// Используйте сгенерированный выше randomSoundToPlay для случайного воспроизведения звука.

0 голосов
/ 03 апреля 2019

Вы должны создать отдельный класс и класс Arrayadapter, который будет адаптировать звук при нажатии на определенное изображение или кнопку соответственно. Проверьте эту ссылку, чтобы узнать больше https://developer.android.com/guide/topics/ui/layout/recyclerview

Это чтобы точно знать, что вы должны делать. https://www.androidhive.info/2016/01/android-working-with-recycler-view/

...