When does the optionsreset event get fired?  I can't figure out how this code works to set the correct picture or video size. Looking some more I see that these get fired in response to capabilities change, which I guess happens when we get the first camera.

So the implicit assumptions here that make this code work properly is that only pick activities require picture and video sizes to be configured, and pick activities can't occur on a running app, and the activity is handled before the camera hardware is queried. So by the time we get the optionsreset event we will already have the constraints in the activity object.

It isn't part of your bug, bug since you're modifying this code, it might be worth explaining that in a comment.