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 20:46:41 GMT
Thanks Lorin.

I did a quick test for throughput on an animating canvas.  I was able to
grab 30 frames within a 5 seconds which equates to around 166ms per capture
on a Galaxy Nexus.  Unfortunately not fast enough to automate something
like video.  As with any kind of capturing system, often the overhead of
copying bits around is enough to slow down the operation of the app.

-Aaron


On Tue, Mar 12, 2013 at 11:58 AM, Lorin Beer <lorin.beer.dev@gmail.com>wrote:

> Hey Aaron,
>
> very cool stuff, looking forward to checking it out!
>
> Question: any performance hit on the app by using Capture? What's the
> expected throughput on images taken in this way (given a particular device,
> say Galaxy Nexus)?
>
> - Lorin
>
>
> On Tue, Mar 12, 2013 at 11:30 AM, Aaron Charbonneau <amcharbo@gmail.com
> >wrote:
>
> > 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