Momentics IDE for BlackBerry

Screen showing the IDE highlight.

Momentics IDE for BlackBerry provides the development and testing environment and tools that you need to develop great apps. Take a look at the release notes.

BlackBerry 10 Device Simulator

Screen showing the simulator running on a computer.

The BlackBerry 10 Device Simulator allows you to simulate the BlackBerry 10 OS environment to help you develop your app. Take a look at the release notes.

Plug-in for Microsoft Visual Studio

Screen showing the core logo with a plug coming out from it.

Do you want to develop your app in Microsoft Visual Studio? You can use the BlackBerry Native Plug-in for Microsoft Visual Studio. Take a look at the release notes.


The BlackBerry 10 Native SDK and the Momentics IDE for BlackBerry are now available as separate releases, so their version numbers are distinct. The Native SDK provides all of the libraries that you need to create your apps, while the Momentics IDE provides the development and testing environment that brings it all together.

To make it easy to download the tools that you need, the BlackBerry 10 Native SDK is installed separately from the Momentics IDE. When you start the Momentics IDE, you can download and install the BlackBerry 10 Native SDK from within the IDE. You can also update the tools from within the IDE.


Upgrading to 10.3 Gold

To upgrade to the 10.3 beta version of the Native SDK, you must also upgrade to Momentics IDE 2.1 beta using the installer or the IDE.

You can install Momentics IDE 2.1 beta and continue using API level 10.2 and earlier. However, if you want to use API level 10.3, you must install Momentics IDE 2.1 beta.

Using the installer


If you're using the installer, you need to install the Momentics IDE to a unique location. You have two options for upgrading using the installer:

  • Uninstall the previous version, then install the new version. If you uninstall the previous version of the Momentics IDE, you can still download previous API levels by using the update site in the IDE.
  • Install the new version to a different location. You can install Momentics IDE 2.1 beta to a different location than your current IDE and continue to work in both versions.

To download and install Momentics IDE 2.1 beta and the 10.3 beta version of the BlackBerry 10 Native SDK using the installer:

  1. Download Momentics IDE 2.1 beta from the Downloads page.
  2. Complete the installation by following the on-screen instructions.
  3. Start the Momentics IDE.
    You may be prompted to install a new SDK. If you aren't, on the Help menu, click Update API Levels.
  4. In the API Levels dialog box, click Beta and select the 10.3 beta API level.
  5. Click Install.
  6. When the API level finishes installing, click OK.

Using the Momentics IDE


If you're upgrading using the Momentics IDE, you can update the IDE only or the IDE and SDK.

To update the IDE and SDK, in the Momentics IDE, complete the following:

  1. In Windows and Linux, on the Window menu, click Preferences. In Mac OS, on the Momentics menu, click Preferences.
  2. Expand Install/Update.
  3. Click Available Software Sites.
  4. Click Add.
  5. In the Name field, type Momentics IDE 2.1 beta.
  6. In the Location field, type http://downloads.blackberry.com/upr/developers/update/bbndk/iderepo/21beta
  7. Click OK and then OK again.
  8. On the Help menu, click Check for Updates.
  9. Follow the instructions in the wizard.

For more information about API levels

For Cascades, see API levels in Build, test, and deploy your app.
For core, see API levels in Using the Momentics IDE.

Targeting multiple API levels

If you're using the 10.3 beta version of the SDK but you still want to develop for a BlackBerry 10 device that's running version 10.2 or earlier of the OS, you need to download an additional SDK by using the update site. To do this, in the Momentics IDE, complete the following:

  1. On the Help menu, click Update API Levels.
  2. In the API Levels dialog box, click Gold or Beta and select the API level that you want.
  3. Click Install.
  4. When the API level finishes installing, click OK.

For more information, see Set up your environment.

Finding the appropriate version

Here's a quick summary of the versions you need:

  • If you are developing for a BlackBerry 10 Dev Alpha device, visit Updating the BlackBerry 10 Dev Alpha Device Software.
  • If you are developing for a BlackBerry 10 smartphone, you need to download an API level from the update site that matches the device version that's provided by your wireless service provider. You can verify the device version by opening the Settings app, tapping About, selecting OS in the Category drop-down list, and checking the version that's listed in the OS Version field.

For more information about developing apps that work on different versions of the BlackBerry 10 Native SDK, see Appropriate version of the BlackBerry Native SDK in the BlackBerry Support Community Forums.

Reverting to an earlier software version



The following procedure will delete all data and applications on the BlackBerry device. If possible, back up the data prior to performing the procedure. Any backups created while running a developer build of the BlackBerry 10 OS cannot be restored after the production BlackBerry 10 OS has been reloaded.

If you've upgraded the software version on your device to a recent developer build of the BlackBerry 10 OS and you want to revert to a software version that's been released by your wireless service provider, complete the following:

  1. Open BlackBerry Link.
  2. Connect the device using a micro USB cable.
  3. Under Devices, click the device name.
  4. In the upper-right corner, click Preferences.
  5. On the left, click Reload Device Software.
  6. Click Reload.
  7. Click OK.

For more information on reverting to an earlier software version, read this knowledge base article.

Back to Top


Cascades and Core release notes

Highlights

 

Screen showing the design units and UI adaptability hightlight.

Design units and UI adaptability

Screen showing the themes and colors highlight.

Themes and colors

Screen showing the permissions highlight.

Permissions

Design units and asset selectors make it easier to create adaptable UIs. A design unit is a unit of length that scales assets for different device specifications. You can use asset selection based on screen layout or based on screen density to minimize your code.
To learn more, see Design units and Asset selection in 10.3.

You can now change the primary color of your app at runtime or in your bar-descriptor.xml file to a color that matches your brand. You can change the default visuals for many core controls.

For more information, see the Themes documentation and the API reference documentation for the UIConfig class.

Using API level 10.3, you can access new permissions in your bar-descriptor.xml file. You can use the phone call details permission to find out about a call in progress. You can also use smart card permissions to encrypt, decrypt, sign, and verify data, and access smart card services. To learn more, see Available permissions.


New in this release

Cascades | Core

Cascades UI framework


Action bar

The new action bar is more compact and available in a light and dark theme. The action bar offers a text label solution that works on all devices. When the virtual keyboard is invoked, the action bar follows the keyboard to remain visible.

Any image can now be colorized. If you want to override how the framework colorizes an action item image, you can specify a type of normal in the image's .amd file and the framework will use the default image. For more information, see Action item images.

Brand colors and visual styles

You can now change the primary color of your app from blue to a color that more closely matches your brand. This change affects the default visuals for many core controls.

You can specify the visual style of your app (bright, dark, or default) by using the Theme drop-down list on the Application tab of your bar-descriptor.xml file. If you are using API level 10.3 or later, you can also specify customized colors for your theme. To learn more, see Application page.

Expandable view

An ExpandableView is a control that's used to display a portion of its contents in a fixed height, and the control can be expanded to display its full contents.

Grid layout

A grid layout is a new layout type that allows you to create complex layouts using less code. It uses cells to arrange components and a columncount property to specify columns in the layout.

Interactive list header

An interactive list header lets you create a Header control with a clickable button and subtitle. The button functions much like a standard Button control and can be used to invoke cards or can be connected to other objects using signals and slots. For more information, check out the Header API reference.

List rearrange

Lists now support rearrange mode, which allows users to rearrange items in a list by dragging items from one place to another. For more information, see Rearranging lists.

Signature action items

Signature action items allow you to draw attention to an especially important action and makes it stand out more. The signature action item remains visible when the action bar scrolls away. You can apply a background color to a signature action item. For more information, see Signature action items.

Title bar

We’ve added a new TitleBar type called TextField that allows you to add a text field and action buttons to a TitleBar. This addition allows your users to enter text into the text field and use the title bar buttons to perform an action (for example, a search). For more information, see TitleBarKind.

Text input for an action item

We’ve added the ability to input text in an action item on an action bar. Users can enter text in a text field in an action item and submit their entry. For more information, see TextInputActionItem.

Web

The WebView class now provides all of the functionality you need to implement tabbed browsing. There is a new contextual action item for opening a link in a new tab. This new functionality allows the WebView to support pop-up WebView objects that communicate with the original WebView. The newViewRequested() and closeRequested() signals and the WebNewViewRequest class allow you to fine-tune the behavior of pop-ups or implement a tabbed browsing experience. The openLinkInNewTabAction property can be used to disable the "Open in new tab" contextual action item or change its icon or text to suit your implementation.

In some cases, you may want to prevent WebView from showing the virtual keyboard. Similar to TextInputProperties, you can use the new WebInputProperties class to specify the VirtualKeyboardOff flag from the TextInputFlag class.

When encountering an untrusted HTTPS/SSL connection, WebView used to cancel all loading immedately without providing any feedback. To improve the user experience, WebView now shows a warning and allows the user to inspect the certificates used. If the certificate error is minor, the user is allowed the option to add an SSL site exception for this particular site, (that is, trust the connection anyway and proceed with loading the web content).

WebView now remembers which sites the user has granted permission to use location services and which sites the user has granted SSL site exceptions. The WebStorage class has been updated to include two new functions:

  • The clearGeolocationPermissions() function clears all permissions granted by the user to web sites that use location services.
  • The clearSslSiteExceptions() function clears all SSL site exceptions added by the user.

Cascades platform APIs


Maps

New features have been added to the Maps APIs:

  • MapView: You can use the animateToLocation() function to fly or scroll to a location instead of jumping to the location on a map.
  • GeoDeviceLocation: You can use the isValid() function and the validChanged() signal to determine the validity of a device’s location. The device has a valid location when it has received a location update from a location source.
  • MapCoverageChecker: You can use the MapCoverageChecker class to determine if map coverage is available in MapView.
  • RouteMapInvoker: You can specify hands-free navigation using the RouteMapInvoker class and the HandsFreeNavigation enum, which represents the list of possible hands-free navigation modes.

Multimedia

We’ve added closed captioning functionality to the MediaPlayer class and both embedded and external streams are now supported. In the NowPlayingConnection class, the preemptable functions are deprecated. You can use the PriorityLevel enumeration instead. NowPlayingController and NowPlayingConnection support the passing of ShuffleMode and RepeatMode through the now playing service.

Phone

We've updated the Phone class so that you can interact with calls in progress including holding a call, resuming a call, merging two calls into a conference call, and splitting a call from a conference call. You can also invoke the Phone app to either assign a phone number to an unassigned key for speed dial or dial the phone number of an assigned key. Using the Call class, you can get the phone number of a call in progress if you have the read_phonecall_details permission.

Personal information management (PIM)

New features have been added to the PIM APIs:

  • Account: You can retrieve all accounts on a device, including any accounts that might be disabled. You can set up an external account and specify the services that the account provider supports, and you can set owner information for the account.
  • Calendar: For calendar events and BBM conferences, you can set online conference information, including the moderator code. You can now reply to a single occurrence of a recurring event, reply to an event invitation and propose a new time, and search for prefixes only in the subject, location, or attendee fields. You can retrieve an iCalendar attachment by providing a message ID, and there are new categories for calendar events.
  • Contacts: Groups are now available, which let you organize contacts into logical groupings. You can retrieve the display name of a contact, as well as the photo hash that's associated with a contact photo.
  • Message: Update filters have been added, which let you specify options and parameters for bulk message updates, such as mark read, delete, or hide. You can set messages as hidden, and you can apply various permissions to messages. For conversations, you can retrieve the reply state and timestamp, and you can specify whether a conversation is hidden. Support for very large attachments has also been added.
  • Notebook: A filter has been added that you can use to search for and count notebook entries.

Back to Top


Core | Cascades

API reference versions


Each programming element in the API reference now includes a "Since" section that indicates the earliest API level in which the element was available. For example, the uds_register_client() function (which is part of the Unified Data Source Library) states "Since: BlackBerry 10.2.0", which indicates that this function is available in API level 10.2 and later.

The C Library currently does not include "Since" sections for its elements.

BlackBerry Platform Services Library


menu.h

  • Added the following functions:
    • menu_request_get_target_key()
    • menu_request_set_target_key()

navigator.h

  • Added the following function:
    • navigator_set_lockscreen_wallpaper()

