2013-10-06 47 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事件中 – 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; 
} 
}