Conhecendo o Bada

Page 1

>> 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á.


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.


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

• Escolha os componentes a serem instalados.


• 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.

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


• 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:


>> 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

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.


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

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 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:


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:


>> 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;


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.

void HelloWorld::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; } void HelloWorld::OnBackground(void) { // para a pintura na tela quando a aplicação é movida para background. } void HelloWorld::OnLowMemory(void) { // Libere recursos não utilizados ou feche a aplicação } void HelloWorld::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:


void HelloWorld::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:


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.


***** 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:


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.


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:


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:


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: bool HelloWorld::OnAppInitializing(AppRegistry& appRegistry)


{ 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:


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:


* 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.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.