navigator_invoke.h

  • Added the following invoke target type:
    • NAVIGATOR_INVOKE_TARGET_TYPE_HEADLESS

virtualkeyboard.h

  • Added the following keyboard layout:
    • VIRTUALKEYBOARD_LAYOUT_ALPHANUMERIC

For more information, see BlackBerry Platform Services Library.

Bluetooth Library


btdevice.h

  • Added the following constants:
    • BT_EVT_PAIRING_DELETED
    • BT_EVT_PAIRING_STARTED
    • BT_EVT_PAIRING_FAILED
  • Added the following data types and functions to support asynchronous operations:
    • bt_disc_inquiry_complete_cb
    • bt_ldev_set_power_cb
    • bt_rdev_delete_cb
    • bt_rdev_pair_cb
    • bt_rdev_refresh_gatt_services_cb
    • bt_rdev_refresh_services_cb
    • bt_ldev_set_power_async()
    • bt_ldev_get_services()
    • bt_ldev_free_services()
    • bt_ldev_set_power_async()
    • bt_ldev_get_services()
    • bt_ldev_free_services()
    • bt_rdev_pair_async()
    • bt_rdev_delete_async()
    • bt_rdev_refresh_services_async()
    • bt_disc_start_inquiry_async()
  • Added the following data types and functions for SDP support:
    • bt_rdev_sdp_cb
    • bt_sdp_class_t
    • bt_sdp_prot_t
    • bt_sdp_lang_t
    • bt_sdp_record_t
    • bt_sdp_list_t
    • bt_rdev_sdp_search_async()
    • bt_rdev_sdp_search()
    • bt_rdev_sdp_free()
  • Added the following functions to support headless Bluetooth triggers:
    • bt_ldev_enable_invoke()
    • bt_ldev_disable_invoke()
    • bt_ldev_invoke_decode_event()
    • bt_ldev_set_filters()

btgatt.h

  • Added the following data types and functions to support asynchronous operations:
    • bt_gatt_att_error_t
    • bt_gatt_characteristics_cb
    • bt_gatt_descriptors_cb
    • bt_gatt_included_services_cb
    • bt_gatt_read_value_cb
    • bt_gatt_write_value_cb
    • bt_gatt_characteristics_async()
    • bt_gatt_descriptors_async()
    • bt_gatt_included_services_async()
    • bt_gatt_read_value_async()
    • bt_gatt_write_value_async()

btgattsrv.h

  • Added the following data types and functions to support asynchronous operations:
    • bt_gatt_srv_read_request_cb
    • bt_gatt_srv_send_indication_cb
    • bt_gatt_srv_send_notification_cb
    • bt_gatt_srv_write_request_cb
    • bt_gatt_srv_send_indication_async()
    • bt_gatt_srv_send_notification_async()

bthid.h

  • Added the following data types and functions to support asynchronous operations:
    • bt_hid_service_connected_async_cb
    • bt_hid_interrupt_sent_cb
    • bt_hid_connect_async()

btle.h

  • Added the following functions to support headless Bluetooth triggers:
    • bt_le_enable_advert_invoke()
    • bt_le_disable_advert_invoke()
    • bt_le_invoke_decode_advert_complete()
    • bt_le_invoke_decode_advert_changed()
    • bt_le_enable_scan_invoke()
    • bt_le_disable_scan_invoke()
    • bt_le_invoke_decode_scan_result()

btspp.h

  • Added the following functions to provide an alternative method to set up an SPP connection:
    • bt_spp_get_service_port()
    • bt_spp_open_ex()
    • bt_spp_open_server_ex()

Camera Library


camera_api.h

  • Added the following enumerators to camera_devstatus_t:
    • CAMERA_STATUS_VIEWFINDER_SUSPEND
    • CAMERA_STATUS_VIEWFINDER_UNSUSPEND
    • CAMERA_STATUS_FLASH_LEVEL_CHANGE
    • CAMERA_STATUS_VIDEOLIGHT_LEVEL_CHANGE
    • CAMERA_STATUS_VIDEOLIGHT_CHANGE
  • Added the following enumerators to camera_error_t:
    • CAMERA_EVIEWFINDERFROZEN
    • CAMERA_EOVERFLOW
    • CAMERA_ETHERMALSHUTDOWN
  • Added the following enumerator to camera_feature_t:
    • CAMERA_FEATURE_OPTICALIMAGESTABILIZATION
  • Added the following members to camera_frame_bayer_t:
    • cadence_length
    • justification
    • pixels_per_cadence
  • Added the following enumerator to camera_imgprop_t:
    • CAMERA_IMGPROP_RENDERTOWINDOW
  • Added the following enumerators to camera_physprop_t:
    • CAMERA_PHYSPROP_APERTURE
    • CAMERA_PHYSPROP_FOCALLENGTH35MM
    • CAMERA_PHYSPROP_SENSORISO
  • Added the following enumerator to camera_powerdownreason_t:
    • CAMERA_POWERDOWNREASON_FORCECLOSE
  • Added the following type to support viewfinder modes:
    • camera_vfmode_t
  • Added support for Bayer bit justification:
    • camera_bayerjustify_t
  • Added the following functions to support viewfinder:
    • camera_get_supported_vf_framerates()
    • camera_get_supported_vf_frametypes()
    • camera_get_supported_vf_modes()
    • camera_get_supported_vf_resolutions()
    • camera_get_supported_vf_rotations()
    • camera_get_vf_mode()
    • camera_get_vf_property()
    • camera_get_video_frame_types()
    • camera_set_vf_mode()
    • camera_set_vf_property()
    • camera_start_viewfinder()
    • camera_stop_viewfinder()
  • Added the following function for handling zoom:
    • camera_get_zoom_ratio_from_zoom_level()

Camera Features Library


  • Added a Camera Features Library (camera_hdr.h) for working with high dynamic range (HDR) photos.

NFC Library


nfc.h

  • Added the following functions:
    • nfc_get_feature_set()
    • nfc_get_property()

nfc_gsma.h

  • Added a new header file with the following function:
    • com_gsma_services_nfc_get_property()

nfc_types.h

  • Added the following data types to support NFC GSMA requirements:
    • gsma_property_id_t
    • nfc_property_id_t

nfc_se_access.h

  • Added the following function:
    • nfc_se_is_uicc_ce_enabled()

nfc_se_transaction.h

  • Added the following functions:
    • nfc_se_parse_transactionV2()
    • nfc_se_transaction_check_source_gid()

Peripheral Discovery Library


peripheral_discovery.h

  • Added the following enum values to pd_class_t:
    • PD_CLASS_FILESYSTEM
    • PD_CLASS_HID
    • PD_CLASS_UNKNOWN
  • Added the following event type to pd_event_type_t:
    • PD_EVENT_UPDATE

For more information, see Peripheral Discovery Library.

Scoreloop Library


SC_ChallengesController

  • Added support for paging in challenges
  • Added the following functions:
    • SC_ChallengesController_GetRange()
    • SC_ChallengesController_HasNextRange()
    • SC_ChallengesController_HasPreviousRange()
    • SC_ChallengesController_LoadNextRange()
    • SC_ChallengesController_LoadPastChallenges()
    • SC_ChallengesController_LoadPreviousRange()

SC_ClientConfig

  • Added a convenience class to set up the configurable parameters of the client
  • Added the following functions:
    • SC_ClientConfig_Delete()
    • SC_ClientConfig_New()
    • SC_ClientConfig_SetGameCurrency()
    • SC_ClientConfig_SetGameIdentifier()
    • SC_ClientConfig_SetGameSecret()
    • SC_ClientConfig_SetGameVersion()
    • SC_ClientConfig_SetLanguages()
    • SC_ClientConfig_SetLogHandler()
  • Added the SC_LogHandler_t function type

SC_Client

  • Added the following functions:
    • SC_Client_CreateTermsOfServiceController()
    • SC_Client_NewWithConfig()

SC_ScoresSearchList

  • Added the SC_SCORES_SEARCH_LIST_LOCAL_COUNTRY data type

SC_Session

  • Added the SC_Session_GetTermsOfServiceState() function

SC_String

  • Added String API extensions
  • Added the following functions:
    • SC_String_NewWithBinaryData()
    • SC_String_NewWithCurrentDateTime()
    • SC_String_NewWithDateTime()
    • SC_String_GetBinaryData()

For more information, see Scoreloop.

Screen Graphics Subsystem Library


  • Added support for input sessions which provide APIs that enable apps to control how raw events are processed into higher-level events (for example, keyboard, gamepad, pointer, and joystick)
  • Added support of gesture recognition using input sessions

General (screen.h)

  • Added a screen color space types enum containing the values:
    • SCREEN_COLOR_SPACE_BT601
    • SCREEN_COLOR_SPACE_BT601_FULL
    • SCREEN_COLOR_SPACE_BT709
    • SCREEN_COLOR_SPACE_BT709_FULL
    • SCREEN_COLOR_SPACE_LRGB
    • SCREEN_COLOR_SPACE_SRGB
    • SCREEN_COLOR_SPACE_UNCORRECTED
  • Added a screen gesture types enum containing the values:
    • SCREEN_GESTURE_HOLD
    • SCREEN_GESTURE_SWIPE_DOWN
    • SCREEN_GESTURE_SWIPE_LEFT
    • SCREEN_GESTURE_SWIPE_RIGHT
    • SCREEN_GESTURE_TAP
    • SCREEN_GESTURE_ZOOM_IN
    • SCREEN_GESTURE_ZOOM_OUT
    • SCREEN_GESTURE_SWIPE_UP
  • Added the following event properties:
    • SCREEN_PROPERTY_DURATION
    • SCREEN_PROPERTY_DISPLACEMENT
    • SCREEN_PROPERTY_FLAGS
    • SCREEN_PROPERTY_SCAN
    • SCREEN_PROPERTY_SYM

Devices (screen.h)

  • Added the following device properties:
    • SCREEN_PROPERTY_ACCELERATION
    • SCREEN_PROPERTY_BALLISTIC_COEFFICIENTS
    • SCREEN_PROPERTY_DELAY
    • SCREEN_PROPERTY_DRIVER_CONTROL
    • SCREEN_PROPERTY_GESTURE_RECOGNITION
    • SCREEN_PROPERTY_MODIFIERS
    • SCREEN_PROPERTY_SPEED

Displays (screen.h)

  • Added the following display properties:
    • SCREEN_PROPERTY_DRIVER_CONTROL
    • SCREEN_PROPERTY_MODIFIERS
    • SCREEN_PROPERTY_REFERENCE_COLOR

Events (screen.h)

  • Added the following screen events:
    • SCREEN_EVENT_GESTURE
    • SCREEN_EVENT_MTOUCH_PRETOUCH
  • Added a screen event flag types enum containing the values:
    • SCREEN_FLAG_CAP_VALID
    • SCREEN_FLAG_DISPLACEMENT_VALID
    • SCREEN_FLAG_KEY_DOWN
    • SCREEN_FLAG_KEY_REPEAT
    • SCREEN_FLAG_POSITION_VALID
    • SCREEN_FLAG_SCAN_VALID
    • SCREEN_FLAG_SOURCE_POSITION_VALID
    • SCREEN_FLAG_SYM_VALID
  • Added the following event property:
    • SCREEN_PROPERTY_MODIFIERS

Windows (screen.h)

  • Added the following window properties:
    • SCREEN_PROPERTY_GESTURE_RECOGNITION
    • SCREEN_PROPERTY_REFERENCE_COLOR

For more information, see Screen Graphics Subsystem Library.

Security Builder Crypto Library


huecc.h

  • Added the following functions:
    • hu_ECGDSAKeySet()
    • hu_ECGDSANoHashSign()
    • hu_ECGDSANoHashVerify()

For more information, see Security Builder Crypto Library.

Smart Card Library


You can use this library to access the smart card functionality on the device, such as encryption, decryption and signing, session management, and retrieval of smart card and card reader information. For more information, see Smart Card Library.

Wi-Fi Service Library


wifi_service.h

  • Added the following function:
    • wifi_aggregator_set_profile_security_wep_key_str()

Back to Top


Changes in this release

Cascades | Core

Accessibility


The value Extended has been added to the A11yRole enumeration.

Identity Service


