Grinning Face with Smiling Eyes

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e404

58372

Unified (iOS 5):

01F601

128513

Happy and content as ever with self. This is the LiL Jon face showing his Grill. #WINNING!In iOS 5 this emoji changed from “Face with Look of Triumph” to it’s current name, or I was wrong to give it that name in the first place. I don’t think I was wrong, but I could have been wrong. It has happened before. Either way, it’s an awesome face. Thank you Apple!

Disappointed Face

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e058

57432

Unified (iOS 5):

01F61E

128542

Depressed or discouraged by the failure of one’s hopes or expectations. This is SMH #2.
iEmoji old name: Very sad
Softbank: 表情(がっかり) 「表情(gatsukari)」U+E058
DoCoMo: ‘Disappointed face’ がく～(落胆した顔) 「gaku～(落胆shita顔)」U+E6F2

Confounded Face

Confounded Face

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e407

58375

Unified (iOS 5):

01F616

128534

This is the Fail face! Confused, frustrated, bewildered. To Fail.
iEmoji old name: Starting to Cry. An expression that crying is inevitable.
Softbank: 表情(困惑) U+E407
Google: U+FE33F

Disappointed but Relieved Face

Disappointed but Relieved Face

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e401

58369

Unified (iOS 5):

01F625

128549

To look down upon something but there is hope. SMH#3
iEmoji old name: Sad with small tear. Shedding a single tear.
表情(やれやれ) 「表情(yareyare)」 U+E401
check it out:

Pouting Face

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e416

58390

Unified (iOS 5):

01F621

128545

Pouting never looked so angry!In iOS 5 the name changed to pouting face. Your guess is as good as mine on this one.iEmoji Definition:
The person is very angry with something. You should probably back off.Previous iEmoji Name: Red in the face with extreme anger

Sleepy Face

Sleepy Face

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e408

58376

Unified (iOS 5):

01F62A

128554

A balloon dangling from one nostril (a “snot bubble”) indicates sleep. Said bubble inflating and deflating as they snore. Usually done when a character sleeps at an inappropriate moment (e.g. during class) [cite: manga iconography wiki]
iEmoji old name (way off): Tear shed but getting over it. Sad with a tear but not crying that bad.(lol)
Softbank: 表情(あくび) 「表情(akubi)」U+E408
DoCoMo: ‘Sleepy (sleep)’ 眠い(睡眠) 「眠i(睡眠)」U+E701
Google: U+FE342

Face with Medical Mask

Face with Medical Mask

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e40c

58380

Unified (iOS 5):

01F637

128567

They are sick, contagious, they are trying to be courteous by not spreading disease.
Unicode note: Under the weather (wearing a breathing mask)
iEmoji old name: Won’t say a word. Mouth is covered. They won’t talk.
Unicode old name: Face with Mask
Softbank: 表情(マスク) 「表情(masuku)」U+E40C
Google: U+FE32E

Imp

Imp

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e11a

57626

Unified (iOS 5):

01F47F

128127

The emoji has horns so which look vengeful but it is a Cute Devil Emoji, so don’t worry.
Unicode note: Devil (cute)
Softbank: 悪魔 U+E11A
Google: U+FE1B2

Beating Heart

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e327

58151

Unified (iOS 5):

01F493

128147

Pulsating heart emoji. “I can hear your heart beat.” If that isn’t the definition of love then I don’t know what is. What is love!This emoji icon was the replacement for “Sparkling Heart” in iOS 5 but is still available and accessible like many others!

Heart with Arrow

Heart with Arrow

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e329

58153

Unified (iOS 5):

01F498

128152

Love that has been hit with Cupid’s arrow. Hopelessly in love.
iEmoji old name Arrow through Heart
Unicode note: heart with an arrow through it
Softbank: ハート(矢がささる) 「haato(矢gasasaru)」U+E329

Glowing Star

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e335

58165

Unified (iOS 5):

01F31F

127775

5 pointed star with mystical and magical essence. Perfection. Womp.Sparkes, yellow triangles (that’s the glowing, pulsating part) were added to this star and without a doubt we have grown to love them.In iOS 5 this image was updated. The old star is now called “White Medium Star” and is still accessible today!Unicode note: Animated pulsating star in orange color
Softbank: 輝く星 「輝ku星」U+E335
DoCoMo: [☆]

Splashing Sweat Symbol

Sweat. Call it what you want but Whatever it is it is wet. [insert innocent emoji]
Softbank: 汗 U+E331

Multiple Musical Notes

Multiple Musical Notes

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e326

58150

Unified (iOS 5):

01F3B6

127926

A few Music eighth-note symbols.Previous iEmoji name: Song, Music

Musical Note

Musical Note

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e03e

57406

Unified (iOS 5):

01F3B5

127925

Two eighth note symbols connected together by a beam.Previous name: Generic Music Notes

Fire

Fire

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e11d

57629

Unified (iOS 5):

01F525

128293

A fire or burning icon.

Dog Dirt

Dog Dirt

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e05a

57434

Unified (iOS 5):

01F4A9

128169

I’ve seen this one before and I’m not sure what to think about it. I kinda want to put it in a bag and light it on someone’s doorstep but I could be wrong.
iEmoji old name: not going to guess
Unicode old name: Dung
Unicode name: Pile of Poo
Softbank: ダッシュ 「datsushiyu」U+E330

OK Hand Sign

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e420

58400

Unified (iOS 5):

01F44C

128076

Only the Thumb and index finger connected to make a circle with no additional gesture usually means you’re perfect, don’t worry about it.
It’s only a coinsidence that the hex for this Apple/Softbank emoji is e420
iEmoji old name: Okay sign.
Softbank: 手(オッケー) 「手(otsukee)」U+E420
DoCoMo:’Accept’ 決定 U+E70B
KDDI: ＯＫ！U+EAD4

Fisted Hand Sign

Fisted Hand Sign

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e00d

57357

Unified (iOS 5):

01F44A

128074

Also a fisted hand! Like you gunna punch. Could also mean Middle Finger! This Emoji represents defiance or solidarity. Them be fightin’ emojis.
iEmoji old name: Middle Finger
Unicode note: Punch
Softbank: 手(パンチ) 「手(panchi)」U+E00D

Raised Hand

Unicode Description: Paper in Rock, Paper, Scissors game.
iEmoji old name: Stop hand. A hand with fingers together and palm facing you. Depends on the context.

Open Hands Sign

Open Hands Sign

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e422

58402

Unified (iOS 5):

01F450

128080

Unicode description: Ohhaa! Good Morning Gesture. Open Hands with the Money Sign.
iEmoji old name: Open Hands
Softbank: 手(おっはー) 「手(otsuhaa)」

Fuck You LoL

Fuck You LoL

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e22e

57902

Unified (iOS 5):

01F446

128070

This icon looks most like the middle finger. Since this emoji is a must have, so it will be.

Point Down “Its going down right here”

Point Down “Its going down right here”

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e22f

57903

Unified (iOS 5):

01F447

128071

Hand pointing downwards. This is Emoji swag for this is where the party is at. When you gets here we are going to get drunk, consume illegal substances like weed and coke, and trash the place completely.

Point Right

Point Right

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e231

57905

Unified (iOS 5):

01F449

128073

Hand pointing to a word or icon to the right.

Point Left

Point Left

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e230

57904

Unified (iOS 5):

01F448

128072

Hand pointing to a word or icon to the left.

Person Raising Both Hands in Celebration

Person Raising Both Hands in Celebration

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e427

58407

Unified (iOS 5):

01F64C

128588

Raising both hands. Banzai! Winning. (wow, lots of winning emojis we have!)
DoCoMo: ＼(^o^)／
iEmoji old name: Chinese Finger Trip Got My Thumbs. (wow, terrible guess lol) This is an image of the well known trick the Chinese have mastered putting your thumbs in a device where it is painful to remove them without patience or help.

Pray

Pray

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e41d

58397

Unified (iOS 5):

01F64F

128591

Hands together as if you were praying. Please.Unicode name: Person with Folded Hands

Hand with Up Pointing Index Finger

Hand with Up Pointing Index Finger

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e00f

57359

Unified (iOS 5):

261D

9757

I’m number 1! Winning!
Unicode note: No.1
iEmoji old name: Small hand pointing up. A different hand this time pointing up at something. It does not have a white glove so it has nothing to do with Michael Jackson.
Softbank: 手(指差し) 「手(指差shi)」U+E00F
Unicode: U+261DUnicode Name: White Up Pointing Index

Flexed Biceps

A man’s arm showing off or flexing a bicep. Strong arm of the law. Could also be roll up a sleeve or showing how strong you are.
iEmoji old name: Flexed Bicep, Strong
Unicode note: strong, muscled

Man Walking Left

Man Walking Left

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e201

57857

Unified (iOS 5):

01F6B6

128694

A man with a red shirt and blue pants casually walking to the left.Unicode name: Pedestrian

Man Running Left

Man Running Left

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e115

57621

Unified (iOS 5):

01F3C3

127939

A white man with a red shirt and blue pants running somewhere. A runner.

Man and Woman Holding Hands

Man and Woman Holding Hands

Emoji Code Set

Hexidecimal (hex)

Decimal (dec)

Softbank (pre iOS 5):

e428

58408

Unified (iOS 5):

01F46B

128107

An obviously Japanese (and heterosexual) couple walking together. Probably strolling in the park. She is wearing a fashionable orange dress he is wearing a blue shirt and dark kakis.Old iEmoji Name: A Couple Walking Together

This is how to set the connection timeout for TCP connections through the BlackBerry MDS Connection Service.[1]

When making a Transmission Control Protocol (TCP) connection from a BlackBerry smartphone, the default connection timeout is 2 minutes. This value takes into consideration the possible time it can take a BlackBerry smartphone to be granted access to send data on the wireless network, and for the connection to travel over the wireless network over the Internet to the destination server and back again. In some circumstances, this value is too long. When making a socket or Hypertext Transfer Protocol (HTTP) connection through the BlackBerry® Mobile Data System (BlackBerry MDS) Connection Service, it is possible to set the timeout value to a lower value than the value that is configured in the BlackBerry MDS Connection Service. By default, the value is 2 minutes. It is not possible to extend beyond the limit configured on the server. Use theConnectionTimeout parameter to specify the timeout value. This parameter accepts a numerical value in milliseconds. The following is an example of an HTTP connection with a timeout value of 1 minute:

Note: The ConnectionTimeout parameter is not supported by direct TCP connections or connections through a Wireless Application Protocol (WAP) gateway. Only TCP connections, made through the BlackBerry MDS Connection Service, support this parameter.

Description

On a BlackBerry device, there are a number of backdoor sequences that can be invoked when the home screen is displayed (such as holding the ALT key and typingESCR to show the BlackBerry device information). With JDE 4.2, this same backdoor functionality can be included in any screen via two new methods in the net.rim.device.ui.Screen class that can be overridden: openProductionBackdoor(int backdoorCode) and openDevelopmentBackdoor(int backdoorCode). The difference between the two methods is that openDevelopmentBackdoor(int backdoorCode) will only be invoked if the application is run in the simulator (but if both methods are implemented, then both methods will be invoked from within the simulator).

The following is an example implementation that will cause VAKS to be used as a backdoor sequence.

Note: This backdoor sequence will only be executed if the screen implementing this code is in the foreground.

Background

You may have noticed how certain strings are underlined in native BlackBerry smartphone applications. For example, phone numbers are underlined or highlighted when composing or reading messages. Once selected, these special strings are assigned a context-sensitive menu item, for example call a phone number. Third-party applications can take advantage of this functionality to add custom context-sensitive menu items to standard BlackBerry smartphone applications. These menu items can be used to launch a custom application, open the BlackBerry® Browser to a specific URL, send a message, or do any number of other things.

This functionality can be achieved by using one of two application programming interfaces (APIs):

net.rim.device.api.util.StringPattern – This API was introduced in BlackBerry Device Software 4.0 and requires you to implement your own string matching algorithm.

net.rim.blackberry.api.stringpattern.PatternRepository – This API was introduced in BlackBerry Device Software 4.3.0, and allows the use of Perl style regular expressions.

The samples provided in this article match a United States zip code and allow the BlackBerry smartphone user to lookup more information on the zip code.

net.rim.device.api.util.StringPattern – This class represents the pattern that you want to recognize. It can be as simple as a zip code, or as complex as an address in its various forms. To write an effective StringPattern, remember that each character typed into the applicable field will be parsed by your implementation. As such, efficiency is important in this class.

