2013-10-06 2 views
2

У меня есть одно простое приложение с помощью одной кнопки. Когда я нажимаю его, он будет воспроизводить один звук (btn001). Мне бы хотелось, чтобы он играл случайные звуки из сырой папки. У меня есть 47 звуковых файлов с именем btn001 - btn047. Есть ли простой способ изменить мой код, чтобы он работал. Я знаю, что в Интернете есть одни и те же вопросы. Я попробовал все, что нашел. Я так расстраиваюсь, но у меня нет работы. Вот мой код:Одна кнопка случайных звуков

import android.media.MediaPlayer; 
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 

    public class MainActivity extends Activity { 

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

     Button pushMe = (Button) findViewById(R.id.button1); 
     final MediaPlayer cheer = MediaPlayer.create(MainActivity.this, R.raw.btn001); 

     pushMe.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       cheer.start(); 
      ; 
      };} 

     ); 
      } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    } 

ответ

1

Создать список, в котором вы добавляете все звуки, а затем воспроизводить случайный звук из этого списка. Вы можете получить случайный индекс (int)(Math.random()*47)

+0

После долгих проб и ошибок все еще не удача, но я получил настолько далеко, что каждый раз, когда приложение запускается, он воспроизводит разный звук и воспроизводит одинаковый звук на каждой кнопке. Чтобы воспроизвести разные случайные звуки, я должен перезапустить это приложение. –

+0

@ Türbel Не могли бы вы обновить свой вопрос с помощью нового кода? Это должно быть легко исправить. – Day

+0

Так выглядит, что это не так просто исправить. –

0

Одно простое приложение с одной кнопкой, которая должна воспроизводить случайный звук (btn001 - btn047) на каждом клике. Прямо сейчас он воспроизводит только один случайно выбранный звук при каждом нажатии. И чтобы воспроизвести другой звук, мне нужно закрыть и снова запустить приложение.

import java.util.Random; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

// MediaPlayer player; 
private Random rnd = new Random(); 

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

    // player = new MediaPlayer; 
    Button sound = (Button) findViewById(R.id.button1); 
    sound.setOnClickListener(new View.OnClickListener() { 
    // Random r = new Random(); 
    // int x = r.nextInt(1); 

    final int[] btns = new int[] {R.raw.btn001, R.raw.btn002, R.raw.btn003, R.raw.btn004, R.raw.btn005, R.raw.btn006, 
      R.raw.btn007, R.raw.btn008, R.raw.btn009, R.raw.btn010, R.raw.btn011, R.raw.btn012, R.raw.btn013, 
      R.raw.btn014, R.raw.btn015, R.raw.btn016, R.raw.btn017, R.raw.btn018, R.raw.btn019, R.raw.btn020, 
      R.raw.btn021, R.raw.btn022, R.raw.btn023, R.raw.btn024, R.raw.btn025, R.raw.btn026, R.raw.btn027, 
      R.raw.btn028, R.raw.btn029, R.raw.btn030, R.raw.btn031, R.raw.btn032, R.raw.btn033, R.raw.btn034, 
      R.raw.btn035, R.raw.btn036, R.raw.btn037, R.raw.btn038, R.raw.btn039, R.raw.btn040, R.raw.btn041, 
      R.raw.btn042, R.raw.btn043, R.raw.btn044, R.raw.btn045, R.raw.btn046, R.raw.btn047,  
    }; 
    // new int alfa = btns; 

    // private Random rnd = new btns; 

    int sndToPlay = rnd.nextInt(btns.length); 
    final MediaPlayer mp = MediaPlayer.create(MainActivity.this, btns[sndToPlay]); 
    // mp.seekTo(0); 
    // mp.start(); 

    // final MediaPlayer cheer = MediaPlayer.create(MainActivity.this, R.raw.btn001); 

     @Override 
     public void onClick(View v) { 
      mp.start(); 
     ; 
     };} 

    ); 
     } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
+0

Поместите две строки int 'sndToPlay = ...' и 'MediaPlayer mp = ...' в onClick-Event – Day

1

Спасибо! Теперь код работает. Я отправляю окончательный код, чтобы, если кому-то еще нужно что-то подобное. Он должен изменить только их APPNAME и имена звуковых файлов.

package com.example.APPNAME; 

import java.util.Random; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

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

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

    final int[] btns = new int[] {R.raw.btn001, R.raw.btn002, R.raw.btn003, R.raw.btn004, R.raw.btn005, R.raw.btn006, 
      R.raw.btn007, R.raw.btn008, R.raw.btn009, R.raw.btn010, R.raw.btn011, R.raw.btn012, R.raw.btn013, 
      R.raw.btn014, R.raw.btn015, R.raw.btn016, R.raw.btn017, R.raw.btn018, R.raw.btn019, R.raw.btn020, 
      R.raw.btn021, R.raw.btn022, R.raw.btn023, R.raw.btn024, R.raw.btn025, R.raw.btn026, R.raw.btn027, 
      R.raw.btn028, R.raw.btn029, R.raw.btn030, R.raw.btn031, R.raw.btn032, R.raw.btn033, R.raw.btn034, 
      R.raw.btn035, R.raw.btn036, R.raw.btn037, R.raw.btn038, R.raw.btn039, R.raw.btn040, R.raw.btn041, 
      R.raw.btn042, R.raw.btn043, R.raw.btn044, R.raw.btn045, R.raw.btn046, R.raw.btn047,  
    }; 
    private Random rnd = new Random(); 

     @Override 
     public void onClick(View v) { 
      int sndToPlay = rnd.nextInt(btns.length); 
      final MediaPlayer mp = MediaPlayer.create(MainActivity.this, btns[sndToPlay]); 
      mp.start(); 
     ; 
     };} 
    ); 
     } 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
} 
Смежные вопросы