ICEmobile
  1. ICEmobile
  2. MOBI-1140

BridgeIt camcorder not working on Android devices with removable storage

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major 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.

        Activity

        There are no subversion log entries for this issue yet.

          People

          • Assignee:
            Patrick Corless
            Reporter:
            Philip Breau
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: