PrivacyCamera is a privacy protecting camera which can hide human faces with an image or blindfold, and pixelate them automatically.
- Android 1.6 or higher
If you use a device which has under 100MB RAM, this app will not work.
|Sony Ericsson Xperia X10||complete|
|Sony Ericsson Xperia X10 mini||do.|
|Samsung Galaxy S||do.|
|LG Electronics Optimus GT540||do.|
|Toshiba(FUJITSU) REGZA Phone T-01C||do.|
|Google(HTC) Nexus One||Sometimes this app causes a fatal error. Don't use.|
|HTC Desire HD||do.|
|Sony Ericsson Xperia arc||do.|
|HTC Magic HT-03A||This app will cause some Exceptions due to low memory.|
- Japanese / English / Chinese(simplified)
How to use
Select an action from option menu.
- Do nothing
- Overlay image
Touch "Autofocus" button to focus. The button which is located in top-right is the "Silent take" button, and the other is the "Take with sound" button.
Touch "Silent take" button to take a low quality picture(which size is same as your device's display), and touch "Take with sound" to take a high quality picture(which size is from 1024x778 to 1920x768). But it takes relatively longer time.
If you take a picture, this processing dialog will appear. Wait until all processing finishes.
When the process finished, this dialog will appear. Select your choice. (User-unfriendly? I hope you will not use this camera for impolite reasons.)
Configure this application
This is the configure screen. Touch "Change the overlay image" to show next screen.
You can add an image from option menu.
Long-touch each item to remove the item.
How to detect faces
I used the FaceDetector class. But I think it's relatively slow so you should use OpenCV.
How to deal with OutOfMemoryError caused by Bitmap
- You should set both inPurgeable and inInputShareable (BitmpaFactory.Options) to true.
- Once you finish using a Bitmap instance, you should recycle() it to allow it to be garbage collected.
If this is set to true, then the resulting bitmap will allocate its pixels such that they can be purged if the system needs to reclaim memory. In that instance, when the pixels need to be accessed again (e.g. the bitmap is drawn, getPixels() is called), they will be automatically re-decoded.
This field works in conju(n)ction with inPurgeable. If inPurgeable is false, then this field is ignored. If inPurgeable is true, then this field determines whether the bitmap can share a reference to the input data (inputstream, array, etc.) or if it must make a deep copy.
How to reduce the Bitmap processing cost
getPixel and setPixel is slow so you should use getPixels and setPixels.
- Developer Collaboration Project lent me many Android devices
- This article was corrected by Char Custom (Chiesuke), who lives in the USA.
- The Catcher in the Rye
- Ghost in the Shell: Stand Alone Complex
- ぼっさん（He is a super "idol" in 2ch (Japanese anonymous community). And he allows anyone to use his portrait freely）