FOREIGN MODULE android_hardware;

IMPORT
    java_lang := "java.lang",
    java_util := "java.util",
    android_view := "android.view",
    android_os := "android.os";

TYPE

  Camera* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
            STATIC
              CAMERA_ERROR_SERVER_DIED* = 100;
              CAMERA_ERROR_UNKNOWN*     = 1;
              PROCEDURE open*() : Camera;
            END;

  Camera$AutoFocusCallback* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                              END;

  Camera$ErrorCallback* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                          END;

  Camera$Parameters* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                       STATIC
                         ANTIBANDING_50HZ*               = "50hz";
                         ANTIBANDING_60HZ*               = "60hz";
                         ANTIBANDING_AUTO*               = "auto";
                         ANTIBANDING_OFF*                = "off";
                         EFFECT_AQUA*                    = "aqua";
                         EFFECT_BLACKBOARD*              = "blackboard";
                         EFFECT_MONO*                    = "mono";
                         EFFECT_NEGATIVE*                = "negative";
                         EFFECT_NONE*                    = "none";
                         EFFECT_POSTERIZE*               = "posterize";
                         EFFECT_SEPIA*                   = "sepia";
                         EFFECT_SOLARIZE*                = "solarize";
                         EFFECT_WHITEBOARD*              = "whiteboard";
                         FLASH_MODE_AUTO*                = "auto";
                         FLASH_MODE_OFF*                 = "off";
                         FLASH_MODE_ON*                  = "on";
                         FLASH_MODE_RED_EYE*             = "red-eye";
                         FLASH_MODE_TORCH*               = "torch";
                         FOCUS_MODE_AUTO*                = "auto";
                         FOCUS_MODE_FIXED*               = "fixed";
                         FOCUS_MODE_INFINITY*            = "infinity";
                         FOCUS_MODE_MACRO*               = "macro";
                         SCENE_MODE_ACTION*              = "action";
                         SCENE_MODE_AUTO*                = "auto";
                         SCENE_MODE_BEACH*               = "beach";
                         SCENE_MODE_CANDLELIGHT*         = "candlelight";
                         SCENE_MODE_FIREWORKS*           = "fireworks";
                         SCENE_MODE_LANDSCAPE*           = "landscape";
                         SCENE_MODE_NIGHT*               = "night";
                         SCENE_MODE_NIGHT_PORTRAIT*      = "night-portrait";
                         SCENE_MODE_PARTY*               = "party";
                         SCENE_MODE_PORTRAIT*            = "portrait";
                         SCENE_MODE_SNOW*                = "snow";
                         SCENE_MODE_SPORTS*              = "sports";
                         SCENE_MODE_STEADYPHOTO*         = "steadyphoto";
                         SCENE_MODE_SUNSET*              = "sunset";
                         SCENE_MODE_THEATRE*             = "theatre";
                         WHITE_BALANCE_AUTO*             = "auto";
                         WHITE_BALANCE_CLOUDY_DAYLIGHT*  = "cloudy-daylight";
                         WHITE_BALANCE_DAYLIGHT*         = "daylight";
                         WHITE_BALANCE_FLUORESCENT*      = "fluorescent";
                         WHITE_BALANCE_INCANDESCENT*     = "incandescent";
                         WHITE_BALANCE_SHADE*            = "shade";
                         WHITE_BALANCE_TWILIGHT*         = "twilight";
                         WHITE_BALANCE_WARM_FLUORESCENT* = "warm-fluorescent";
                       END;

  Camera$PictureCallback* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                            END;

  Camera$PreviewCallback* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                            END;

  Camera$ShutterCallback* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                            END;

  Camera$Size* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                   width*  : INTEGER;
                   height* : INTEGER;
                 STATIC
                   PROCEDURE Init*(p0 : Camera;
                                   p1 : INTEGER;
                                   p2 : INTEGER) : Camera$Size,CONSTRUCTOR;
                 END;

  GeomagneticField* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : SHORTREAL;
                                        p1 : SHORTREAL;
                                        p2 : SHORTREAL;
                                        p3 : LONGINT) : GeomagneticField,CONSTRUCTOR;
                      END;

  Sensor* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
            STATIC
              TYPE_ACCELEROMETER*  = 1;
              TYPE_ALL*            = -1;
              TYPE_GYROSCOPE*      = 4;
              TYPE_LIGHT*          = 5;
              TYPE_MAGNETIC_FIELD* = 2;
              TYPE_ORIENTATION*    = 3;
              TYPE_PRESSURE*       = 6;
              TYPE_PROXIMITY*      = 8;
              TYPE_TEMPERATURE*    = 7;
            END;

  SensorEvent* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                   values*    : POINTER TO ARRAY OF SHORTREAL;
                   sensor*    : Sensor;
                   accuracy*  : INTEGER;
                   timestamp* : LONGINT;
                 END;

  SensorEventListener* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                         END;

  SensorListener* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
                    END;

  SensorManager* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                   STATIC
                     AXIS_MINUS_X*                  = 129;
                     AXIS_MINUS_Y*                  = 130;
                     AXIS_MINUS_Z*                  = 131;
                     AXIS_X*                        = 1;
                     AXIS_Y*                        = 2;
                     AXIS_Z*                        = 3;
                     DATA_X*                        = 0;
                     DATA_Y*                        = 1;
                     DATA_Z*                        = 2;
                     GRAVITY_DEATH_STAR_I*          = 3.5303614254189597E-7;
                     GRAVITY_EARTH*                 = 9.806650161743164;
                     GRAVITY_JUPITER*               = 23.1200008392334;
                     GRAVITY_MARS*                  = 3.7100000381469727;
                     GRAVITY_MERCURY*               = 3.700000047683716;
                     GRAVITY_MOON*                  = 1.600000023841858;
                     GRAVITY_NEPTUNE*               = 11.0;
                     GRAVITY_PLUTO*                 = 0.6000000238418579;
                     GRAVITY_SATURN*                = 8.960000038146973;
                     GRAVITY_SUN*                   = 275.0;
                     GRAVITY_THE_ISLAND*            = 4.815162181854248;
                     GRAVITY_URANUS*                = 8.6899995803833;
                     GRAVITY_VENUS*                 = 8.869999885559082;
                     LIGHT_CLOUDY*                  = 100.0;
                     LIGHT_FULLMOON*                = 0.25;
                     LIGHT_NO_MOON*                 = 0.0010000000474974513;
                     LIGHT_OVERCAST*                = 10000.0;
                     LIGHT_SHADE*                   = 20000.0;
                     LIGHT_SUNLIGHT*                = 110000.0;
                     LIGHT_SUNLIGHT_MAX*            = 120000.0;
                     LIGHT_SUNRISE*                 = 400.0;
                     MAGNETIC_FIELD_EARTH_MAX*      = 60.0;
                     MAGNETIC_FIELD_EARTH_MIN*      = 30.0;
                     RAW_DATA_INDEX*                = 3;
                     RAW_DATA_X*                    = 3;
                     RAW_DATA_Y*                    = 4;
                     RAW_DATA_Z*                    = 5;
                     SENSOR_ACCELEROMETER*          = 2;
                     SENSOR_ALL*                    = 127;
                     SENSOR_DELAY_FASTEST*          = 0;
                     SENSOR_DELAY_GAME*             = 1;
                     SENSOR_DELAY_NORMAL*           = 3;
                     SENSOR_DELAY_UI*               = 2;
                     SENSOR_LIGHT*                  = 16;
                     SENSOR_MAGNETIC_FIELD*         = 8;
                     SENSOR_MAX*                    = 64;
                     SENSOR_MIN*                    = 1;
                     SENSOR_ORIENTATION*            = 1;
                     SENSOR_ORIENTATION_RAW*        = 128;
                     SENSOR_PROXIMITY*              = 32;
                     SENSOR_STATUS_ACCURACY_HIGH*   = 3;
                     SENSOR_STATUS_ACCURACY_LOW*    = 1;
                     SENSOR_STATUS_ACCURACY_MEDIUM* = 2;
                     SENSOR_STATUS_UNRELIABLE*      = 0;
                     SENSOR_TEMPERATURE*            = 4;
                     SENSOR_TRICORDER*              = 64;
                     STANDARD_GRAVITY*              = 9.806650161743164;
                     PROCEDURE getInclination*(IN  p0 : ARRAY OF SHORTREAL) : SHORTREAL;
                     PROCEDURE getOrientation*(IN  p0 : ARRAY OF SHORTREAL;
                                               IN  p1 : ARRAY OF SHORTREAL) : POINTER TO ARRAY OF SHORTREAL;
                     PROCEDURE getRotationMatrix*(IN  p0 : ARRAY OF SHORTREAL;
                                                  IN  p1 : ARRAY OF SHORTREAL;
                                                  IN  p2 : ARRAY OF SHORTREAL;
                                                  IN  p3 : ARRAY OF SHORTREAL) : BOOLEAN;
                     PROCEDURE remapCoordinateSystem*(IN  p0 : ARRAY OF SHORTREAL;
                                                          p1 : INTEGER;
                                                          p2 : INTEGER;
                                                      IN  p3 : ARRAY OF SHORTREAL) : BOOLEAN;
                   END;




