Details
-
Type: New Feature
-
Status: Resolved
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: BridgeIt 1.0.5
-
Fix Version/s: BridgeIt 1.0.7
-
Component/s: BridgeIt
-
Labels:None
-
Environment:Android 4.4, extra SD card
Description
The camcorder command is not working on my Motorolla Android device. The camera and microphone commands work, but not the camcorder. Here is a suspicious stack trace:
/jpg;base64,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
05-29 13:47:29.640: E/ICEutil(3460): Error Opening file /storage/emulated/0/mobi.bridgeit/video.mp4
05-29 13:47:29.640: E/ICEutil(3460): java.io.FileNotFoundException: /storage/emulated/0/mobi.bridgeit/video.mp4: open failed: ENOENT (No such file or directory)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.IoBridge.open(IoBridge.java:409)
05-29 13:47:29.640: E/ICEutil(3460): at java.io.FileInputStream.<init>(FileInputStream.java:78)
05-29 13:47:29.640: E/ICEutil(3460): at java.io.FileInputStream.<init>(FileInputStream.java:105)
05-29 13:47:29.640: E/ICEutil(3460): at org.icemobile.client.android.util.d.submitForm(Unknown Source)
05-29 13:47:29.640: E/ICEutil(3460): at org.icemobile.client.android.sxcore.SxCore.onActivityResult(Unknown Source)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.Activity.dispatchActivityResult(Activity.java:5446)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.access$1300(ActivityThread.java:139)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
05-29 13:47:29.640: E/ICEutil(3460): at android.os.Handler.dispatchMessage(Handler.java:102)
05-29 13:47:29.640: E/ICEutil(3460): at android.os.Looper.loop(Looper.java:136)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.main(ActivityThread.java:5086)
05-29 13:47:29.640: E/ICEutil(3460): at java.lang.reflect.Method.invokeNative(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): at java.lang.reflect.Method.invoke(Method.java:515)
05-29 13:47:29.640: E/ICEutil(3460): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-29 13:47:29.640: E/ICEutil(3460): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-29 13:47:29.640: E/ICEutil(3460): at dalvik.system.NativeStart.main(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.Posix.open(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.IoBridge.open(IoBridge.java:393)
05-29 13:47:29.640: E/ICEutil(3460): ... 17 more
05-29 13:47:29.651: D/SxCore(3460): onActivityResult completed TAKE_VIDEO_CODE
Apparently the video is successfully recorded, the thumbnail is successfully created, but BridgeIt cannot locate the video file for the file submission to upload. It doesn't check that the file has or has not been located, but continues to try to upload, resulting in a server exception, which is then passed back to the client:
05-29 13:47:46.160: I/chromium(2108): <head><title>504+Gateway+Time-out</title></head>
05-29 13:47:46.160: I/chromium(2108): <body+bgcolor="white">
05-29 13:47:46.160: I/chromium(2108): <center><h1>504+Gateway+Time-out</h1></center>
05-29 13:47:46.160: I/chromium(2108): <hr><center>nginx/1.4.6+(Ubuntu)</center>
05-29 13:47:46.160: I/chromium(2108): </body>
05-29 13:47:46.160: I/chromium(2108): </html>
05-29 13:47:46.160: I/chromium(2108): ", source: http://192.168.0.101:4000/camcorder.html (120)
05-29 13:47:46.160: I/chromium(2108): [INFO:CONSOLE(651)] "BridgeIt Device function callback 'function onAfterVideoCapture(event) {
05-29 13:47:46.160: I/chromium(2108): console.log('handleVideo preview: ' + event.preview);
05-29 13:47:46.160: I/chromium(2108): if (event.preview) {
05-29 13:47:46.160: I/chromium(2108): document.getElementById("videoThumbnail").setAttribute("src", event.preview);
05-29 13:47:46.160: I/chromium(2108): document.getElementById("currentVideoDesc").innerHTML = "Last video taken at " + new Date();
05-29 13:47:46.160: I/chromium(2108): }
05-29 13:47:46.160: I/chromium(2108): console.log('handleVideo response: ' + event.response);
05-29 13:47:46.160: I/chromium(2108): if (event.response) {
05-29 13:47:46.160: I/chromium(2108): var cleanResponse = event.response.replace(/\+/g,'');
05-29 13:47:46.160: I/chromium(2108): var jsonResp = JSON.parse(cleanResponse);
05-29 13:47:46.160: I/chromium(2108): var row = document.createElement('div');
05-29 13:47:46.160: I/chromium(2108): row.setAttribute('class','row');
05-29 13:47:46.160: I/chromium(2108): var elem = document.getElementById('videos');
05-29 13:47:46.160: I/chromium(2108): elem.insertBefore(row,elem.firstChild);
05-29 13:47:46.160: I/chromium(2108): row.innerHTML = "<a class='btn ui-btn ui-shadow ui-btn-corner-all ui-btn-up-c' onclick=\"loadVideo(this,'" +
05-29 13:47:46.160: I/chromium(2108): (jsonResp.uri || jsonResp.location ) + "');\">Load Video</a>";
05-29 13:47:46.160: I/chromium(2108): }
05-29 13:47:46.160: I/chromium(2108): }' failed, make sure that the callback function is in global scope.", source: http://192.168.0.101:4000/bridgeit.js (651)
05-29 13:47:46.170: I/chromium(2108): [INFO:CONSOLE(652)] "SyntaxError: Unexpected token <
05-29 13:47:46.170: I/chromium(2108): at Object.parse (native)
05-29 13:47:46.170: I/chromium(2108): at onAfterVideoCapture (http://192.168.0.101:4000/camcorder.html:123:33)
05-29 13:47:46.170: I/chromium(2108): at http://192.168.0.101:4000/bridgeit.js:648:7", source: http://192.168.0.101:4000/bridgeit.js (652)
05-29 13:47:46.193: I/SFPerfTracer(262): triggers: (rate: 1:64) (0 sw vsyncs) (0 skipped) (36:1867135 vsyncs) (38:2649953)
05-29 13:47:46.211: I/ActivityManager(994): START u0 {act=android.intent.action.MAIN flg=0x10000000 pkg=com.android.chrome
I'm not seeing any issue with the camcorder on other Android devices, so far, so my hunch is that this might be due to this device having a removable SD Card where and the way we locate the video file (differently than we locate the photos or audio recordings) in VideoHandler.java.
/jpg;base64,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
05-29 13:47:29.640: E/ICEutil(3460): Error Opening file /storage/emulated/0/mobi.bridgeit/video.mp4
05-29 13:47:29.640: E/ICEutil(3460): java.io.FileNotFoundException: /storage/emulated/0/mobi.bridgeit/video.mp4: open failed: ENOENT (No such file or directory)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.IoBridge.open(IoBridge.java:409)
05-29 13:47:29.640: E/ICEutil(3460): at java.io.FileInputStream.<init>(FileInputStream.java:78)
05-29 13:47:29.640: E/ICEutil(3460): at java.io.FileInputStream.<init>(FileInputStream.java:105)
05-29 13:47:29.640: E/ICEutil(3460): at org.icemobile.client.android.util.d.submitForm(Unknown Source)
05-29 13:47:29.640: E/ICEutil(3460): at org.icemobile.client.android.sxcore.SxCore.onActivityResult(Unknown Source)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.Activity.dispatchActivityResult(Activity.java:5446)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.access$1300(ActivityThread.java:139)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
05-29 13:47:29.640: E/ICEutil(3460): at android.os.Handler.dispatchMessage(Handler.java:102)
05-29 13:47:29.640: E/ICEutil(3460): at android.os.Looper.loop(Looper.java:136)
05-29 13:47:29.640: E/ICEutil(3460): at android.app.ActivityThread.main(ActivityThread.java:5086)
05-29 13:47:29.640: E/ICEutil(3460): at java.lang.reflect.Method.invokeNative(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): at java.lang.reflect.Method.invoke(Method.java:515)
05-29 13:47:29.640: E/ICEutil(3460): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-29 13:47:29.640: E/ICEutil(3460): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-29 13:47:29.640: E/ICEutil(3460): at dalvik.system.NativeStart.main(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.Posix.open(Native Method)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
05-29 13:47:29.640: E/ICEutil(3460): at libcore.io.IoBridge.open(IoBridge.java:393)
05-29 13:47:29.640: E/ICEutil(3460): ... 17 more
05-29 13:47:29.651: D/SxCore(3460): onActivityResult completed TAKE_VIDEO_CODE
Apparently the video is successfully recorded, the thumbnail is successfully created, but BridgeIt cannot locate the video file for the file submission to upload. It doesn't check that the file has or has not been located, but continues to try to upload, resulting in a server exception, which is then passed back to the client:
05-29 13:47:46.160: I/chromium(2108): <head><title>504+Gateway+Time-out</title></head>
05-29 13:47:46.160: I/chromium(2108): <body+bgcolor="white">
05-29 13:47:46.160: I/chromium(2108): <center><h1>504+Gateway+Time-out</h1></center>
05-29 13:47:46.160: I/chromium(2108): <hr><center>nginx/1.4.6+(Ubuntu)</center>
05-29 13:47:46.160: I/chromium(2108): </body>
05-29 13:47:46.160: I/chromium(2108): </html>
05-29 13:47:46.160: I/chromium(2108): ", source: http://192.168.0.101:4000/camcorder.html (120)
05-29 13:47:46.160: I/chromium(2108): [INFO:CONSOLE(651)] "BridgeIt Device function callback 'function onAfterVideoCapture(event) {
05-29 13:47:46.160: I/chromium(2108): console.log('handleVideo preview: ' + event.preview);
05-29 13:47:46.160: I/chromium(2108): if (event.preview) {
05-29 13:47:46.160: I/chromium(2108): document.getElementById("videoThumbnail").setAttribute("src", event.preview);
05-29 13:47:46.160: I/chromium(2108): document.getElementById("currentVideoDesc").innerHTML = "Last video taken at " + new Date();
05-29 13:47:46.160: I/chromium(2108): }
05-29 13:47:46.160: I/chromium(2108): console.log('handleVideo response: ' + event.response);
05-29 13:47:46.160: I/chromium(2108): if (event.response) {
05-29 13:47:46.160: I/chromium(2108): var cleanResponse = event.response.replace(/\+/g,'');
05-29 13:47:46.160: I/chromium(2108): var jsonResp = JSON.parse(cleanResponse);
05-29 13:47:46.160: I/chromium(2108): var row = document.createElement('div');
05-29 13:47:46.160: I/chromium(2108): row.setAttribute('class','row');
05-29 13:47:46.160: I/chromium(2108): var elem = document.getElementById('videos');
05-29 13:47:46.160: I/chromium(2108): elem.insertBefore(row,elem.firstChild);
05-29 13:47:46.160: I/chromium(2108): row.innerHTML = "<a class='btn ui-btn ui-shadow ui-btn-corner-all ui-btn-up-c' onclick=\"loadVideo(this,'" +
05-29 13:47:46.160: I/chromium(2108): (jsonResp.uri || jsonResp.location ) + "');\">Load Video</a>";
05-29 13:47:46.160: I/chromium(2108): }
05-29 13:47:46.160: I/chromium(2108): }' failed, make sure that the callback function is in global scope.", source: http://192.168.0.101:4000/bridgeit.js (651)
05-29 13:47:46.170: I/chromium(2108): [INFO:CONSOLE(652)] "SyntaxError: Unexpected token <
05-29 13:47:46.170: I/chromium(2108): at Object.parse (native)
05-29 13:47:46.170: I/chromium(2108): at onAfterVideoCapture (http://192.168.0.101:4000/camcorder.html:123:33)
05-29 13:47:46.170: I/chromium(2108): at http://192.168.0.101:4000/bridgeit.js:648:7", source: http://192.168.0.101:4000/bridgeit.js (652)
05-29 13:47:46.193: I/SFPerfTracer(262): triggers: (rate: 1:64) (0 sw vsyncs) (0 skipped) (36:1867135 vsyncs) (38:2649953)
05-29 13:47:46.211: I/ActivityManager(994): START u0 {act=android.intent.action.MAIN flg=0x10000000 pkg=com.android.chrome
I'm not seeing any issue with the camcorder on other Android devices, so far, so my hunch is that this might be due to this device having a removable SD Card where and the way we locate the video file (differently than we locate the photos or audio recordings) in VideoHandler.java.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Philip Breau
created issue -
Patrick Corless
made changes -
Field | Original Value | New Value |
---|---|---|
Fix Version/s | BridgeIt 1.0.7 [ 12370 ] |
Patrick Corless
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |