This section lists the height in pixels and device-independent pixels for the status bar at the top and the system bar at the bottom of a NOOK device screen. We recommend not specifying values in terms of absolute pixels. Instead use the density-independent pixel values so that your app scales properly on different screen sizes and resolutions. Bar sizes are the same for Portrait and Landscape modes.
The following are the current values (subject to change):
Status - Top
System - Bottom
Status - Top
System - Bottom
NOOK Tablet NOOK Color
System - Bottom - The Status bar combines with the System bar
Pixels indicates the bar height, "dp" stands for density-independent pixel, and "dpi" indicates dots per inch or density.
The formula to determine pixels is: px = dp * (dpi / 160)
Note NOOK HD and NOOK HD+ do not support true full screen mode. The bottom system bar always displays. Therefore, the NOOK "n" key is the home button and not the back key since the system bar contains a back key that always displays.
The NOOK Color and NOOK Tablet used /mnt/media as their storage location. The NOOK HD devices now follow Android's recommended implementation, which makes it easier for NOOK App Developers to follow the Android Developer Guidelines without significant changes to resource layouts. In Android Ice Cream Sandwich, SD card storage now has an internal and external component. Internal SD card storage is equal to the storage on a NOOK device minus the Android SDK and NOOK custom code. The external SD card is the card that users can add to their NOOK device. NOOK devices cannot install an app from the external SD card, but apps can determine if the external card exists and write to it if necessary.
Important Because of these changes, apps need to verify the device before storing or retrieving files:
Choose the correct device - When coding for all NOOK devices, /mnt/media points to the internal storage for older devices, which causes newer NOOK devices to error out. Conversely, using /mnt/sdcard for the older devices means accessing external storage on the NOOK Tablet or NOOK Color and also the newer devices' internal location.
View card storage size - On the NOOK HD and NOOK HD+, the internal SD card storage is as large as the NOOK device's storage size minus the size of the Android OS plus the NOOK custom code. You can use adb shell df to determine available internal SD card storage for a NOOK device.
Internal storage - The internal card storage encompasses all the folders that are visible when you view the device including My Files, apps you install using the adb install command, screenshots, and so on.
NOOK HD & NOOK HD+ apps now use the Intent.ACTION_SET_WALLPAPER API, for example:
Intent i = new Intent();
i.setAction( Intent.ACTION_SET_WALLPAPER );
startActivity( i );
Note You can also use the WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER API; however, the recommended ACTION_SET_WALLPAPER API works with both regular and live wallpapers and lets users choose a wallpaper from the gallery. Whereas ACTION_LIVE_WALLPAPER_CHOOSER only works with live wallpaper.
When ACTION_SET_WALLPAPER runs on a NOOK device, users see this view:
Important The NOOK Emulator does not support the Wallpaper API, SHOP Details API, or DRM API. Only test NOOK APIs on a NOOK device.
NOOK Tablet & NOOK Color apps can continue to use the NOOK Wallpaper API. For more information, see Wallpaper API.
Features found on most Android devices are not present on these devices; for example GPS, compass, vibrator, camera, etc. The devices in all respects conform to the Android Compatibility Definition Document (CDD) in terms of how the APIs for these non-included features are handled (see CDD section 7). Developers should be careful to check for null returns from APIs for unsupported features.
Removable Memory: The NOOK HD and NOOK HD+ permit removable SDXC cards of up to 64 GB. The cards can be formatted for exFAT or FAT32. For FAT32 cards, if you format the SD card outside the NOOK device, the maximum file size that you can store on the card is less than 4 GB. If you format the SD card using the NOOK device, you can store files on the card greater than 4 GB. You can format an SD card in the NOOK device by clicking Settings > Storage Management > SD Card > Erase SD Card. Formatting an SD card in the NOOK HD or NOOK HD+ sets the formatting to exFAT.
Note exFAT formatted cards cannot be used in the NOOK Tablet and NOOK Color.
1.4.1 User Agent Strings
The user agent strings for NOOK devices are:
NOOK HD - Mozilla/5.0 (Linux; Android 4.0.4; BNTV400 Build/IMM76L) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31
When porting to the new devices, issues occur even though the new devices are fully compatible Android devices.
2.1 Android OS Version
The new devices are based on Android 4.0, Ice Cream Sandwich. There are significant differences between this and Android 2.3, Gingerbread, as used on NOOK Tablet. Developers are encouraged to read the platform notes for each intervening release:
In addition, Android changed the way bitmap memory is allocated. Prior to Android 3.0, bitmaps were allocated in native memory, with only a small descriptor kept on the Java heap; now the entire bitmap is allocated from the Java heap. This can lead to the Java heap being used up very quickly if multiple bitmaps are kept in memory.
Be sure to call recycle() and set the reference to null for any bitmap that is no longer required. Also, note that if an ImageView contains a bitmap that has been recycled, the bitmap data is still retained in memory until you call setImageBitmap(null) on the ImageView. This may even be the case if you call the setImageResource() or setImageDrawable() functions.
Retain a bitmap only as long as necessary.
If you no longer need a bitmap (as with any object), make sure that there are no lingering references to it anywhere. This can easily happen if a bitmap is assigned to a UI object.
Where appropriate, sub-sample an image while loading it, rather than scaling it down when displaying it.
Process images off the UI thread. The much larger image sizes on the large NOOK HD displays can cause serious usability issues if you process images on the UI thread. See the Android article, Displaying Bitmaps Efficiently.
If multiple images need to be cached, manage the cache carefully. Use the LruCache as described in the Android article, Displaying Bitmaps Efficiently.
Handle app configuration changes and where appropriate, pass app data (such as an image cache) through the configuration change. See the Android article, Displaying Bitmaps Efficiently.
2.2.1 Backing Bitmap RAM Increase
A backing bitmap created to cover the NOOK Tablet screen occupies about 2.3 MB of RAM. On the new devices, this increases to 9.4 MB, an increase of 4 times. Clearly this may have a very significant impact on apps that use bitmaps.
Never rely on finalizers to free memory. They are unpredictable, and even when they are called, require multiple garbage collection (GC) passes to activate. Use explicit dispose() or recycle() calls. Avoid using finalize() as it impacts the performance of the GC.
Use the Android DDMS utility to monitor memory allocations and de-allocations, and find memory leaks (caused by inadvertently keeping a reference to an object). See Tracking Memory Allocations.
Playback of at most ONE stream of H.264 video at a time is guaranteed to be supported. This is due to a limitation on the number of reference frames that the platform can store:
Max. Reference Frames
These figures are equal to the maximum number of reference frames which an H.264 stream can use at level 4.1; therefore only one stream can be guaranteed to play at once.
Note A paused stream is still essentially playing, as it is continues to hold its resources including reference frames. Therefore, this restriction applies to paused videos where users can only pause or play one video at a time.
Users can play more than one stream at a time if users use fewer than the allowed number of reference frames, which is common at 720p. The total number of reference frame limits is in the table at the start of this section.
Create all content with H.264 video and AAC audio in an MPEG4 (.mp4) container. If you need to show content full-screen, such as for demo content, the resultant frame size is different from the standard 1920x1080. Recommended video formats are:
General Content (shows, etc.)
Up to 1920x1080
Up to 30p
Up to 40 Mb/s
16:9 == 1.777...
Full Screen - NOOK HD+
Up to 30p
Up to 40 Mb/s
3:2 == 1.5
Full Screen - NOOK HD
Up to 30p
Up to 40 Mb/s
16:10 == 1.6
Note The NOOK HD+ cannot decode video that is more than 1080 pixels high and 1920 wide. Therefore, for "big" content (demo videos, etc., where you want to showcase the device's screen), you have two choices:
Use 1920x1080 -- The video displays pixel-for-pixel, and therefore is as sharp as possible, but has 200-pixel black bands at the top and bottom.
Use 1620x1080 -- The video scales up by 18.5%, resulting in some loss of quality, but fills the screen.
On the NOOK HD, like the NOOK HD+, the display is not in the standard 16:9 aspect ratio; so again there are two choices for "big" content:
Use 1920x1080 -- The video scales down to 75% of its original size, and looks sharp, but has 80-pixel black bands at the top and bottom.
Use 1440x900 -- The video displays pixel-for-pixel, and therefore is as sharp as possible, and fills the screen.
Due to the very high quality displays on these devices, ensure that your "showcase" content, such as demo videos, welcome videos, etc. are encoded at a high quality, to show off the device's capabilities. This is the size of the encoded video: 16 Mb/s is 2 MBytes/second, or 120 MBytes/minute, which of course is a lot. For "long-form" content, such as movies, this is impractical – such rates are too high to stream, and too large to store locally.
We recommend the following minimum bit rates for "showcase" content, and for "long-form" content:
Minimum Bit Rate
Better Bit Rate
Short “showcase” content
NOOK HD+ fullscreen showcase
NOOK HD fullscreen showcase
Long-form content (shows)
24p - 30p
0.10 – 0.16
Note The "Bits/pixel" column gives an absolute indication of video quality regardless of frame size. There are 24 bits per pixel in the original video; hence 0.10 bits per pixel compressed is a compression ratio of 0.42%. Blu-Ray quality is 0.64 bits per pixel.