The value DoesNotExist has been added to the IdentityServicePropertyResult enumeration.

Phone


The value SecuVOICE has been added to the LineType enumeration.

Qt upgrade


Qt has been upgraded to 4.8.6. For highlights of the release, see the Qt Blog.

Web


If your app subclasses WebPage and uses QObject::connectNotify() and QObject::disconnectNotify(), you need to update your app:

Back to Top


Core | Cascades

BlackBerry Platform Services Library


navigator.h

  • Deprecated the following function; use invocation framework APIs instead:
    • navigator_open_file()

Bluetooth Library


btgattsrv.h

  • Deprecated the following data types:
    • bt_gatt_srv_read_req_cb
    • bt_gatt_srv_write_req_cb
  • Updated the following functions:
    • bt_gatt_srv_send_indication()
    • bt_gatt_srv_send_notification()
    • bt_gatt_srv_set_keepalive()

Camera Library


camera_api.h

  • The CAMERA_API_VERSION value has been incremented to 3. Apps that use APIs from a later release may have compatibility issues when run on an earlier version of BlackBerry 10. APIs are guaranteed to be backwards compatible, therefore APIs that you use will work on future versions of BlackBerry 10.
  • Deprecated the following enumerators:
    • CAMERA_IMGPROP_BURSTDIVISOR
    • CAMERA_IMGPROP_BURSTMODE
    • CAMERA_IMGPROP_BITRATE
    • CAMERA_IMGPROP_KEYFRAMEINTERVAL
    • CAMERA_IMGPROP_SLICESIZE
  • Deprecated the following functions:
    • camera_get_photo_vf_framerates()
    • camera_get_photo_vf_resolutions()
    • camera_get_photo_vf_rotations()
    • camera_get_photovf_frame_types()
    • camera_get_photovf_property()
    • camera_get_video_vf_framerates()
    • camera_get_video_vf_resolutions()
    • camera_get_video_vf_rotations()
    • camera_get_videovf_frame_types()
    • camera_get_videovf_property()
    • camera_set_photovf_property()
    • camera_set_videovf_property()
    • camera_start_photo_viewfinder()
    • camera_start_video_viewfinder()
    • camera_stop_photo_viewfinder()
    • camera_stop_video_viewfinder()

NFC Library


nfc.h

  • Updated the following functions to include the difference between feature sets:
    • nfc_get_tag_id()
    • nfc_get_tag_name()
    • nfc_llcp_register_connection_listener()
    • nfc_write_ndef_message_to_tag()

nfc_types.h

  • Updated the following data types:
    • battery_mode_t
    • nfc_channel_status_mask_t
    • nfc_event_type_t
    • nfc_handover_failure_reason_t

nfc_se_transaction.h

  • Deprecated the following function:
    • nfc_se_parse_transaction()

Peripheral Discovery Library


peripheral_discovery.h

  • Removed the following enum values:
    • PD_BUS_NUM_SUPPORTED
    • PD_CLASS_NUM_SUPPORTED

Scoreloop Library


  • Deprecated the SC_InitData_t data structure
  • Deprecated the following functions:
    • SC_ChallengesController_LoadChallengeHistory()
    • SC_GetBPSEventDomain()
    • SC_HandleBPSEvent()
    • SC_HandleCustomEvent()
    • SC_InitData_Init()
    • SC_InitData_InitWithSizeAndVersion()

For more information, see Scoreloop.

Screen Graphics Subsystem Library


  • The following can now be used as properties of device objects:
    • SCREEN_PROPERTY_FLOATING
    • SCREEN_PROPERTY_IDLE_STATE
    • SCREEN_PROPERTY_IDLE_TIMEOUT
  • The following can now be used as a property of display objects:
    • SCREEN_PROPERTY_SOURCE_SIZE
  • The following event type now also applies to sessions:
    • SCREEN_EVENT_JOG

For more information, see Screen Graphics Subsystem Library.

Back to Top


Fixed in this release

Cascades | Core

Cascades platform APIs


JI: 490079

The Weather app terminated unexpectedly when you tried to add a city while the screen reader was turned on.

JI: 478389

When you were using a MapView, no useful information was displayed in a location caption dialog box for the radius of a Geolocation, GeoDeviceLocation, GeoPolygon, or GeoPolyline on that MapView. Subsequently, you could not interact with a polygon, line, or radius circle.

JI: 466800

The networkOwnerIpAddress() and networkOwnerHardwareAddress() of WiFiDirect returned empty strings.

JI: 455682

Cascades maintains the visible and opacity properties of an ActivityIndicator. An ActivityIndicator became visible (opacity == 1) when it was running, and it was not visible (opacity == 0) when it stopped. As a result, you could not read or set the visible and opacity properties of an ActivityIndicator. If you read or set the visible or opacity properties, it caused unexpected results in your app.

JI: 441438

Generating static image maps with MapImageGenerator took longer than intended.

JI: 436711

In the ValueA11ySpecialization API, the maxValueText, minValueText, and valueText were not NULL by default as documented. Instead, these variables all contained empty strings by default.

JI: 377486

An InvokeTargetFilter allowed you to set the MIME type as '*' and register the filter, even if the filter was restricted.

JI: 377476

If you called the InvokeUpdateTargetFiltersRequest::updateTargetFilters() function, a finished() signal was not emitted.

JI: 377331

If you did not have a device password set and you locked your device and then swiped down from the top to put the device in bedside mode, when you tried to wake up the device by swiping up, the password dialog box was not presented or the UI did not respond to the swipe up.

JI: 150791

In a ListView, calling itemRemoved() and itemAdded() with the same index path caused the app to become unresponsive.

JI: 150165

When you used a validator in a password TextField and the validation failed, the errorMessage icon and text were not displayed.

JI: 134626

Progress toasts sometimes timed out incorrectly when show() or exec() was called repeatedly.

Back to Top


Core | Cascades

Camera


JI: 513997

The acl_to_text() and acl_from_text() functions weren't safe to use in multithreaded apps.

Documentation


JI: 617429

In the Security Builder Crypto Library documentation, the functions described for huecpvs.h and huecspeke.h were not available.

Headless apps


JI: 461658

The category type for headless apps was incorrectly returned as "service".

