Android:按钮单击时的随机声音效果
Posted
技术标签:
【中文标题】Android:按钮单击时的随机声音效果【英文标题】:Android: Random Sound FX on Button Click 【发布时间】:2011-10-02 17:37:30 【问题描述】:我正在尝试使用声音池在单击按钮时播放随机声音 FX。这适用于模拟器,但不适用于我的设备。有什么线索吗?
public class enc extends Activity
private static final String TAG = "MyActivity";
private SoundPool soundPool;
private HashMap<Integer, Integer> soundsMap;
int SOUND1=1;
int SOUND2=2;
int SOUND3=3;
int SOUND4=4;
int SOUND5=5;
int SOUND6=6;
int SOUND7=7;
int SOUND8=8;
int fSpeed = 1;
Random random = new Random();
int hit = random.nextInt(6)+1;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
//SoundPool
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundsMap = new HashMap<Integer, Integer>();
soundsMap.put(SOUND1, soundPool.load(this, R.raw.hit1, 1));
soundsMap.put(SOUND2, soundPool.load(this, R.raw.hit2, 1));
soundsMap.put(SOUND3, soundPool.load(this, R.raw.hit3, 1));
soundsMap.put(SOUND4, soundPool.load(this, R.raw.hit4, 1));
soundsMap.put(SOUND5, soundPool.load(this, R.raw.hit5, 1));
soundsMap.put(SOUND6, soundPool.load(this, R.raw.hit6, 1));
soundsMap.put(SOUND7, soundPool.load(this, R.raw.spell, 1));
soundsMap.put(SOUND8, soundPool.load(this, R.raw.kill, 1));
setContentView(R.layout.enc);
public void setButtonClickListener()
Button wepb = (Button)findViewById(R.id.uwep);
wepb.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
Log.i(TAG, "----------------------------SFX: " + hit);
playSound(hit, fSpeed);
hit = random.nextInt(6)+1;
);
【问题讨论】:
你说它不能在设备上运行是什么意思? 当我在手机上安装它时,声音不会播放。如果我在不使用随机整数的情况下从池中调用声音,它就可以正常工作。我尝试使用媒体播放器时遇到了同样的问题 随机数生成是否正确?您可以发布日志消息吗? 是的,我在按钮中的标签每次都会返回一个随机数。模拟器播放音频很好。当我单击按钮时,会播放随机声音。当我在手机上尝试时,我遇到了问题。 R.raw.spell 和 R.raw.kill 在调用时可以正常播放(不包括代码),并且它们不是随机的。但是 hit1-hit6 不会播放(在手机上) 将我的 mp3 转换为 OGG 解决了问题。谢谢!如果您从未要求我检查手机上的 logcat,我将永远不会看到未准备好警告。谢谢! 【参考方案1】:我发现了问题。我使用的是 MP3 文件,显然,android 2.0+ 仅适用于 OGG 文件。将它们全部从 MP3 转换为 OGG 修复了它。一切顺利!
【讨论】:
以上是关于Android:按钮单击时的随机声音效果的主要内容,如果未能解决你的问题,请参考以下文章