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:按钮单击时的随机声音效果的主要内容,如果未能解决你的问题,请参考以下文章

在android中将录制的声音调制成不同的效果?

单击按钮时的音频播放问题

Android:按钮在单击时播放 2 种声音

在android中禁用按钮单击声音

Android FrameLayout的android foreground属性可以设置单击时的前景色

当我单击listview按钮在Android上播放声音时[关闭]