Installation


JI: 402296

When installing the Native SDK on Windows XP, you had to specify a different installation location, instead of using the default location. The folder name could not contain spaces.

JI: 402236

After uninstalling the Native SDK, you might have received a warning that some directories couldn't be removed.

OpenAL


JI: 403231

You could not create two contexts with different attributes by calling alcCreateContext(). Errors were produced after attempting to create the second context, you could no longer call alcOpenDevice(), and sound was no longer playable in other OpenAL apps.

Scoreloop SDK


JI: -

On occasion, when you were running the Setup Wizard for the first time either directly from the Games app or using a third-party game, when you clicked the Let’s Play button on the last page of the wizard, the Games app might have closed unexpectedly.

JI: 469817

You couldn't set a profile picture on the edit profile page of the Games app.

Back to Top


Known limitations

Cascades | Core

BBM Social Platform


Apps installed in the work space cannot access the BBM Social Platform. To connect to BBM, your app must be installed in the personal space.

When you retrieve the version number of the BBM Social Platform library that is running on a contact's device, the value returned might be unreliable if the device is running BlackBerry 10 OS version 10.2 or later.

QRC-based resources


If you are using QRC to improve performance in your apps, the new asset selection tool may affect your apps. If asset selection is used, an index file is generated automatically. However, this index file does not include contents that are only included in the QRC binary file. Instead, it lists only the files that reside in the assets directory in your project.

Workaround: Place a copy of QRC-compiled assets in your assets directory. The tool will then include these assets in the index file. When the device loads the app, the appropriate files in the binary are still used and the app continues to benefit from the performance gain of QRC.

Viewers in the invocation framework


Using the invocation framework, viewer-related classes (for example, InvokeViewerMessage and InvokeViewerRequest) and functions have been deprecated. The viewer-related classes and functions have been replaced by Card classes and functions. For more information on the Cards API, see the Cards documentation.

Back to Top


Core | Cascades

BlackBerry ID and Signing Authority linking


If you do not register your signing key and your BlackBerry PlayBook debug token with the same client ID, an error will be thrown when you try to link your BlackBerry ID account with a Signing Authority account. A fix will be available in a subsequent release.

FreeType


Applications using FreeType must add the following include path: $QNX_TARGET/usr/include/freetype2

Multimedia


If an app plays a media stream that's encrypted, the app won't allow video playback if an HDMI display is connected, due to security restrictions. This limitation will be resolved in a subsequent release.

There is a slight delay between tracks played as part of a playlist (approximately 0.5 seconds), even when the playlist includes only one track that is repeating.

OpenAL


  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alcCloseDevice() will fail if the device's contexts and buffers have not been destroyed. alcCloseDevice() actually destroys any contexts and buffers still associated with the device.
  • The function alcGetIntegerv() does not throw an error when retrieving ALC_MAJOR_VERSION and passing an invalid device pointer.
  • The function alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER) throws an error when invoked after the device has been closed. It should return the default device and ignore the device parameter.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the function alcGetString(), "Specifying NULL for deviceHandle when asking for ALC_EXTENSIONS will generate an ALC_INVALID_DEVICE error." In fact, no error is generated.
  • The OpenAL 1.1 Specification and Reference incorrectly states in the description of the function alBufferData() that, "An invalid size will result in an AL_INVALID_VALUE error." In fact, calling alBufferData() with an invalid size does not cause the INVALID_VALUE error.
  • When the function alcMakeContextCurrent() is called with an uninitialized ALCcontext pointer, it correctly returns ALC_FALSE, but does not generate an ALC_INVALID_CONTEXT error.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly lists AL_INVALID_VALUE as a possible error returned by the functions alGenBuffers() and alGenSources() when the array is not large enough to hold the number of items requested. In fact, no error is generated.
  • The function alSource3f() does not throw an AL_INVALID_VALUE error when invalid numbers are passed as parameters. Apps should perform their own validity checking.
  • The function alSourcef() throws an AL_INVALID_VALUE error for valid values when using AL_CONE_INNER_ANGLE and AL_CONE_OUTER_ANGLE.
  • No error is thrown when the function alutLoadWAVFile() is called without a current context.
  • The function alutGetError() does not return ALUT_ERROR_ALC_ERROR_ON_ENTRY when there was already an ALC error on entry to alutLoadMemoryFromFileImage().
  • In the OpenAL Programmers Guide, AL_DATA is incorrectly documented as a valid buffer property. An attempt to retrieve this property through alGetBufferi() and alGetBufferiv() will result in an AL_INVALID_ENUM error.
  • The deprecated function alutLoadWAVMemory() does not return the expected values.
  • The function alGetListenerfv() does not generate an error when called with an invalid value. Apps should perform their own validity checking.
  • The following attributes are set by the device and cannot be altered using the attribute list of the function alcCreateContext(): ALC_FREQUENCY, ALC_REFRESH, ALC_SYNC, ALC_MONO_SOURCES, ALC_STEREO_SOURCES, and ALC_MAX_AUXILIARY_SEN.
  • The OpenAL 1.1 Specification and Reference incorrectly states that the function alGetEnumValue() sets the error code AL_INVALID_VALUE if the specified enumeration cannot be found. In fact, this error is not set when an invalid enumeration value is specified.
  • The OpenAL Programmer's Guide - OpenAL Versions 1.0 and 1.1 incorrectly states that the functions alcSuspendContext() and alcProcessContext() produce the error ALC_INVALID_CONTEXT when called with a null or destroyed context. However, no error is generated.
  • The function alListener3f() does not generate an error when called with a NULL value for the AL_VELOCITY attribute. Apps should perform their own validity checking.
  • The function ALCGetProcAddress() does not return addresses for the specified context extension functions, even for valid functions. It always returns NULL.
  • The function alSourceQueueBuffers() queues invalid buffers. If you pass a NULL buffer to this function, it will queue the buffer and not raise an error, even though the buffer is not valid.

OpenSSL