PROCEDURE (self:Camera) autoFocus*(p0 : Camera$AutoFocusCallback),NEW;

PROCEDURE (self:Camera) cancelAutoFocus*(),NEW;

PROCEDURE (self:Camera) finalize!(),EXTENSIBLE;

PROCEDURE (self:Camera) getParameters*() : Camera$Parameters,NEW,EXTENSIBLE;

PROCEDURE (self:Camera) lock*(),NEW;

PROCEDURE (self:Camera) release*(),NEW;

PROCEDURE (self:Camera) setErrorCallback*(p0 : Camera$ErrorCallback),NEW;

PROCEDURE (self:Camera) setOneShotPreviewCallback*(p0 : Camera$PreviewCallback),NEW;

PROCEDURE (self:Camera) setParameters*(p0 : Camera$Parameters),NEW,EXTENSIBLE;

PROCEDURE (self:Camera) setPreviewCallback*(p0 : Camera$PreviewCallback),NEW;

PROCEDURE (self:Camera) setPreviewDisplay*(p0 : android_view.SurfaceHolder),NEW;

PROCEDURE (self:Camera) startPreview*(),NEW;

PROCEDURE (self:Camera) stopPreview*(),NEW;

PROCEDURE (self:Camera) takePicture*(p0 : Camera$ShutterCallback;
                                     p1 : Camera$PictureCallback;
                                     p2 : Camera$PictureCallback),NEW;

