27
>> Conhecendo o Bada << >> Não é buda ou banda por acaso? Não, é Bada mesmo. O Bada é um framework situado acima do sistema operacional. Para muitos é chamado de sistema operacional, mas a verdade é que ele trabalha sobre uma versão do Linux. No mercado já existem dois aparelhos com o Bada. O Samsung Wave e o Samsung Jet. Apesar de novo, a Samsung já liberou um SDK para os desenvolvedores, além disso, criou o Bada Developer Challenge , que premia os melhores aplicativos para esta plataforma. Este pequeno artigo é uma visão geral e bem sucinta do Bada, visto que o próprio autor era leigo no assunto a apenas algumas horas.

Conhecendo o Bada

Embed Size (px)

DESCRIPTION

Conheça um pouco mais o Bada, um framework situado acima do sistema operacional. Para muitos é chamado de sistema operacional, mas a verdade é que ele trabalha sobre uma versão do Linux.

Citation preview

Page 1: Conhecendo o Bada

>> Conhecendo o Bada <<

>> Não é buda ou banda por acaso?

Não, é Bada mesmo. O Bada é um framework situado acima do sistema operacional. Para muitos é chamado de sistema operacional, mas a verdade é que ele trabalha sobre uma versão do Linux.

No mercado já existem dois aparelhos com o Bada. O Samsung Wave e o Samsung Jet.

Apesar de novo, a Samsung já liberou um SDK para os desenvolvedores, além disso, criou o Bada Developer Challenge, que premia os melhores aplicativos para esta plataforma.

Este pequeno artigo é uma visão geral e bem sucinta do Bada, visto que o próprio autor era leigo no assunto a apenas algumas horas.

>> Gostei disso, como instalo o SDK?

O kit de desenvolvimento é baseado na IDE Eclipse, ou seja, para quem já utiliza esta ferramenta a curva de aprendizado é quase inexistente. Além das ferramentas padrões como compilador, depurador e editor de código, o sdk possui uma ferramenta espetacular, o UI Builder. Aguarde um pouco e verá.

Page 2: Conhecendo o Bada

A instalação se dá em 8 passos:

Baixar o sdk aqui. É necessário criar um usuário antes do download.

Depois do download efetuado, descompacte a pasta em um lugar de seu interesse. A árvore de diretórios deve ser assim:

Dê um duplo clique no instalador. O wizard começa pela tela abaixo. Clique em Next.

Page 3: Conhecendo o Bada

O próximo passo é aceitar a licença. Leia o texto e clique em I Agree.

Escolha os componentes a serem instalados.

Page 4: Conhecendo o Bada

Especifique o diretório onde o SDK será instalado.

Especifique o shortcut para o Windows e clique em Install.

Agora espere a instalação concluir suas etapas.

Page 5: Conhecendo o Bada

Se receber a tela abaixo tudo ocorreu bem e já podemos passar para o Hello World.

Page 6: Conhecendo o Bada

Para garantir que tudo deu certo, seu Windows deve mostrar o seguinte menu na lista de programas:

Figura 1: Menu windows.

Para ter mais certeza ainda, clique em Simulator:

Page 7: Conhecendo o Bada

>> Quero criar meu primeiro aplicativo Bada

Lembram da Figura 1, cliquem em badaIDE.

Quando a IDE/Eclipse estiver aberta, navegue para file->new->bada application proejct.

Depois disso informe o nome do projeto e o seu tipo de protótipo, que deve ser bada Frame Based Application

Page 8: Conhecendo o Bada

O próximo passo é configurar o path do bada SDK.

Sobre os tipos de projeto:Segundo a documentação:

bada Frame Based Application: cria um simples projeto baseado em um frame. O template já cria as funcionalidades básicas da aplicação para mostrar o nome do projeto na tela.

bada Form Based Application: cria um simples projeto baseado em Form. Contém as funcionalidades básicas para desenhar um Form na tela.

bada Empty Project: cria um projeto somente com os arquivos essenciais.

bada Static Library: cria uma biblioteca.

Page 9: Conhecendo o Bada

Posteriormente, vamos definir qual arquivo de manifesto vamos usar.

Podemos utilizar o manifesto padrão enquanto estivermos apenas estudando o sdk e a API do Bada. Porém, quando este trabalho for

Page 10: Conhecendo o Bada

profissional e exigir a distribuição da aplicação, é necessário criar este manifesto a partir do site da Samsung.

Estamos quase acabando!!!!

Agora, defina o criador da aplicação bem como sua descrição básica. Depois disso já podemos finalizar o projeto.

Depois que o projeto foi criado, a IDE cria a seguinte árvore de diretórios:

Page 11: Conhecendo o Bada

Figura 2: árvore de diretórios.Rode o projeto como bada Simulator Application. Se tudo ocorreu

certo, você verá o celular abaixo na sua tela.

Calma, se um erro Launch File. Binaty not found foi lançado, apenas clique com o botão direito no nome projeto e escolha Build Project. Execute o projeto novamente:

Page 12: Conhecendo o Bada

>> Um pouco sobre o aplicativo gerado pela IDE

Para entender toda a árvore de diretórios e arquivos, indico a leitura da documentação oficial. Para nós, iniciantes no Bada vamos com mais calma. Por hora só precisamos saber que a pasta src contém os códigos fontes do aplicativo. Os resources também são importantes, mas serão vistos daqui a pouco.

Vamos a alguns pontos importantes do código fonte:

O ponto de entrada da aplicação é o método OspMain(), presente em HelloWorldEntry.cpp;

A instância da aplicação é criada usando o método CreateInstance, presente em HelloWorld.cpp;

Os recursos da aplicação, como o arquivo XML de layout por exemplo, são inicializados usando o método OnAppInitializing(), presente em HelloWorld.cpp;

Os recursos alocados serão destruídos e os estados da aplicação salvos usando o método OnAppTerminating; presente em HelloWorld.cpp;

Page 13: Conhecendo o Bada

Além disso, outros métodos são criados para tratar determinados eventos relativos a aplicação. Veja parte do código na listagem abaixo.

voidHelloWorld::OnForeground(void){// Começe ou reinicie o desenho da tela quando a aplicação é movida para foreground.

Canvas* pCanvas = GetAppFrame()->GetCanvasN();

Font font;font.Construct(FONT_STYLE_PLAIN | FONT_STYLE_BOLD, 50);pCanvas->SetFont(font);pCanvas->DrawText(Point(30, 30), GetAppName());pCanvas->Show();

delete pCanvas;}

