1ed15d1a140986473bbe7fffd72ec9618c41c5979Angus Kongpackage com.android.camera.app;
2ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
39f1db5210361802a30a7866825c3b29ef5fe0024Angus Kongimport android.os.Handler;
4ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Changimport android.view.OrientationEventListener;
5ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
69f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong/**
79f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong * An interface which defines the orientation manager.
89f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong */
99f1db5210361802a30a7866825c3b29ef5fe0024Angus Kongpublic interface OrientationManager {
109f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    public final static int ORIENTATION_UNKNOWN = OrientationEventListener.ORIENTATION_UNKNOWN;
11ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
129f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    public interface OnOrientationChangeListener {
139f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong        /**
149f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong         * Called when the orientation changes.
159f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong         *
169f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong         * @param orientation The current orientation.
179f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong         */
189f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong        public void onOrientationChanged(int orientation);
19ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang    }
20ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
219f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    /**
229f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * Adds the
239f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * {@link com.android.camera.app.OrientationManager.OnOrientationChangeListener}.
249f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     */
259f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    public void addOnOrientationChangeListener(
269f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong            Handler handler, OnOrientationChangeListener listener);
27ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
289f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    /**
299f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * Removes the listener.
309f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     */
319f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    public void removeOnOrientationChangeListener(
329f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong            Handler handler, OnOrientationChangeListener listener);
33ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
34ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong    /**
35ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     * Lock the framework orientation to the current device orientation
36ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     * rotates. No effect if the system setting of auto-rotation is off.
37ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     */
389f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    void lockOrientation();
39a314235e093032c2d6cdd1f1d3f6b5c10c3e75a7Your Name
40ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong    /**
41ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     * Unlock the framework orientation, so it can change when the device
42ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     * rotates. No effect if the system setting of auto-rotation is off.
43ce2b94917098f211cacaaebaa0f6b40021d3e3faAngus Kong     */
449f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    void unlockOrientation();
45ad08811a71e246d45ecdf97402f08cf7bd68e83bChih-Chung Chang
469dc4262cea73123b2a73cc0b0f762bb9ce2d5622Angus Kong    /** @return Whether the orientation is locked by the app or the system. */
479dc4262cea73123b2a73cc0b0f762bb9ce2d5622Angus Kong    boolean isOrientationLocked();
489dc4262cea73123b2a73cc0b0f762bb9ce2d5622Angus Kong
499f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    /**
509f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * Returns the display rotation degrees relative to the natural orientation
519f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * in clockwise.
529f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     *
539f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     * @return 0, 90, 180, or 270.
549f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong     */
559f1db5210361802a30a7866825c3b29ef5fe0024Angus Kong    int getDisplayRotation();
56ed15d1a140986473bbe7fffd72ec9618c41c5979Angus Kong}
57