PROCEDURE (self:Camera) takePicture*(p0 : Camera$ShutterCallback;
                                     p1 : Camera$PictureCallback;
                                     p2 : Camera$PictureCallback;
                                     p3 : Camera$PictureCallback),NEW;

PROCEDURE (self:Camera) unlock*(),NEW;

PROCEDURE (self:Camera$AutoFocusCallback) onAutoFocus*(p0 : BOOLEAN;
                                                       p1 : Camera),NEW,ABSTRACT;

PROCEDURE (self:Camera$ErrorCallback) onError*(p0 : INTEGER;
                                               p1 : Camera),NEW,ABSTRACT;

PROCEDURE (self:Camera$Parameters) flatten*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) get*(p0 : java_lang.String) : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getAntibanding*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getColorEffect*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getFlashMode*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getFocusMode*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getInt*(p0 : java_lang.String) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getJpegQuality*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getJpegThumbnailQuality*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getJpegThumbnailSize*() : Camera$Size,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getPictureFormat*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getPictureSize*() : Camera$Size,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getPreviewFormat*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getPreviewFrameRate*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getPreviewSize*() : Camera$Size,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSceneMode*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedAntibanding*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedColorEffects*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedFlashModes*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedFocusModes*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedPictureFormats*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedPictureSizes*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedPreviewFormats*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedPreviewFrameRates*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedPreviewSizes*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedSceneModes*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getSupportedWhiteBalance*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) getWhiteBalance*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) remove*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) removeGpsData*(),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) set*(p0 : java_lang.String;
                                        p1 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) set*(p0 : java_lang.String;
                                        p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setAntibanding*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setColorEffect*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setFlashMode*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setFocusMode*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setGpsAltitude*(p0 : REAL),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setGpsLatitude*(p0 : REAL),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setGpsLongitude*(p0 : REAL),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setGpsTimestamp*(p0 : LONGINT),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setJpegQuality*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setJpegThumbnailQuality*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setJpegThumbnailSize*(p0 : INTEGER;
                                                         p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setPictureFormat*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setPictureSize*(p0 : INTEGER;
                                                   p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setPreviewFormat*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setPreviewFrameRate*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setPreviewSize*(p0 : INTEGER;
                                                   p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setRotation*(p0 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setSceneMode*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) setWhiteBalance*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$Parameters) unflatten*(p0 : java_lang.String),NEW,EXTENSIBLE;

PROCEDURE (self:Camera$PictureCallback) onPictureTaken*(IN  p0 : ARRAY OF BYTE;
                                                            p1 : Camera),NEW,ABSTRACT;

PROCEDURE (self:Camera$PreviewCallback) onPreviewFrame*(IN  p0 : ARRAY OF BYTE;
                                                            p1 : Camera),NEW,ABSTRACT;

PROCEDURE (self:Camera$ShutterCallback) onShutter*(),NEW,ABSTRACT;

PROCEDURE (self:GeomagneticField) getDeclination*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getFieldStrength*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getHorizontalStrength*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getInclination*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getX*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getY*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:GeomagneticField) getZ*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getMaximumRange*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getPower*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getResolution*() : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getType*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getVendor*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Sensor) getVersion*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:SensorEventListener) onAccuracyChanged*(p0 : Sensor;
                                                        p1 : INTEGER),NEW,ABSTRACT;