net.rim.device.api.ui.component.MenuItem – The MenuItem includes the majority of the implementation for this capability. The MenuItem typically includes or references the action that will occur once a match is found and invoked by the BlackBerry smartphone user. For example, the run method for the MenuItem is invoked when a zip code has been recognized and the BlackBerry smartphone user selects the Lookup Zipcode menu item.

net.rim.device.api.ui.component.ActiveFieldCookie – The ActiveFieldCookie is a container object that allows the StringPattern class to transfer the context-sensitive information to the MenuItem. It also allows the implementation to add the appropriate menu item, or multiple menu items, when a string pattern match is found.

net.rim.device.api.util.Factory – The implementation of the Factory class links the StringPattern to the ActiveFieldCookie when a match is recorded in the StringPattern implementation. Typically, the Factory implementation is quite compact but a necessary requirement for the system.

The ZipCodeLookupSample class provides the starting point for the application. The application is configured as an auto-start system module so that all of the components can be registered upon start up. It is important to note that the main class initializes all of the required components described above, and has been implemented carefully to only initialize these components once.

net.rim.blackberry.api.stringpattern.PatternRepository

The PatternRepository source code sample uses the API that was introduced in BlackBerry Device Software 4.3.0 and allows the use of regular expressions for string matching, which makes the sample much simpler than the prior sample.

There are two major components required for this implementation

net.rim.blackberry.api.stringpattern.PatternRepository – This class will register a Perl-style regular expression or a specific string with the systems pattern repository. When a match is found the ApplicationMenuItem(s) associated with the pattern will appear in the current application’s menu.

net.rim.blackberry.api.menuitem.ApplicationMenuItem- The ApplicationMenuItem includes the action that will occur once a match is found and is invoked by the BlackBerry smartphone user.

The application is once again configured as an auto-start system module. This is done to register the regular expression and menu item with the systems pattern repository upon system start up.

So, loading pages on your BrowserField2 application is taking quite some time and yet your app is repeatedly loading the same pages over and over again spending network bandwidth and providing a poor performance experience to users?

You’ve been thinking of implementing a web cache but has no idea how to extend the BrowserField2 (a.k.a. BF2) API for that purpose?

This article is definitely for you!

Goal

This article discusses how the BrowserField2 API (BlackBerry® Device Software 5.0 and later) can be properly extended to implement a simple web cache mechanism that will speed up the loading of pages and resources in a BF2 application significantly reducing bandwidth usage, server load, and ultimately improving the user experience. The code provided (please check the attachments) should serve as a basis for developers to build their own professional caching mechanism tailored to their particular needs.

The term “web cache” (from now on simply referred to as “cache“) will be used throughout this article to refer to a cache of HTTP resources (e.g., a web page, an image, a css file) in which HTTP headers and page content (sequence of bytes) are store together in a cache entry and later used to quickly reload HTTP resources. In terms of data persistency the source code provided implements a “short-term cache“, i.e., a cache that will not persist data after a device boot. For further information on web caches and related terminology please refer to the corresponding Wikipedia article: http://en.wikipedia.org/wiki/Web_cache.

BrowserField2 API and the ProtocolController

The BrowserField2 API, introduced with the release of BlackBerry Device Software 5.0, allows BlackBerry developers to embed Web content into their Java applications. As a result, developers are able to quickly build BlackBerry applications that easily integrate with legacy back-end web-based systems. In addition, BrowserField2 applications running on OS 6.0 benefit from the high-quality and top-notch performance of the BlackBerry Webkit rendering and Javascript engines.

Despite the richness in functionality and ease-of-development provided by the BrowserField2 API, a caching mechanism for loading webpages does not come standard. That is, requesting the same web page twice will require establishing different connections with the web server to retrieve the page’s content. The good news is that a caching mechanism can be implemented straighforwardly by extending the BrowserField2 API, in particular one of its core components called the ProtocolController as we cover next.

Figure 1: The Role of the ProtocolController in the BrowserField2 API
(Figure extracted from BlackBerry DEVCON 2010 – DEV49 technical session)

The ProtocolController, depicted in Figure 1, reprsents the default implementation of the BrowserFieldController abstract component. The ProtocolControllerhandles navigation (e.g., a link was clicked on your page) and resource (e.g., an image or a CSS file needs to be loaded in your page) requests through a variety of protocols (e.g., http, https, local, file) and is responsible for providing a valid connection to a remote resource and, in some cases, for properly displaying the contents of a requested page on the screen.

Overriding the ProtocolController allows developers to intercept all kinds of page and resource requests and thus to customize the standard behavior. For instance, an application might be interested in checking the credentials of a user before giving her access to a particular page or resource. In fact, the BlackBerry® WebWorks™ application technology applies this very same strategy.

In particular, extending the standard controller is ideal for implementing the caching mechanism cover in this article since all requests are made via the controller. As shown in Figure 1, developers can either extend the abstract BrowserFieldController or its default implementation the ProtocolController. This article will use the latter approach as the ProtocolController provides convenient functionality that can be readily reused.

Creating a CacheProtocolController

Figure 2 depicts the four components created to implement the BF2 caching system discussed in this article, i.e., the CacheManager interface and classesCacheProtocolController, CacheManagerImpl and CacheItem as depicted in Figure 2. There is also the application entry point class BF2CacheSampleAppthat can be found in the attached source code.

Figure 2: Extending the ProtocolController to create a web cache

The CacheProtocolController class extends the default controller to link page requests to the cache component. The cache controller checks if a given page/resource request is cacheable and if so it either retrieves the resource from the cache (cache hit) of downloads the resource and stores it in the cache for later use (cache miss).

The code for the CacheProtocolController is show below. Methods handleNavigationRequest() and handleResourceRequest() override the default controller. Method handleNavigationRequest() reuses method handleResourceRequest() to retrieve a connection to the requested resource and afterwards requests the BrowserField to render the content via a call to method displayContent(). Method handleResourceRequest() first checks if the requested resource can be cacheable (using the CacheManager object). If the resource is not cacheable, the CacheProtocolController forwards the call to the standard controller via super.handleResourceRequest(). If the resource is cacheable and is already in the cache and not expired an InputConnection is created by theCacheManager and returned. If the resource is not in the cache, the standard controller’s functionality is called to retrieve a connection to the resource and theCacheManager creates a cache entry for that resource.

Note that the algorithm implemented in method handleResourceRequest() relies heavily on the CacheManager interface. Developers reading this article might want to create their own implementation of the that interface (or extend the class CacheManagerImpl) to customize the cache functionality discussed in this article. The reader is encouraged to have a careful look at the source code provided especially class CacheManagerImpl that provides a basic caching implementation used by the CacheProtocolController.

It is out of the scope of this article to discuss the implementatoin details of class CacheManagerImpl. Yet understanding this class by looking into the source code should be pretty straightforward.

Attaching the new CacheProtocolController to the Sample Application

The last step towards enabling caching on your BF2 application is to attached the new CacheProtocolController component to the BrowserField object. In the sample application provided (see class BF2CacheSampleApp in the attachments) the new controller is attached to the BrowserField as shown in the code below:

The reader is strongly encouraged to check the slides of the DEV 49 session entitled “Customizing BrowserField2 Advanced Components” presented at the DEVCON 2010.The slides cover several other extensible points of the BrowserField2 API and can be found in the BlackBerry Developer Zone portal.

The ApplicationPermissionsManager API offers a way to streamline the request for application permissions to improve the user experience. The API allows an application to request all required permissions at one time and tell the user why the permissions are needed. Applications are also able to determine which permissions they have and if its is possible to get the desired level of permissions.

However, concurrent requests for permissions were not possible until BlackBerry® Device Software 5.0.0.796, Bundle 1342. If the application permissions screen was open when another application (or another entry point of the same application) requested permissions, the request would fail with an exception in some cases or would simply fail silently with no request shown to the user. The exception seen was an IllegalArgumentException, with the message “object already exists”. This is due to the single allowed permissions screen before the limitation was fixed.

The attached sample code shows how to make permission requests in the background which account for these situations more gracefully.

Since only one permissions request can be handled at a time, the sample code foregrounds a hidden permissions screen in case the user had dismissed it or another application had taken the foreground.

After foregrounding any prior screens, the applications own request is queued up using the ApplicationPermissionsManager API.

If it fails with the IllegalArgumentException “object already exists”, then the request is re-queued when the application is foregrounded again, since the user must handle the existing permission request first.

The sample also handles instances where the user has put the permissions request into the background but tries to run the application again, and it has been altered to not show any the main UI until the permissions have been accepted. This is not always the best choice of user experience, but may be desired by some applications.