voidHelloWorld::OnBackground(void){// para a pintura na tela quando a aplicação é movida para background.}

voidHelloWorld::OnLowMemory(void){// Libere recursos não utilizados ou feche a aplicação}

voidHelloWorld::OnBatteryLevelChanged(BatteryLevel batteryLevel){// Lidar com as alterações de nível de bateria aqui.// Pare de usar mídia se estiver fazendo (camera, mp3 etc.) quando o nível da bateria é CRITICAL.}

Com a listagem de código acima o leitor já deve ter percebido um dado muito importante. Não lidamos com Java aqui, mas sim com C++.

>> Brincando um pouco com eventos

Só para ter uma idéia do tratamento de eventos no Bada vamos brincar um pouco com o HelloWorld. A missão é criar um código que intercepe eventos de bateria e diga ao usuário a situação da carga do seu aparelho móvel.

Reescreva o método OnBatteryLevelChanged para:

Page 14: Conhecendo o Bada

voidHelloWorld::OnBatteryLevelChanged(BatteryLevel batteryLevel){

Canvas* pCanvas = GetAppFrame()->GetCanvasN();

Font font;font.Construct(FONT_STYLE_PLAIN | FONT_STYLE_BOLD, 50);

pCanvas->Clear();pCanvas->FillRectangle(Color(255, 255, 255, 30),

Rectangle(0, 0, pCanvas->GetBounds().width, pCanvas->GetBounds().height));

pCanvas->SetFont(font);pCanvas->DrawText(Point(30, 30), GetAppName());

if (batteryLevel == BATTERY_CRITICAL)pCanvas->DrawText(Point(30, 90), "Crítica");

else if (batteryLevel == BATTERY_EMPTY)pCanvas->DrawText(Point(30, 90), "Vazia");

else if (batteryLevel == BATTERY_FULL)pCanvas->DrawText(Point(30, 90), "Cheia");

else if (batteryLevel == BATTERY_HIGH)pCanvas->DrawText(Point(30, 90), "Alta");

else if (batteryLevel == BATTERY_LOW)pCanvas->DrawText(Point(30, 90), "Baixa");

pCanvas->Show();

delete pCanvas;// TODO:// Handle any changes in battery level here.// Stop using multimedia features(camera, mp3 etc.) if the

battery level is CRITICAL.}

Rode a aplicação novamente. Clique com o botão direito no emulador, depois clique em Event Injector. No wizard que receber, clique em Device, localizado na extremidade direita das tabs superiores:

Page 15: Conhecendo o Bada

Em Battery Level escreva 99 e clique em Send Battery File.

>> Melhorando a interface e conhecendo o UIBuilder

Agora vamo apresentar um ponto que me chamou muito a atenção no SDK do Bada, fazendo eu esquecer o fato de usar C++ e não Java.

Page 16: Conhecendo o Bada

***** Para entender os conceitos de UI no Bada visite a documentação aqui.

A interface gráfica de uma aplicação Bada é constituída de uma ou mais application views. Cada view é uma janela full-screen da aplicação que é representada por um Form, contendo uma barra de indicadores, soft keys e uma barra de título. Além disso, um Form contém controles, que podem ser controles puros ou containers que contém controles.

Todos os forms de uma aplicação precisam ser anexados a um Frame. Pode haver somente um frame por aplicação. Fonte: aqui.

Figura: componentes GUI.

Então vamos criar um Form.

Revejam a Figura 2 por favor. Anteriormente eu disse o seguinte: “Os resources também são importantes, mas serão vistos daqui a pouco.” Na verdade eles serão vistos agora.

Vamos adicionar um recurso a nossa aplicação.

Clique em Form e depois Insert Resource:

Page 17: Conhecendo o Bada

Agora a magia começa:

Dê um duplo clique no formulário para ver suas propriedades na parte inferior.

Nas propriedades configure o título do form, bem como o label para Soft Key 0 e Soft Key 1.

Page 18: Conhecendo o Bada

Já conseguimos isso:

Para adicionar os controles, os componentes se preferirem, o desenvolvedor tem algumas opções na aba Palette.

Utilizando o arrastar e colar, construa uma tela conforme a imagem abaixo:

Page 19: Conhecendo o Bada

Construindo esta tela, somente clicando a arrastando os componentes me deu uma saudade do Java ME, de criar as telas com diretivas gráficas, com seus drawRect, drawString etc e etc.

Mas calma, ainda não fizemos todo o trabalho. Clique com o botão direito no Form e escolha Add Class. Chame a classe de Listener e informe que desejas controlar tudo o que é possível:

Page 20: Conhecendo o Bada

Depois do Finish vamos visitar o HelloWorld.cpp.

Veja o comentário do método OnAppInitilçizing(), ele diz o seguinte:

// TODO:// Initialize UI resources and application specific data.// The application's permanent data and context can be obtained from the appRegistry.//// If this method is successful, return true; otherwise, return false.// If this method returns false, the application will be terminated.// Uncomment the following statement to listen to the screen on/off events.//PowerManager::SetScreenEventListener(*this);

Já que diz que é nesse método que inicializamos os recursos de interface gráfica, substitua esse método por esta versão:

boolHelloWorld::OnAppInitializing(AppRegistry& appRegistry)

Page 21: Conhecendo o Bada

{Listener *pForm1 = new Listener();

pForm1->Construct(L"IDF_FORM1");Frame *pFrame = GetAppFrame()->GetFrame();pFrame->AddControl(*pForm1);pFrame->SetCurrentForm(*pForm1);pForm1->RequestRedraw();return true;

}

Ao esqueça de adicionar essa linha no início do código:

#include "Listener.h"

Agora vamos rodar novamente o aplicativo e sorrir:

Page 22: Conhecendo o Bada

E oque acham do controle da hora:

Quantas linhas programamos mesmo?

>> Conclusão. Oque concluir?

O Bada está recém chegando no mundo móbile, ainda é impossível qualquer direcionamento sem um pouco de achômetro. Façamos o seguinte, tirem suas conclusões, ou ainda, vamos discutir isso com os comentários desse artigo. Mas duas coisas são fatos:

Page 23: Conhecendo o Bada

* A Samsung poderia deixar de querer reiventar a roda e adotar Android.

* O UI Builder é extremamente útil e poderoso. Isso pode ser um importante diferencial.

>> Autor

Ricardo da Silva Ogliari

Atua no desenvolvimento de aplicações móveis com a plataforma Java ME a 5 anos. Bacharel em Ciência da Computação.

Criador e mantendedor do Mobilidade é Tudo. www.mobilidadetudo.com.

Co-autor do Java Móvel: www.javamovel.com.

Articulistas de algumas revistas nacionais, todas voltadas para o mundo móbile.

Palestrante em eventos nacionais e internacionais.