Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.

Archived:How to create a chat by Bluetooth using Kuneri Lite

From Wiki
Jump to: navigation, search

Archived.pngArchived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

We do not recommend Flash Lite development on current Nokia devices, and all Flash Lite articles on this wiki have been archived. Flash Lite has been removed from all Nokia Asha and recent Series 40 devices and has limited support on Symbian. Specific information for Nokia Belle is available in Flash Lite on Nokia Browser for Symbian. Specific information for OLD Series 40 and Symbian devices is available in the Flash Lite Developers Library.

In this tutorial we will follow a step-by-step guide to create a Bluetooth chat in Flash Lite using Kuneri Lite. Kuneri Lite allows access to the S60 features (Bluetooth, GPS, Camera, …) that we haven’t access directly from Flash Lite. More details about Kuneri Lite.

Featured Article
08 Aug
Article Metadata
By Felipe.Sampaio
Last edited: hamishwillee (14 May 2013)

Creating KuneriLoader class

First of all, you’ve to create a separate ActionScript file called This file will be responsible by all received and sent messages. Put the following code in it.

author: Flash Lite Effort - Embedded Systems and Pervasive Computing Lab.
version: 0.1
modified: 10/07/2008

class KuneriLoader {
private var loader:LoadVars;
public function KuneriLoader(){
this.loader = new LoadVars();
public function KLoad(url:String, handler){
loader.onLoad = function()
trace("LOADING: " + url);
public function KError(msgError:String, klError:String){
trace("KuneriLite: " + klError + " " + msgError);

The KLoad function receives an url and a callback function as parameter, the callback function will be called after the resquest to the Kuneri Lite is done. (Remember that trace function result is not visible in device).

Creating the chat

After this, create a Flash Lite file (.fla). In the first frame put a button that will to open a connection to Kuneri Lite, with ‘connect_btn’ as instance name. Also put a dynamic text with ‘info’ as instance name.


Create a layer (named ‘labels’) to put all labels and set the first frame name as ‘connect’. Create another layer (named ‘actions’) to put all actions. In the first frame of the ‘actions’ layer, paste the bellow code:

//Import the class KuneriLoader.
import KuneriLoader;
//Create a instance the KuneriLoader.
var loader = new KuneriLoader();
var kuneriPath:String = "";
_quality = "HIGH";
fscommand2("FullScreen", true);
//Initially the bluetooth is started and response is returned to kuneriStarted.
loader.KLoad(kuneriPath + "connect?klCommand=start&", kuneriStarted);
//After the button click connect this function will call.
connect_btn.onRelease = function():Void {
//Connect the other device and the response will returned to kuneriConnected.
loader.KLoad(kuneriPath + "connect?klCommand=connect&", kuneriConnected);
info.text = "Waiting...";
function kuneriConnected(res:LoadVars){
if (res.klError != 0)
info.text = "Erro in connection.";
function kuneriStarted(res:LoadVars){
if (res.klError != 0){
info.text = "Erro while starting.";
//Send again.
loader.KLoad(kuneriPath + "connect?klCommand=start&", kuneriStarted);
else info.text = "Bluetooth started.";
function kuneriStatus(res:LoadVars){
if (res.klError != 0){
info.text = "Erro status.";
//Verify this status is connected with other device.
else if (res.klStatus eq "connected"){
//Stop the update status.
function getStatus():Void{
//Get status the kuneri Lite and response.
loader.KLoad(kuneriPath + "connect?klCommand=status&", kuneriStatus);
//Each 700 milliseconds this status is updated.
sts = setInterval(getStatus, 700);

Yet in the ‘actions’ layer type the following code:

send_btn.onRelease = function():Void {
if (msgText.text != ""){
//Sends your message to other user.
loader.KLoad(kuneriPath + "connect?klCommand=send&klMessage=" + msgText.text + "&", kuneriSend);
info.text = "Sending...";
function kuneriSend(res:LoadVars){
if (res.klError != 0)
info.text = "Erro sending the message.";
//After send the message, textChat will updated.
else uptadeSendChat();
function uptadeSendChat():Void {
info.text = "";
//Update chatText.
chatText.text += ">> " + msgText.text + "\n";
chatText.scroll = chatText.maxscroll;
//Clear the msgText.
msgText.text = "";
update_btn.onRelease = function():Void {
//Read the message sends from other user.
loader.KLoad(kuneriPath + "connect?klCommand=read&", kuneriRead);
info.text = "Reading...";
function kuneriRead(res:LoadVars){
if (res.klError != 0)
info.text = "Erro reading.";
//After read the message, textChat will updated.
else uptadeReadChat(res.klReceive);
function uptadeReadChat(msg:String):Void {
info.text = "";
//Update the chatText.
chatText.text += ">> " + msg + "\n";
chatText.scroll = chatText.maxscroll;

In the stage put other buttons with ‘update_btn’ and ’send_btn’ instance names, a TextInput component with ‘msgText’ instance name and two ‘Dynamic Text’ with ‘chatText’ and ‘info’ instance names respectively. Like showed in the Figure.


If you want to test your application, you must make a .sis file in the Kuneri Lite and install in the mobile phone. To get more informations about the creation of .sis files, click [1].


Download source files.

This page was last modified on 14 May 2013, at 06:04.
117 page views in the last 30 days.