[
https://issues.apache.org/jira/browse/CB-12434?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jcesarmobile updated CB-12434:
------------------------------
Labels: easyfix (was: )
Description:
Start recording
pause recording
stop recording
boom!
{code}
/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)
{code}
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
{code}
if (!this.tempFiles.contains(this.tempFile)) {
this.tempFiles.add(this.tempFile);
}
{code}
was:
Start recording
pause recording
stop recording
boom!
> Stoping a Paused Recording throws file not found exception
> ----------------------------------------------------------
>
> Key: CB-12434
> URL: https://issues.apache.org/jira/browse/CB-12434
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin Media
> Affects Versions: 2.4.1
> Reporter: jcesarmobile
> Labels: easyfix
>
> Start recording
> pause recording
> stop recording
> boom!
> {code}
> /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)
> {code}
> 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
> {code}
> if (!this.tempFiles.contains(this.tempFile)) {
> this.tempFiles.add(this.tempFile);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]