CHAPTER 8 Sensors and Camera
Chapter objectives: • Understand Motion Sensors, Environmental Sensors and Positional Sensors • Learn how to acquire measurement data from a sensor • Explore the SensorEvent class and SensorEventListener interface • Create apps using the accelerometer • Learn to utilize the built-in camera application
8.1 Sensors and Mobile Devices • A sensor is simply a device that measures a physical quantity, such as the tilt of a device, or sudden movement, and converts it into a signal that can be interpreted by an application • Android users typically experience sensors by means of touchscreens, accelerometers, gyroscopes, cameras, and GPS
8.2 Android Sensors Motion Sensors • The Android platform can determine which way is down based on the accelerometer • Android's built-in three-axis accelerometer is often used to control context-aware elements in an application
Environmental Sensors Measure specific environmental parameters, such as ambient air temperature and pressure, illumination, and humidity Sensors are hardware-based and are available only if a device manufacturer has built them into a device With the exception of the light sensor, which most device manufacturers use to control screen brightness, environment sensors are not always available on devices.
Positional Sensors A magnetometer, such as a geomagnetic field sensor, is built into most Android devices A proximity sensor is used to determine how close an object is to the device Proximity data is particularly important when creating applications that must determine when a device is being held close to a user’s face, such as during a phone call
8.3 Working with Sensors • Android also has software-based sensors • Software-based sensors imitate hardware-based sensors by deriving their data from one or more of the embedded physical sensorsthe accelerometer. • Most devices include an accelerometer and a magnetometer • Some devices have more than one sensor of a given type, such as the inclusion of two gravity sensors, each one having a different range
8.4 Coordinate System • Defined relative to the screen of the device in its default orientation • As shown in Figure 8-3, the x-axis runs in the direction of the short side of the screen • The y-axis runs in the direction of the long side of the screen and the z-axis points out of the screen
The natural orientation for many tablet devices is landscape The coordinate system of the world, the inertial frame of reference, defines the x-axis as the cross-product of the y-axis with the z-axis The y-axis is tangential to the ground and points toward the North Pole The z-axis points perpendicular to the ground toward the sky
8.5 Accelerometer and Force • Given a fixed mass, an Android device will experience an increase in force when the acceleration of the device is increased • When the accelerometer measures a zero force, the device is either still or moving at a constant speed • When the acceleration of the device is increased, such as a quick jerk of the hand, the accelerometer registers an increase in force
The accelerometer is made up of three accelerometers, one for each axis—x, y, and z Each one measures changes in velocity over time along a linear path Combining all three accelerometers lets you detect accelerated force in any direction While acceleration is a vector quantity, g-force is often expressed as a scalar, with positive g-forces pointing upward (indicating upward acceleration), and negative g-forces pointing downward.
8.6 Sensor Batching • Hardware sensor batching is a technique that is designed to reduce the power consumed by sensors commonly used in fitness, location tracking, and monitoring service applications • By using sensor batching, hardware sensors can collect and deliver sensor-related data more efficiently in batches, rather than individually
Consider an accelerometer driven application used for healthcare purposes by tracking a user’s physical activity level To track steps, the application must capture readings from the accelerometer and distinguish the step pattern Such an application needs to run in the background, counting steps and tracking location remaining in an active state, which can cause the battery life to to lose power at a faster rate Sensor batching provides optimization to decrease power consumed by ongoing sensor activities
8.8 Camera • Not all Android devices contain a camera • The necessity of a camera on a device was relaxed when Android began to be used on set-top boxes • Set-top boxes are devices that allow users to listen to music, view content, and play games on their television sets. • To prevent an application that requires a camera from being installed on devices that do not feature a camera component, a <uses-feature> tag should be placed in the AndroidManifest file
It is important to check the availability of the camera within an activity that uses a camera feature The existence of camera components can be verified by using PackageManager A front-facing camera may also be available on a device because strategically it is highly suitable for making video callsThe availability of camera features can be identified with three constants:
FEATURE_CAMERA_ANY: The device has at least one camera or can support an external camera being connected to it. FEATURE_CAMERA: The device has a camera facing away from the screen. This is also referred to as a rear-facing camera. FEATURE_CAMERA_FRONT: The device has a front facing camera.
8.9 Manipulating Photos • Pure red contains the full intensity of red (255) and no intensity of green and blue. R: 255 G: 0 B: 0 • Pure yellow contains the full intensity of red and green, but not blue. R: 255, G: 255, B: 0 • Pure white is the combination of all three colors at full intensity. R: 255, G: 255, B: 255 • Pure black contains the weakest intensity of wavelengths that correspond to red, green, and blue. R: 0, G: 0, B: 0