You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by "Simon MacDonald (JIRA)" <ji...@apache.org> on 2012/08/20 18:03:37 UTC

[jira] [Created] (CB-1264) Media.stop() puts media into an unplayable state.

Simon MacDonald created CB-1264:
-----------------------------------

             Summary: Media.stop() puts media into an unplayable state.
                 Key: CB-1264
                 URL: https://issues.apache.org/jira/browse/CB-1264
             Project: Apache Cordova
          Issue Type: Bug
          Components: Android
    Affects Versions: 2.0.0, 1.9.0, 1.8.1, 1.8.0, 1.7.0, 1.6.1, 1.6.0, 1.5.0, 1.4.0, 1.3.0, 1.2.0, 1.1.0, 1.0.0
            Reporter: Simon MacDonald
            Assignee: Simon MacDonald
             Fix For: 2.1.0


1. Record something – recording will stop after 10 seconds, or just hit the ‘stop record’ button
2. Play it back – should play back fine
3. Play it again, but hit ‘stop’ half way through
4. Now try and play again – you will get the ‘state’ errors below – it appears that using ‘media.stop’ is ‘breaking’ the internal state of the media, but letting the media stop of it’s own accord is just fine.

After calling ‘.stop()’ ,and then trying to call ‘.play()’ again, Logcat spits out a bunch of errors such as:
 
>>>>>>>>>>>>
08-20 12:20:32.381: E/MediaPlayer(13077): Attempt to perform seekTo in wrong state: mPlayer=0x190f478, mCurrentState=64
08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
08-20 12:20:32.381: E/MediaPlayer(13077): pause called in state 0
08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
08-20 12:20:32.381: E/MediaPlayer(13077): start called in state 0
08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
<<<<<<<<<<<<<<

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Resolved] (CB-1264) Media.stop() puts media into an unplayable state.

Posted by "Simon MacDonald (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CB-1264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simon MacDonald resolved CB-1264.
---------------------------------

    Resolution: Fixed

If you look at the state diagram for the Android MediaPlayer:

https://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram

you will see when you call stop() on the player it goes into the stop state which is a final state. There is no way out of it. 

I've made a change so that when you call media.stop() from the JS side that it is interpreted as a pause and rewind to the beginning of the file so that the next time you press play it will start from the beginning.


                
> Media.stop() puts media into an unplayable state.
> -------------------------------------------------
>
>                 Key: CB-1264
>                 URL: https://issues.apache.org/jira/browse/CB-1264
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 1.6.1, 1.7.0, 1.8.0, 1.8.1, 1.9.0, 2.0.0
>            Reporter: Simon MacDonald
>            Assignee: Simon MacDonald
>             Fix For: 2.1.0
>
>
> 1. Record something – recording will stop after 10 seconds, or just hit the ‘stop record’ button
> 2. Play it back – should play back fine
> 3. Play it again, but hit ‘stop’ half way through
> 4. Now try and play again – you will get the ‘state’ errors below – it appears that using ‘media.stop’ is ‘breaking’ the internal state of the media, but letting the media stop of it’s own accord is just fine.
> After calling ‘.stop()’ ,and then trying to call ‘.play()’ again, Logcat spits out a bunch of errors such as:
>  
> >>>>>>>>>>>>
> 08-20 12:20:32.381: E/MediaPlayer(13077): Attempt to perform seekTo in wrong state: mPlayer=0x190f478, mCurrentState=64
> 08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
> 08-20 12:20:32.381: E/MediaPlayer(13077): pause called in state 0
> 08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
> 08-20 12:20:32.381: E/MediaPlayer(13077): start called in state 0
> 08-20 12:20:32.381: E/MediaPlayer(13077): error (-38, 0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): Error (-38,0)
> 08-20 12:20:32.381: E/MediaPlayer(13077): mOnErrorListener is null. Failed to send MEDIA_ERROR message.
> <<<<<<<<<<<<<<

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira