0

现在我可以在android中播放音乐了。但是我想在 2 到 8 秒之间的随机时间内播放这个声音。我怎样才能随机播放它,例如第一次播放 2 秒,下一次播放 7 秒等等?有谁能够帮我?

4

2 回答 2

3

浏览这些链接:

随机数生成

媒体播放器

定时器

你会有一个想法。

于 2012-05-02T12:08:56.930 回答
2

android中的声音是这样播放的:

AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
int mSoundID = mSoundPool.load(this, R.raw.sound1, 1);
            float lActualVolume = (float) audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            float lMaxVolume = (float) audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float lVolume = lActualVolume / lMaxVolume;
            // Is the sound loaded already?
            if (mSoundIsLoaded) {
                mSoundPool.play(mSoundID, lVolume, lVolume, 1, 0, 1f);

我认为你已经得到了很多帮助来计算出随机数部分。您必须将声音文件放在 assets/raw 目录中。

编辑:我忘了提到 mSoundIsLoaded 参数的来源。我在加载声音时设置它。我在我的 onCreate 方法中执行此操作。加载声音时,我设置了名为 mSoundIsLoaded 的布尔字段。我这样做是为了在播放声音时防止 NullPointerExceptions 声音的加载看起来像这样:

mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
            mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                        int status) {
                    mSoundIsLoaded = true;
                }
            });
            mSoundID = mSoundPool.load(this, R.raw.sound1, 1);
于 2012-05-02T12:24:13.913 回答