diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2009-01-20 14:03:58 -0800 | 
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-01-20 14:03:58 -0800 | 
| commit | 22f7dfd23490a3de2f21ff96949ba47003aac8f8 (patch) | |
| tree | 41bc290bb2f1f08a0e37cfda4955742a85d42ecf /core/java/android/hardware | |
| parent | 9266c558bf1d21ff647525ff99f7dadbca417309 (diff) | |
| download | frameworks_base-22f7dfd23490a3de2f21ff96949ba47003aac8f8.zip frameworks_base-22f7dfd23490a3de2f21ff96949ba47003aac8f8.tar.gz frameworks_base-22f7dfd23490a3de2f21ff96949ba47003aac8f8.tar.bz2 | |
auto import from //branches/cupcake/...@127101
Diffstat (limited to 'core/java/android/hardware')
| -rw-r--r-- | core/java/android/hardware/Camera.java | 27 | 
1 files changed, 24 insertions, 3 deletions
| diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index e2d7097..c09567c 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -55,6 +55,7 @@ public class Camera {      private PreviewCallback mPreviewCallback;      private AutoFocusCallback mAutoFocusCallback;      private ErrorCallback mErrorCallback; +    private boolean mOneShot;      /**       * Returns a new Camera object. @@ -198,9 +199,25 @@ public class Camera {       */      public final void setPreviewCallback(PreviewCallback cb) {          mPreviewCallback = cb; -        setHasPreviewCallback(cb != null); +        mOneShot = false; +        setHasPreviewCallback(cb != null, false);      } -    private native final void setHasPreviewCallback(boolean installed); + +    /** +     * Installs a callback to retrieve a single preview frame, after which the +     * callback is cleared. +     * +     * @param cb A callback object that receives a copy of the preview frame. +     */ +    public final void setOneShotPreviewCallback(PreviewCallback cb) { +        if (cb != null) { +            mPreviewCallback = cb; +            mOneShot = true; +            setHasPreviewCallback(true, true); +        } +    } + +    private native final void setHasPreviewCallback(boolean installed, boolean oneshot);      private class EventHandler extends Handler      { @@ -230,8 +247,12 @@ public class Camera {                  return;              case PREVIEW_CALLBACK: -                if (mPreviewCallback != null) +                if (mPreviewCallback != null) {                      mPreviewCallback.onPreviewFrame((byte[])msg.obj, mCamera); +                    if (mOneShot) { +                        mPreviewCallback = null; +                    } +                }                  return;              case AUTOFOCUS_CALLBACK: | 
