cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lorin Beer <lorin.beer....@gmail.com>
Subject Re: Cordova Screen Capture Plugin for Android
Date Tue, 12 Mar 2013 18:58:14 GMT
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