2013-02-28 119 views
1

我正在写一个声卡。我喜欢它,所以当一个人按下按钮播放声音时,它会首先看到声音是否仍在播放。因此,它可以停止这个声音,并开始新的。Android:有没有办法检测SoundPool声音是否仍在播放

是thier的方式,看是否有声音ID还在玩,我jsing下面的代码来开始我的声音

// Sound code 
void StartSound(int id) 
{ 
    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
    float actualVolume = (float) audioManager 
      .getStreamVolume(AudioManager.STREAM_MUSIC); 
    float maxVolume = (float) audioManager 
      .getStreamMaxVolume(AudioManager.STREAM_MUSIC); 

    float volume=(float) ((float)cGlobals.gVol/100.00); 
    // Is the sound loaded already? 

     soundPool.play(id, volume, volume, 1, 0, 1f); 

} 

回答

0
class AudioSystem{ 
    /* 
    * Checks whether the specified stream type is active. 
    * 
    * return true if any track playing on this stream is active. 
    */ 
    public static native boolean isStreamActive(int stream, int inPastMs); 
} 

而对于流:

/** The audio stream for phone calls */ 
public static final int STREAM_VOICE_CALL = AudioSystem.STREAM_VOICE_CALL; 
/** The audio stream for system sounds */ 
public static final int STREAM_SYSTEM = AudioSystem.STREAM_SYSTEM; 
/** The audio stream for the phone ring */ 
public static final int STREAM_RING = AudioSystem.STREAM_RING; 
/** The audio stream for music playback */ 
public static final int STREAM_MUSIC = AudioSystem.STREAM_MUSIC; 
/** The audio stream for alarms */ 
public static final int STREAM_ALARM = AudioSystem.STREAM_ALARM; 
/** The audio stream for notifications */ 
public static final int STREAM_NOTIFICATION = AudioSystem.STREAM_NOTIFICATION; 
/** @hide The audio stream for phone calls when connected to bluetooth */ 
public static final int STREAM_BLUETOOTH_SCO = AudioSystem.STREAM_BLUETOOTH_SCO; 
/** @hide The audio stream for enforced system sounds in certain countries (e.g camera in Japan) */ 
public static final int STREAM_SYSTEM_ENFORCED = AudioSystem.STREAM_SYSTEM_ENFORCED; 
/** The audio stream for DTMF Tones */ 
public static final int STREAM_DTMF = AudioSystem.STREAM_DTMF; 
/** @hide The audio stream for text to speech (TTS) */ 
public static final int STREAM_TTS = AudioSystem.STREAM_TTS; 

检查无论您想要检查什么类型的音频流。例如,AudioSystem.isStreamActive(STREAM_MUSIC, 0)检查是否有音乐处于活动状态。

+1

Android类'AudioSystem'现在被['AudioManager'](http://developer.android.com/reference/android/media/AudioManager.html)类取代,看起来好像没有像' isStreamActive()'。 – Micer 2013-11-03 17:11:19

+0

不工作:(此方法不再可用。 – 2015-03-30 11:52:14

1

您可以使用isMusicActive()方法AudioManager

相关问题