Android-приложение ImageButton Soundboard

Я только начинаю с моей первой звуковой платы. В основном это то, что у меня есть на данный момент (за исключением того, что у меня 40 звуков). Кто-нибудь знает лучший способ сделать это? Мне нужно идти на встречу, но я вернусь позже сегодня, чтобы ответить. Спасибо, кто может помочь.

------------------------- дека --------------

пакет com.soundboard.app;

импортировать android.app.Activity; импортировать android.content.Intent; импортировать android.media.MediaPlayer;

импортировать android.os.Bundle; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.ImageButton;

основное расширение публичного класса Activity {

MediaPlayer sound1, sound2, sound3;


ImageButton button1, button2, button3;



@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);




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

    button1 = (ImageButton) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound1.start();
        }
    });

    squeak3 = MediaPlayer.create(this, R.raw.squeak3);

    dogsqueak = (ImageButton) findViewById(R.id.dogsqueak);
    dogsqueak.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            squeak3.start();
        }
    });





    sound2 = MediaPlayer.create(this, R.raw.sound2);

    button2 = (ImageButton) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound2.start();

        }
    });




    sound3 = MediaPlayer.create(this, R.raw.sound3);

    button3= (ImageButton) findViewById(R.id.button3);
    button3.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound3.start();

        }
    });

}

}


person Colby    schedule 04.04.2011    source источник
comment
Я переписал приложение, используя предложение Мэтью. Использование карты работает отлично! Но теперь я не знаю, как приостановить и возобновить работу MediaPlayer, если приложение уходит в фоновый режим. Кто-нибудь может помочь?   -  person Colby    schedule 05.04.2011


Ответы (1)


С сорока кнопками вам нужно сделать так, чтобы это происходило в цикле.

Хотя есть и более умные способы сделать это, вы можете начать с создания Map:

Map<Integer, Integer> map = new HashMap<Integer, Integer>>();
map.put(R.id.button1, R.raw.sound1);
map.put(R.id.button2, R.raw.sound2);
   ...

а затем повторите:

for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    final MediaPlayer sound = MediaPlayer.create(entry.getValue());
    Button button = (ImageButton) findViewById(entry.getKey());
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sound.start();
        }
    });
}

Это даст вам представление о циклическом решении. Вам также необходимо подумать о том, как вы управляете своими экземплярами MediaPlayer.

person Matthew Willis    schedule 04.04.2011
comment
Спасибо, я очень ценю вашу помощь. Сейчас пытаюсь переписать. Есть ли какие-нибудь другие трюки с картографированием, на которых может застрять такой новичок, как я? - person Colby; 05.04.2011