Медиаплеер отключает звук слишком рано

У меня есть два устройства, на которых я могу протестировать свою игру :американский мобильный телефон (SCH -R880 )и Kindle Fire, причем Kindle Fire намного мощнее телефона.

У меня есть несколько коротких (Менее или около 1 секунды )звуковых эффектов. Чтобы сэкономить память, я загружаю, играю и отпускаю некоторые из этих звуковых эффектов. На телефоне играют (в основном ), как и ожидалось. Однако на Kindle Fire они обрезаны. Очень короткие звуки обрываются так быстро, что я ничего не слышу. Те, что загружаются при настройке и остаются, тем не менее, играют нормально.

Кто-нибудь знает, что здесь происходит? Я как-то слишком рано выпускаю свои медиафайлы? Ниже приведен один из таких случаев. По телефону слышу "Уровень два!" но на Kindle я слышу что-то вроде "Lev tw".

mpNum = null;

try
{
    switch (level)
    {
        case 2:
            mpNum = MediaPlayer.create(contxt, R.raw.l2); break;
        case 3:
            mpNum = MediaPlayer.create(contxt, R.raw.l3); break;
        case 4:
            mpNum = MediaPlayer.create(contxt, R.raw.l4); break;
        case 5:
            mpNum = MediaPlayer.create(contxt, R.raw.l5); break;
        case 6:
            mpNum = MediaPlayer.create(contxt, R.raw.l6); break;
        case 7:
            mpNum = MediaPlayer.create(contxt, R.raw.l7); break;
        case 8:
            mpNum = MediaPlayer.create(contxt, R.raw.l8); break;
        default:
            return;
    }

    MediaPlayer vLevel = MediaPlayer.create(contxt, R.raw.level);

    vLevel.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
    {
        public void onPrepared(MediaPlayer mp)
        {
            mp.start();
        }
    });

    vLevel.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
           public void onCompletion(MediaPlayer mpl)
           {
            mpNum.start();
            mpl.release();
           }
       });

        mpNum.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
        {
            public void onCompletion(MediaPlayer mp)
            {
                mp.release();
            }
        });
    }
    catch (Exception e) {}

Пытаясь исправить это, я попробовал SoundPool, но это не сработало; Я ничего не слышу. Ниже показано, что я сделал, чтобы попытаться воспроизвести музыку с помощью SoundPool :

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
    soundPool.load(contxt, R.raw.song2, 1);
    AudioManager mgr = (AudioManager)contxt.getSystemService(Context.AUDIO_SERVICE);
    float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
    float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    float volume =  streamVolumeMax;  

    soundPool.play(1, volume, volume, 1, 5, 2);

. ОБНОВЛЕНИЕ

Я заметил, что когда звук, который должен воспроизводиться (, но не воспроизводится ), появляется эта ошибка:

AudioPolicyManager: stopOutput() oldDevice 2
AudioPolicyManager: [getDeviceForStrategy] strategy : 0,forceUse(0)
11
задан Jesse Jashinsky 9 June 2012 в 18:46
поделиться