在activity开始时播放声音

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = findViewById(R.id.textView1);
view.setOnTouchListener(this);

this.setVolumeControlStream(AudioManager.STREAM_MUSIC);

soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
    @Override
    public void onLoadComplete(SoundPool soundPool, int sampleId,
            int status) {
        loaded = true;
    }
});
soundID = soundPool.load(this, R.raw.dog_bark, 1);

 }
;
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {

    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    float actualVolume = (float) audioManager
            .getStreamVolume(AudioManager.STREAM_MUSIC);
    float maxVolume = (float) audioManager
            .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    float volume = actualVolume / maxVolume;

    if (loaded) {
        soundPool.play(soundID, volume, volume, 1, 0, 1f);
    }
}
return false;

}
}

代码实现的是在点击事件后声音才会播放。我想要在activity开始后自动播放。然后在播放一遍后,再次点击事件时再播放,谢谢

可以在 onCreate() 方法中调用 soundPool.play() 来在 Activity 启动后自动播放声音。你可以在 onLoadComplete() 中判断声音是否加载完毕,如果加载完毕,立刻调用 play() 方法播放声音。


为了确保只播放一次,你可以在 onTouch() 方法中使用一个变量来记录是否已经播放过声音。
示例代码如下:

private boolean isSoundPlayed = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View view = findViewById(R.id.textView1);
    view.setOnTouchListener(this);
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId,
                int status) {
            if (!isSoundPlayed) {
                soundPool.play(soundID, volume, volume, 1, 0, 1f);
                isSoundPlayed = true;
            }
        }
    });
    soundID = soundPool.load(this, R.raw.dog_bark, 1);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        float actualVolume = (float) audioManager
                .getStreamVolume(AudioManager.STREAM_MUSIC);
        float maxVolume = (float) audioManager
                .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        float volume = actualVolume / maxVolume;
        if (isSoundPlayed) {
            soundPool.play(soundID, volume, volume, 1, 0, 1f);
        }
    }
    return false;
}

这是一个示例代码,帮助你理解如何在 activity 启动后自动播放声音,并在第二次点击后再次播放。