SoundPool не воспроизводится через 3 секунды после открытия моей активности

Я пытаюсь воспроизвести звук, когда пользователь нажимает кнопку. Это хорошо работает, если я нажимаю кнопку в течение первых 3-5 секунд, когда активность открыта, однако, если я подожду более 3-5 секунд, звука нет . Я также не получаю никаких ошибок относительно звука....

Любые идеи будут оценены!

ОБНОВЛЕНИЕ: это происходит только на моем HTC. Если я попробую это на Samsung Galaxy S 2, все будет работать нормально !!!!

В моем логарифме написано: «AudioHardwareQSD: воспроизведение PCM AudioHardware переходит в режим ожидания», какой-либо обходной путь для этого???

@Override
protected void onCreate(Bundle savedInstanceState)
{

    mSoundPoolMap = new HashMap<Integer, Integer>();
    mSoundPool = new SoundPool(16, AudioManager.STREAM_RING, 0);
    mAudioManager= (AudioManager) mcontext.getSystemService(Context.AUDIO_SERVICE);

    mSoundPoolMap.put(1, mSoundPool.load(mcontext, R.raw.tap, 1));}



       @Override
        public void onClick(View v)
        {   
            float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
            streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
            mSoundPool.play(mSoundPoolMap.get(1), streamVolume, streamVolume, 1, 0, 1);}

person user1163234    schedule 04.09.2012    source источник
comment
Какое значение int возвращает mSoundPool.play() в обоих случаях?   -  person iTurki    schedule 04.09.2012
comment
Я получаю значение 1 для звука в течение 3 секунд. значение 2 для одного после. Не получает значение 0 ни для...   -  person user1163234    schedule 04.09.2012


Ответы (1)


Вот как я заставил это работать не лучшим образом, но это работает...

Проверил, не принадлежит ли устройство HTC, а затем создал фиктивное уведомление, воспроизводящее звук. Также вы должны убедиться, что ваш файл MP3, а не wav или OGG...

public static void playSound(int index)
{

    String m_strManufacture = Build.MANUFACTURER;
    Log.i(TAG, "Device Name: " + m_strManufacture);
    if (m_strManufacture.equals("HTC"))
    {


        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification();
        Intent notificationIntent = new Intent(mContext, mContext.getClass());
        // set intent so it does not start a new activity
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        // PendingIntent intent = PendingIntent.getActivity(mContext, 0, notificationIntent, 0);
        // mContext.getResources().getResourceName(R.raw.ringer);
        notification.sound = Uri.parse("android.resource://com.yourpackages/raw/" + sound);
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(0, notification);

    }
    else {//Do the soundpool work....} 
person user1163234    schedule 05.09.2012