cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Charbonneau <amcha...@gmail.com>
Subject Re: Cordova Screen Capture Plugin for Android
Date Tue, 12 Mar 2013 18:30:35 GMT
Glad you like it :)
Yes in fact the actual capture makes use of View.capturePicture() which
actually grabs the entire document, then that can be clipped down to the
size/location of a specific element.

-Aaron


On Tue, Mar 12, 2013 at 11:27 AM, Michal Mocny <mmocny@chromium.org> wrote:

> Aaron,
>
> I haven't even begun looking at your implementation, but I'm just going to
> say it: this is awesome!
>
> First question: When Capturing a DOM element, can you capture 'body' to
> grab it&children for a "full content screenshot", or does it have to be a
> specific single element?
>
> -Michal
>
>
> On Tue, Mar 12, 2013 at 1:58 PM, Aaron Charbonneau <amcharbo@gmail.com
> >wrote:
>
> > Greetings!  My name is Aaron Charbonneau, happy to be a new member of the
> > mailing list!
> >
> > I have been developing a sceenshot plugin for Cordova to help facilitate
> > automation testing and debugging of Cordova apps, and I would love some
> > feedback on it.  Currently Cordova provides a bunch of native functions
> > that allow you to do some cool stuff, but not much functionality to test
> > the apps that make use of them.  Being able to take a capture of the
> screen
> > from within you app is a great way to automate testing or get additional
> > information for debugging an issue.  Since there is no
> > Javascript mechanism for taking screen captures the solution would have
> to
> > be native, which fits nicely into the "gap" that Cordova/Phonegap
> bridges.
> >  Any medium to large scale app can benefit greatly from automation
> testing
> > and any app can benefit from an extra debugging tool, and that is what I
> > hope this screenshot plugin can help achieve.
> >
> > Currently the plugin offers 2 functions:
> >
> > Capture():
> > * Take a capture of the current view, write that capture to a .png file
> > with the specified file name and sub directory of the sdcard (fallback to
> > emulated sdcard in the case there isn't an sdcard mounted)
> > * Able to create a sub-screenshot with a specified rectangle in order to
> > block out ui elements that may be variable, and also save space.
> > * Can take captures of images/dom elements (including canvas) that are
> > lager than the actual screen size
> >
> > CaptureAndCompare():
> > * All the functionality of Capture()
> > * Perform a comparison between the captured image and a baseline image
> > located at the specified location in either the assets folder or the
> > sdcard.
> > * User can specify per color channel tolerances as well as total pixel
> > tolerances to avoid false positives for the inevitable rendering
> > differences across devices.
> > * Optionally output a png file that contains the differences between the
> > actual and the baseline for debugging/triage purposes, two modes: binary
> > diff (all failing pixels appear as solid white) or the true differences
> > between pixels.
> >
> > If you can spare some time, I would love it if you could take a look at
> the
> > api and parameters I have defined to make sure they adhere to Cordova
> > plugin best practices.  The most crucial part would be in the plugin
> itself
> > at ScreenCapture.java:
> >
> >
> https://github.com/Charbs09/Cordova-Mobile-Spec-ScreenCapture/blob/master/src/org/apache/cordova/plugin/ScreenCapture.java(capture()
> > and captureAndCompare() are the two exposed functions)
> >
> > I'm also interested to know you thoughts on it's usage.  I started with
> the
> > mobile-spec testing framework and put some quick rendering tests into the
> > Autotest section as a viable use case.  In order to get the WebView into
> > the state I wanted to capture, I had to implement a wait timer to allow
> the
> > view to update before taking the capture.  Once the wait function
> > completes, the capture can be taken and everything from there is callback
> > based.  I use the Jasmine waitsFor()/runs() blocks to make the tests run
> > synchronously.  For some validation testing I made a compare function in
> > Javascript to run against the native compare.  Turns out Java runs alot
> > faster than Javascript (surprise!) thus the native compare is about 2-5x
> > faster.  All in all the process is fairly quick, the full
> captureAndCompare
> > with 3 file io's takes about 233ms on a Nexus One, and ~100ms on a Nexus
> 10
> > (256x256 image size).
> >
> > Anyways here is the usage:
> >
> >
> https://github.com/Charbs09/Cordova-Mobile-Spec-ScreenCapture/blob/master/assets/www/autotest/tests/rendering.tests.js
> >
> > And here's the JS wrapper for the plugin calls:
> >
> >
> https://github.com/Charbs09/Cordova-Mobile-Spec-ScreenCapture/blob/master/assets/www/screencapture.js
> >
> > Thanks for your time, and I look forward to ANY feedback positive or
> > negative.
> >
> > Thanks,
> > Aaron
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message