У меня очень странная проблема, которую я не могу понять. У меня есть звуковая точка, инициализированная одним звуком (очень короткий звук «щелкнуть»). В моем обработке OnClick для моих кнопок активности я делаю простой SoundManager.PlaySound (1, 0); , который смотрит звук в хэшмапе и воспроизводит звук. Тот же самый playsound вызов используется для каждого клика. Он всегда играет звук и не ошибся. Громкость нажатия звука изменяется от нажатия кнопки на нажмите кнопку. Я могу нажать один раз, и это звучит слабым. Я ударил в ответ, а затем нажимаю снова, и это звучит громко. Я не могу найти никакой рифмы или причины для этого. Я подумал, что, может быть, это было запутано из -за нагрузки (я знаю, что это безумие, но я здесь в растерянности), поэтому я даже запустил звук в отдельной ветке. Все еще тот же результат. Я подумал, может быть, это было из -за инициализации звукового менеджера во второй раз, поэтому я добавил чек, чтобы убедиться, что этого не произойдет .... тот же результат. < /P>
i использовали класс Sound Manager, который я нашел несколько мест в Интернете. Это ниже. < /P>
public class SoundManager
{
static private SoundManager _instance;
private static SoundPool mSoundPool;
private static HashMap mSoundPoolMap;
private static AudioManager mAudioManager;
private static Context mContext;
public static boolean isInitialized = false;
private SoundManager()
{
}
/**
* Requests the instance of the Sound Manager and creates it if it does not exist.
*
* @return Returns the single instance of the SoundManager
*/
static synchronized public SoundManager getInstance()
{
if (_instance == null) _instance = new SoundManager();
return _instance;
}
/**
* Initialises the storage for the sounds
*
* @param theContext
* The Application context
*/
@SuppressLint("UseSparseArrays")
public static void initSounds(Context theContext)
{
mContext = theContext;
mSoundPool = new SoundPool(4, AudioManager.STREAM_NOTIFICATION, 0);
mSoundPoolMap = new HashMap();
mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
}
/**
* Add a new Sound to the SoundPool
*
* @param Index
* - The Sound Index for Retrieval
* @param SoundID
* - The Android ID for the Sound asset.
*/
public static void addSound(int Index, int SoundID)
{
mSoundPoolMap.put(Index, mSoundPool.load(mContext, SoundID, 1));
}
/**
* Loads the various sound assets Currently hardcoded but could easily be changed to be flexible.
*/
public static void loadSounds()
{
if (!isInitialized)
{
mSoundPoolMap.put(1, mSoundPool.load(mContext, R.raw.click, 1));
isInitialized = true;
}
}
/**
* Plays a Sound
*
* @param index
* - The Index of the Sound to be played
* @param speed
* - The Speed to play not, not currently used but included for compatibility
*/
public static void playSound(int index, float speed)
{
float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
mSoundPool.play(mSoundPoolMap.get(index), 1, 1, 1, 0, speed);
}
/**
* Stop a Sound
*
* @param index
* - index of the sound to be stopped
*/
public static void stopSound(int index)
{
mSoundPool.stop(mSoundPoolMap.get(index));
}
/**
* Deallocates the resources and Instance of SoundManager
*/
public static void cleanup()
{
mSoundPool.release();
mSoundPool = null;
mSoundPoolMap.clear();
mAudioManager.unloadSoundEffects();
_instance = null;
}
}
< /code>
Вы можете увидеть в методе playsound < /strong>, я имею жесткий кодированный громкость для левого и правого канала до максимального значения 1. Это не так Помогите. Громкость звуков все еще колеблется. Если это было как -то связано с потоком. Похоже, что это не так, как показывает то же поведение. Чтобы посмотреть, помогло ли это. Без изменений. И полный файл воспроизводится. < /P>
Может ли это быть связано с оборудованием? Единственное испытательное устройство, которое я использовал, - это старый HTC невероятный. Есть какие -либо известные проблемы с этим оборудованием? Кто -нибудь еще испытал это?
Подробнее здесь: https://stackoverflow.com/questions/122 ... nt-volumes
Soundpool Soundpool Soundpool в разных томах ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как обновить конструктор SoundPool для использования SoundPool.Builder?
Anonymous » » в форуме Android - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-