BlackBerry 10 uses OpenSSL 1.0.1, with the following deviations from the standard implementation:

  • TLSv1.1 and TLSv1.2 support is disabled by default.
  • The heartbeat TLS extension has been disabled. This extension is described by RFC 6520, which is located at http://www.rfc-editor.org/rfc/rfc6520.txt.
  • The list of default SSL/TLS/DTLS ciphersuites has been altered.
  • Applications using SSL/TLS/DTLS connections get a default set of ciphersuites unless they explicitly specify which ciphersuites they want to support using SSL_CTX_set_cipher_list() or SSL_set_cipher_list().
  • The default set of ciphersuites has been changed to "ALL:!aNULL:!eNULL:!SRP:!SSLv2" which eliminates the SRP ciphersuites from the standard default set of ciphersuites provided by OpenSSL 1.0.1.
  • SSL_CTX_new(), which is used to create a new SSL_CTX object for TLS/SSL/DTLS negotiations, has been altered to disable TLSv1.1 and TLSv1.2 support by automatically setting the option SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TSLv1.2.
  • TLSv1.1 and TLSv1.2 will be disabled by default when using SSLv23_method(), SSLv23_server_method(), or SSLv23_client_method(). Applications that need TLSv1.1 support can clear the SSL_OP_NO_TLSv1_1 option by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1_1) or can use one of the following TLSv1.1-only methods: TLSv1_1_method(), TLSv1_1_server_method(), or TLSv1_1_client_method(). Applications that need TLSv1.2 support can clear the SSL_OP_NO_TLSv1_2 option by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1_2) or can use one of the following TLSv1.2-only methods: TLSv1_2_method(), TLSv1_2_server_method(), or TLSv1_2_client_method().

Payment Service


When you use the BlackBerry 10 Device Simulator to test your apps, your apps cannot communicate with the BlackBerry World servers to test certain Payment Service features. To test Payment Service features on the simulator, you should use Local Mode testing.

If you need to test your apps by interacting with the BlackBerry World servers, you need to run the app on a physical device and use a BlackBerry ID in sandbox mode. For more information about testing apps that use the Payment Service, see Testing in-app purchases.

Scoreloop SDK


Social networks are not supported in this Scoreloop release. APIs related to the following classes are unsupported:

  • SC_Message (Partial)
  • SC_Message_Controller (Partial)
  • SC_SocialController (Partial)
  • SC_SocialNetwork (Partial)

For more information on the Scoreloop SDK, see the following resources:

Back to Top


Known issues

Cascades | Core

BBM Social Platform


JI: 389356
JI: 389093

When the Connect to BBM permission (Settings > Security and Privacy > Application Permissions) is toggled from enabled to disabled or from disabled to enabled, the registration and permission states are not updated. This issue relates to JI: 6118318.
Workaround: Restart the app if permissions have been modified.

Cascades Exporter plug-in for Adobe Photoshop


JI: 508525

When using Cascades Exporter with an installation of Adobe Photoshop that uses French as the default language, a "Problem null" dialog box might be displayed when you export a project, indicating that the export process fails.

Cascades platform APIs


JI: 632555

The captureDisplay() function does not display the Permission Required dialog and returns PermissionDenied when using the simulator.

JI: 627923

While you are developing your app, when you set Application::setAutoExit(false) and then close the app, your app may appear to be frozen but it is waiting for debugging to start.

JI: 624014

The SystemProgressToast::autoUpdateEnabled property is not available in the bb.system 1.2 library when using the simulator.

JI: 614953

The AutoCapitalize value doesn't work for the inputField of a SystemPrompt dialog box.

JI: 609843

In some cases, the memoryUsedByCurrentProcess() function might not return the correct value for the amount of memory that is being used.

JI: 591348

When you restart your device, a system-started headless app fails to fire notifications intermittently.

JI: 567242

If you perform a Box2Box transfer of a folder using InvokeManager, the folder is changed into a file and then transferred.

JI: 567047

The Push Service does not work on the simulator.

JI: 549616

The Smart Card API allows you to register Application Type and not just Headless and Service Type.

JI: 534927

When using an SKU to purchase an item, the purchase receipt shows an empty digital good ID.

JI: 485377

No matter what orientation the device is in, no orientationChanged() signal is emitted when the orientation of the device is changed.

JI: 481294

If you have a headless app that detects SMS and geofencing triggers, the app still gets invoked even if the permissions are disabled.

JI: 480352

Invoking a video chat such as BBM Video from a headless app brings the UI to the foreground.

JI: 468275

Opening a large number of cards can cause the device to become unresponsive.

JI: 449197

GeoPolylines and GeoPolygons don't render if they cross 0, 180, or -180 degrees longitude or latitude.

JI: 449189

Dotted and dashed edge styles don't render when you're using GeoDeviceLocation.

JI: 449188

Dotted and dashed edge styles don't render when you're using GeoPolygon.

JI: 449170

If you're using a GeoPolygon, inner boundaries don't render.

JI: 389904

When reading a URI tag that contains "pin", the BBM app doesn't handle the content of the tag, but the Smart Tags app does and invokes the URI.

JI: 284877

An established TCP connection over the cellular network interface fails when Wi-Fi is enabled on a device that is initially connected to a mobile network with Wi-Fi disabled.

JI: 196223

On the simulator, if you start the controller from the installation folder and connect it to the simulator, then launch an app, you may not be able to switch the charging state to "charging."

JI: 150783

There is missing documentation on QtNfcSubset classes including some enumerations and constructors in QNdefRecord, QNdefMessage, QNdefNfcSmartPosterRecord, QNdefNfcTextRecord, and QNdefNfcUriRecord.

JI: 150357

The ArrayDataModel::move() function does not work as expected.

JI: 149929

When you set a URL property for a QML object, file paths are case-sensitive when they should be case-insensitive. For example, “FILE:app/native/assets/contacts.json” and “file:app/native/assets/contacts.json” should be treated the same, but are not. Also, a URL that’s defined in QML may result in a URL that has part of the path duplicated.

JI: 146568

In QML, the connect keyword cannot be used to connect the touch() signal of a Control to a function.

JI: 144760

The ArrayDataModel::indexOf() function sometimes returns 3 in cases where it should return -1.

JI:   86080

On the BlackBerry 10 Device Simulator, if you connect the windowGroupInvisible() and processStateChanged() signals and then minimize the app, neither signal is emitted.

JI:   85749

