MediaPlayer pregătește eșecul IOException

Întrebarea mea este că prea mulți jucători MediaPlayers provoacă pregătirea IOException: status = 0x1 pentru a vă înregistra?

Modul în care rulează programul meu este că folosesc o instanță separată a Media Player pentru fiecare videoclip pe care vreau să îl joc. La sfârșitul rundei, opresc playerul video, îl eliberez și îl dezactivez; acest lucru este ok uneori, dar în alte momente când mă mut între videoclipuri prea repede, am o excepție IO și videoclipul nu va fi redat. De asemenea, am un MediaPlayer care cântă muzică de fundal într-un serviciu.

Practic, activitatea mea video primește un apel nou de fiecare dată când un fișier finalizează redarea. Ar putea fi aceasta eroare și ar trebui să încerc să reutilizez același player media cu un alt fișier?

Mulțumesc anticipat

0

1 răspunsuri

Mi-am găsit răspunsul. Nu știu dacă este o modalitate bună de a face acest lucru, dar:

if(videoFile != null)
        {
            Log.i("INITPLAYER", videoFile);
            afd = getAssets().openFd(videoFile);

            instructionVideoPlayer = new MediaPlayer();

            instructionVideoPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());

            instructionVideoPlayer.setDisplay(holder);

            instructionVideoPlayer.prepare();

            instructionVideoPlayer.setOnCompletionListener(instructionVideoComplete);
            instructionVideoPlayer.setOnPreparedListener(this);
        }
        else
            Log.i("VideoPlayer", "noVideoFile");

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        Log.i(this.toString(), "IOEXception");
        e.printStackTrace();

//Here is the fix:
        instructionVideoPlayer.release();
        instructionVideoPlayer = null;
        initPlayer();
// reinit after prepare failed. although this can bring in an infinte loop if video file does not exits
    } catch (Exception e)
    {
        Log.i("InitPlayer", e.getClass().toString());
        e.printStackTrace();
    }
0
adăugat
Asta chiar ma ajutat. sunând doar la lansare. !
adăugat autor png, sursa
Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md