Using camera input scene modes
You can use new constants and methods in the net.rim.device.api.amms.control.camera.FeatureControl class to set and retrieve the input scene mode (such as portrait, landscape, sport, snow, macro, and so on) and check if a scene mode is supported by the device. You can use thesetSceneMode() method to set the camera's mode to the scene mode specified in the parameter. The parameter must be one of the constants located in the FeatureControl class prefixed by SCENE_MODE_. The getCurrentSceneMode() method retrieves the currently set scene mode represented by one of the constants prefixed by SCENE_MODE_, and isSceneModeSupported() checks if a scene mode is supported.
Focus control modes
You can use constants and methods in the net.rim.device.api.amms.control.camera.EnhancedFocusControl class to set the focus control mode.
The default focus control of the camera on a BlackBerry® device has changed from single-shot to the best available mode (typically continuous). If you rely on a specific focus mode for your application, you must call it explicitly using these new constants. You can use theFOCUS_MODE_CONTINUOUS, FOCUS_MODE_FIXED and FOCUS_MODE_SINGLESHOT to explicitly set the focus mode of the camera to continuous, fixed, and single shot auto-focus respectively. You can pass these constants into the setFocusMode(String mode) method to set the camera's focus mode. You can retrieve the camera's current focus mode using the getCurrentFocusMode() method. You can check if a specific focus mode is supported by passing in one of the above constants into the isFocusModeSupported(String focusModeID) method, which will return true if it is supported, and false otherwise.
Recording video without audio
You can now specify none as a value for the audio_codec parameter when creating your video recording player. For example: createPlayer("capture://video?encoding=video/3gpp&audio_codec=none"). If you specify none, the video will record without audio. In addition, System.getProperty("audio.encodings") now returns none as an allowable value for the audio_codec parameter.
Query supported bitrates for various codecs
You can invoke System.getProperty("audio.encodings.bitrate.ranges") and System.getProperty("video.encoding.bitrate.ranges") to retrieve a list of bitrate ranges for the supported codecs. The format of the returned string is: "codec:[min]-[max] codec:[min]-[max]... codec[min]-[max]" where codeic is the name that corresponds to the codename to use in the locator string to start a recording (for example: capture://video?encoding=video/3gpp&audio_codec=codec&video_codec=<codec>&rate=<audiorate>&video_rate=<videorate> ).
Setting the audio and video bitrate in video recordings during initialization
You can specify the bitrate for audio and video codecs when you create a Player instance using the Manager class by setting the rate parameter. For example: createPlayer("capture://video?encoding=video/3gpp&rate=<bitrate>&video_rate<bitrate>").
Bitrate ranges for various codecs can be obtained using System.getProperty("audio.encodings.bitrate.ranges") and System.getProperty("video.encoding.bitrate.ranges").
Advanced video control interface
You can use the new AdvancedVideoControl interface, located in the net.rim.device.api.media.control package, to define a new video display mode. This new mode allows you to render core UI components over video fields, for example playback controls. The interface has one constant, USE_GUI_ADVANCED, that is used as a parameter in the VideoControl.initDisplayMode(int mode, Object arg) method.
Buffer configuration API
You can use the StreamingBufferControl interface, located in the net.rim.device.api.media.control package, to control the internal streaming buffers of the media player. The flush() method clears all data that is currently buffered (but not yet played) by the media player. The setBufferTime(int millis) method controls the amount of time to buffer before playback begins.
VoIP on CDMA-based devices
You can enable VoIP functionality on CDMA-based devices by using the voipMode and rate parameters of the createPlayer(String locator) method located in the javax.microedition.media.Manager class.
RTSP fast content switching
When you use the RTSP protocol to display video, you can now switch video feeds without disconnecting and reconnecting to the server (if supported) by using the new RtspContentControl interface located in the net.rim.device.api.media.control package. This may result in faster and more efficient content switching.