>> 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
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.
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.
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:
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:
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:
boolHelloWorld::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.
Recommended