InvokeRequest::setMetaData() doesn't work correctly if a QByteArray as part of the QVariantMap is passed in.

JI:   85463

When using cards in an app that is run on the BlackBerry 10 Device Simulator, rotating the simulator may cause the UI to become distorted.

JI:   84881

When you add a custom URI to an InvokeTargetFilter and then retrieve the list of custom attributes, the size of the custom attribute list is reported as 0. The documentation does not specify that the returned size will be 0.

Cascades UI framework


JI: 508482

You may see blank entries in the BlackBerry Hub.

JI: 388259

When you have a WebView and call storage()->clear(), the WebView storage is not cleared.
Workaround: Use a render fence to set up WebView storage after the WebView has been rendered.

JI: 381511

When the keyboard is displayed in an app (for example, if a user taps a text field), the transition of the page content is not in sync with the appearance transition of the keyboard.

JI: 381185

When calling clear() on an empty ArrayDataModel, the itemsChanged() signal is emitted.

JI: 381402

StandardListItem renders text from right-to-left languages left justified.

JI: 150617

If BlackBerry Balance is locked, copying from the personal space to the work space within a share email card results in an error saying you're not allowed to copy work content into a personal email.

JI: 150377

When creating CustomControl objects, the Container that is set as the root is being wrapped by a phantom Control.

JI: 149804

Using a DropDown control and trying to remove the option at index 0 while the option at index 1 is selected may cause the app to terminate unexpectedly.

JI: 149613

Calling bb::cascades::QmlDocument::create() in a non-Cascades app may cause the app to terminate unexpectedly.

JI: 149509

The setKey() function in the Shortcut class can erroneously accept invalid strings (for example, strings that don't correspond to an acceptable shortcut).

JI: 148647

If an implicit or explicit animation occurs immediately after an orientation change of the device, the animation does not play but instead jumps to its final position. For example, this issue may occur if animations are started from the rotationCompleted() or orientationChanged() signals.

JI: 148249

When a ListView control's flick mode is set to a non-default value and a slot function is connected to the flickModeChanged() signal, calling the resetFlickMode() function doesn't set the flick mode back to the default value and no signal is emitted.

Back to Top


Core | Cascades

Camera Library


JI: 591369

If the battery level is below 3300 mV, the flash still flashes.

JI: 492681

In the Camera Library offline documentation, the following functions and data type should not have been included:

  • camera_get_supported_video_vf_modes()
  • camera_get_video_vf_mode()
  • camera_set_video_vf_mode()
  • camera_video_vf_modes_t

Documentation


JI: 393737

The BlackBerry 10 Native SDK documentation may not appear in Dynamic Help in the Momentics IDE. To access help topics from Dynamic Help, right-click a topic and click Open in Help Contents. Alternatively, you can always access the documentation by clicking Help > Help Contents in the IDE or by visiting the Documentation website.

JI: -

The documentation that is embedded in the library header files for the following APIs may not be the most recent:

For the most up-to-date documentation, refer to the online documentation for each library.

JI: -

We are hard at work creating an awesome UI experience for you! While we are doing this, some references to the BlackBerry 10 UI, including screenshots, may not reflect what you see in the current software.

JI: -

In previous releases, the most recent version of the BlackBerry Platform Services library (libbps) was bundled with the Native SDK. This version was newer than the version on the target OS. To ensure the correct BPS library version was used by applications at run-time, projects in the Native SDK 1.0 would:

  • Use BPS headers from the $QNX_TARGET/../target-override location for compilation,
  • Link the libbps.so from the $QNX_TARGET/../target-override location to generate the application executable, and
  • Package the libbps.so from the $QNX_TARGET/../target-override location in the BAR.

JI: -

As of the Native SDK 2.0.0 release, BPS no longer resides in the target-override location. The BlackBerry 10 OS and BlackBerry 10 Native SDK versions of this library are in sync. If you have applications targeting BlackBerry 10 that you no longer want to support on PlayBook 1.0.x, you should remove the libbps.so.1 asset from bar-descriptor.xml and target the BlackBerry 10 version of the Native SDK. To verify, select the QNX page in the project properties dialog box. Otherwise, packaging of the BAR file will fail because it will not be able to find the libbps.so file to include in the BAR.

General


JI: 673493

When you have several apps open and you swipe to view the BlackBerry Hub, you may see a black screen.
Workaround: Close all open apps and wait for the screen to refresh.

JI: 633678

Sometimes an email sent from Microsoft Outlook might be received with errors in the message.

JI: 616187

When you open an email, the time and date information overlap the sender's name.

JI: 615489

In some cases, your device might reset unexpectedly when trying to answer an incoming video chat call from a BlackBerry PlayBook tablet.

JI: 606281

If you try to listen to radio station 108.0, you get an error.

JI: 602576

Sometimes, your BlackBerry device won't pair properly with a Bluetooth enabled device, such as a headset.

JI: 600751

If you are listening to music over a Bluetooth connection, the music might skip at frequent intervals.

JI: 578240

Sending a URL that ends with a closing bracket ')' or is followed by punctuation is not parsed correctly.

JI: 547323

While watching to a video file, if there is considerable jiggling of the wires, the volume increases and you can't turn it down.

JI: 450995

If you save an EAS contact to your address book and change the name, and you send an email to that contact, the name might change to the global name in the BlackBerry Hub.

Installation


JI: 394200

When you perform a software update, you must accept the security warning about installing unsigned software and continue the installation.

OpenAL


JI: 403249

When using OpenAL to play sound on the device and an HDMI cable is plugged in, the sound does not transfer on to the connected device.

Permissions


JI: -

In the IDE help, the correct Record Phone permission is read_phonecall_details and not read_phone_call_details.

Scoreloop SDK


JI: 667474

The "score formatter" parser expects the mode and level definitions in numerical order. You can modify the score formatter file that you downloaded from Scoreloop and then add it to the app as a resource. However, if the order is not maintained and Scoreloop APIs that rely on score formatter parsing are used, the app will terminate unexpectedly.

Back to Top


Core

Native SDK 10.2 Release Notes

Native SDK 10.1 Release Notes

Native SDK 10.0 Release Notes

Back to Top


Last modified: May 15, 2014