PROCEDURE (self:SensorEventListener) onSensorChanged*(p0 : SensorEvent),NEW,ABSTRACT;

PROCEDURE (self:SensorListener) onAccuracyChanged*(p0 : INTEGER;
                                                   p1 : INTEGER),NEW,ABSTRACT;

PROCEDURE (self:SensorListener) onSensorChanged*(    p0 : INTEGER;
                                                 IN  p1 : ARRAY OF SHORTREAL),NEW,ABSTRACT;

PROCEDURE (self:SensorManager) getDefaultSensor*(p0 : INTEGER) : Sensor,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) getSensorList*(p0 : INTEGER) : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) getSensors*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) registerListener*(p0 : SensorEventListener;
                                                 p1 : Sensor;
                                                 p2 : INTEGER;
                                                 p3 : android_os.Handler) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) registerListener*(p0 : SensorEventListener;
                                                 p1 : Sensor;
                                                 p2 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) registerListener*(p0 : SensorListener;
                                                 p1 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) registerListener*(p0 : SensorListener;
                                                 p1 : INTEGER;
                                                 p2 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) unregisterListener*(p0 : SensorEventListener),NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) unregisterListener*(p0 : SensorListener;
                                                   p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) unregisterListener*(p0 : SensorListener),NEW,EXTENSIBLE;

PROCEDURE (self:SensorManager) unregisterListener*(p0 : SensorEventListener;
                                                   p1 : Sensor),NEW,EXTENSIBLE;

END android_hardware.