Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-12434

Stoping a Paused Recording throws file not found exception

    XMLWordPrintableJSON

Details

    Description

      Start recording
      pause recording
      stop recording
      boom!

      /storage/emulated/0/tmprecording-1486509338267.3gp: open failed: ENOENT (No such file or directory)
                                                                       java.io.FileNotFoundException: /storage/emulated/0/tmprecording-1486509338267.3gp: open failed: ENOENT (No such file or directory)
                                                                           at libcore.io.IoBridge.open(IoBridge.java:452)
                                                                           at java.io.FileInputStream.<init>(FileInputStream.java:76)
                                                                           at org.apache.cordova.media.AudioPlayer.moveFile(AudioPlayer.java:213)
                                                                           at org.apache.cordova.media.AudioPlayer.stopRecording(AudioPlayer.java:271)
                                                                           at org.apache.cordova.media.AudioHandler.stopRecordingAudio(AudioHandler.java:298)
                                                                           at org.apache.cordova.media.AudioHandler.execute(AudioHandler.java:121)
                                                                           at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
                                                                           at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
                                                                           at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57)
                                                                           at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
                                                                           at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
                                                                           at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:148)
                                                                           at android.os.HandlerThread.run(HandlerThread.java:61)
                                                                        Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
                                                                           at libcore.io.Posix.open(Native Method)
                                                                           at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
                                                                           at libcore.io.IoBridge.open(IoBridge.java:438)
                                                                           at java.io.FileInputStream.<init>(FileInputStream.java:76) 
                                                                           at org.apache.cordova.media.AudioPlayer.moveFile(AudioPlayer.java:213) 
                                                                           at org.apache.cordova.media.AudioPlayer.stopRecording(AudioPlayer.java:271) 
                                                                           at org.apache.cordova.media.AudioHandler.stopRecordingAudio(AudioHandler.java:298) 
                                                                           at org.apache.cordova.media.AudioHandler.execute(AudioHandler.java:121) 
                                                                           at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98) 
                                                                           at org.apache.cordova.PluginManager.exec(PluginManager.java:132) 
                                                                           at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57) 
                                                                           at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41) 
                                                                           at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method) 
                                                                           at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.os.HandlerThread.run(HandlerThread.java:61) 
      
      

      the problem is the file is added to the tempFiles list twice, once on pause and once on stop, so it's moved twice, and the second time it doesn't exist anymore because it was moved.

      It's an easy fix, just check if the tempFiles already contains the file on stopRecording

      if (!this.tempFiles.contains(this.tempFile)) {
          this.tempFiles.add(this.tempFile);
      }
      

      Attachments

        Issue Links

          Activity

            People

              jcesarmobile jcesarmobile
              jcesarmobile jcesarmobile
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: