Desenvolvendo aplicacoes para TV Digital Interativa

Post on 22-Apr-2015

2.032 views 2 download

description

Mini curso oferecido no FLISOL Campo Grande 2011.

Transcript of Desenvolvendo aplicacoes para TV Digital Interativa

Desenvolvendo Aplicações para TV Digital InterativaDesenvolvendo Aplicações para TV Digital Interativa

Diemesleno Souza Carvalho Campo Grande - MS, 9 de Abril de 2011.

Sobre o instrutorSobre o instrutor

●Tecnólogo em Sistemas para Internet.

●Pós-graduando MBA em Gestão de Projetos.

●Trabalho com T.I. desde 1998.

●Palestrante em diversos eventos regionais.

●Ex-estagiário no TRE-MS e Dataprev-MS.

2 anos na Sefaz/MS como Analista/Programador.●2 anos na Sefaz/MS como Analista/Programador.

●Analista de Sistemas Pleno na InnfoMaster.

Tópicos AbordadosTópicos Abordados

●Nivelamento sobre DTVi.

●Entender as tecnologias envolvidas.

●Conhecer os desafios do mercado.

●Montar o ambiente de desenvolvimento e teste.

●Criar e testar algumas aplicações de exemplo.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

–Baixa qualidade de imagem.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

–Baixa qualidade de imagem.

Chata,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

–Baixa qualidade de imagem.

Chata, Sem novidades,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

–Baixa qualidade de imagem.

Chata, Sem novidades, Repetitiva,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Analógica

–Telespectador passivo.

–Mono-canal.

–Baixa qualidade de som.

–Baixa qualidade de imagem.

Chata, Sem novidades, Repetitiva, Muitas vezes apelativa.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

–Imagem de alta definição.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

–Imagem de alta definição.

Diversidade de dispositivos,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

–Imagem de alta definição.

Diversidade de dispositivos, Visualizar informações sobre os canais e programas,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

–Imagem de alta definição.

Diversidade de dispositivos, Visualizar informações sobre os canais e programas, Equipamento caro,

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital

–Telespectador passivo.

–Múltiplos canais.

–Qualidade de som de CD.

–Imagem de alta definição.

Diversidade de dispositivos, Visualizar informações sobre os canais e programas, Equipamento caro, Poucas emissoras.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Tudo que a TV Digital tem...

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Telespectador ativo.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Telespectador ativo.

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Novas formas de se utilizar a TV. (T-Commerce)

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Novas formas de se utilizar a TV. (T-Learning)

Nivelamento sobre DTViNivelamento sobre DTVi

●TV Digital Interativa

–Novas formas de se utilizar a TV. (T-GOV)

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.E.U.A.E.U.A.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.E.U.A.E.U.A.

- ACAP- X

- ACAP-J

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Europa

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Europa

- DVB-HTML

- MHP

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Japão

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Japão

- BML

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Brasil

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Padrões de DTVi.

Brasil

- Ginga-NCL

- Ginga-J

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Interatividade.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Interatividade.

“Trata da possibilidade do telespectador receber uma mensagem e tratá-la da forma que desejar.”

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

–Votação eletrônica.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

–Votação eletrônica.

–Serviços bancários.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

–Votação eletrônica.

–Serviços bancários.

–Serviços de saúde.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

–Votação eletrônica.

–Serviços bancários.

–Serviços de saúde.

–Serviços de educação a distância.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Possibilidades.

–Votação eletrônica.

–Serviços bancários.

–Serviços de saúde.

–Serviços de educação a distância.

–Compras.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Graus de Interatividade.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Graus de Interatividade.

–Nível 1

“A interatividade é apenas com o aparelho de TV, limitando-se a fazer escolhas. O usuário não interfere na programação.”

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Graus de Interatividade.

–Nível 2

“O usuário interage com a programação, que pode ser alterada com o simples uso do controle remoto. Neste nível seria possível escolher, por exemplo, o final de uma novela.”novela.”

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●O Middleware.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●O Middleware.

“Camada de software capaz de prover o suporte necessário para o desenvolvimento de aplicações para TV Digital e também tornar uma aplicação de TV capaz de ser executada em qualquer plataforma, independente de ser executada em qualquer plataforma, independente de Hardware e Sistema Operacional.”

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

–Sincronismo de mídias.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

–Sincronismo de mídias.

–Definição de relacionamentos de sincronismo espacial e temporal separada da definição do conteúdo dos objetos de mídia relacionais.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

–Sincronismo de mídias.

–Definição de relacionamentos de sincronismo espacial e temporal separada da definição do conteúdo dos objetos de mídia relacionais.

–Adaptação de conteúdo e da forma que o conteúdo é exibido.exibido.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

–Sincronismo de mídias.

–Definição de relacionamentos de sincronismo espacial e temporal separada da definição do conteúdo dos objetos de mídia relacionais.

–Adaptação de conteúdo e da forma que o conteúdo é exibido.exibido.

–Múltiplos dispositivos de exibição.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

●Requisitos para um Middleware completo.

–Sincronismo de mídias.

–Definição de relacionamentos de sincronismo espacial e temporal separada da definição do conteúdo dos objetos de mídia relacionais.

–Adaptação de conteúdo e da forma que o conteúdo é exibido.exibido.

–Múltiplos dispositivos de exibição.

–Permitir edição ao vivo.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

Dentre os Middlewares listados somente 1 é completo.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

Dentre os Middlewares listados somente 1 é completo.

Entendendo as tecnologias envolvidasEntendendo as tecnologias envolvidas

Arquitetura Ginga.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●Cenário atual da Interatividade no Brasil.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●Cenário atual da Interatividade no Brasil.

–Conservadora.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●Cenário atual da Interatividade no Brasil.

–Conservadora.

–Tecnologia recente.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●Cenário atual da Interatividade no Brasil.

–Conservadora.

–Tecnologia recente.

–Sem um modelo de negócios definido.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●Cenário atual da Interatividade no Brasil.

–Conservadora.

–Tecnologia recente.

–Sem um modelo de negócios definido.

–Sem uma maturidade ideal.

Conhecendo os desafios do mercadoConhecendo os desafios do mercado

●O mercado da TV Digital Interativa.

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

O que precisamos para desenvolver aplicações para TV Digital Interativa?

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

1. Ginga-NCL Player.

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

1. Ginga-NCL Player.

2. Eclipse + jdk + JavaTV + XletView.

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

1. Ginga-NCL Player.

2. Eclipse + jdk + JavaTV + XletView.

3. Vmware Player.

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

1. Ginga-NCL Player.

2. Eclipse + jdk + JavaTV + XletView.

3. Vmware Player.

4. Imagem do S.O. do Set Top Box Ginga.

Montando o ambiente de desenvolvimento e testeMontando o ambiente de desenvolvimento e teste

1. Ginga-NCL Player.

2. Eclipse + jdk + JavaTV + XletView.

3. Vmware Player.

4. Imagem do S.O. do Set Top Box Ginga.

5. WinSCP + Putty5. WinSCP + Putty

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

● Aplicação NCL Pura.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

1 - Abra o eclipse.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

2 - Crie um novo projeto do tipo ‘General/Project’ e dê o nome de NCL-Pura.nome de NCL-Pura.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

3 - Clique com o botão direito no projeto e crie um novo diretório chamado ‘media’.diretório chamado ‘media’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

4 - Clique com o botão direito no diretório ‘media’ e selecione a opção ‘import->File System’ e selecione o selecione a opção ‘import->File System’ e selecione o arquivo ‘video.mp4’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

5 - Clique com o botão direito no projeto e crie um novo arquivo do tipo ‘NCL Document’ e digite ‘main’ para o arquivo do tipo ‘NCL Document’ e digite ‘main’ para o id do arquivo.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

6 - Dentro do cabeçalho ‘<head>’, defina uma regionBase.regionBase.

<regionBase>

<region id=“rgFundo” width=“100%” height=“100%”/>

</regionBase>

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

7 - Logo abaico da ‘<regionBase>’, defina um descriptorBase.descriptorBase.

<descriptorBase>

<descriptor id=“descVideo” region=“rgFundo”/>

</descriptorBase>

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

8 - Dentro do corpo do programa ‘<body>’, indique a mídia que aparecerá na tela.mídia que aparecerá na tela.

<media id=“video” src=“media/video.mp4” descriptor=“descVideo”/>

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

9 - Logo abaixo de ‘<media>’, crie um ‘<port>’ indicando a mídia iniciará no programa.indicando a mídia iniciará no programa.

<port id=“pEntrada” component=“video” />

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

Abra o Ginga-NCL Player e teste o programa.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

● Aplicação Ginga-J

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

1 - Abra o Eclipse e crie um novo projeto Java com o nome de ‘Ginga-J’.de ‘Ginga-J’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

2 - Clique com o botão direito no projeto e selecione ‘Propriedades’.‘Propriedades’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

3 - Clique em ‘Java Build Path’ e na aba ‘library’ clique no botão ‘Add External Jars’.botão ‘Add External Jars’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

4 - Adicione o jar do Xletview.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

5 - Adicione o jar do JavaTV.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

6 - Clique no botão ‘Add External Class Folder’ e adicione o diretório ‘lib’ do JavaTV.diretório ‘lib’ do JavaTV.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

7 - Clique no botão ‘Ok’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

8 - Clique com o botão direito no projeto e crie um novo pacote com o nome ‘br.com.flisolcg’.pacote com o nome ‘br.com.flisolcg’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

9 - No pacote criado clique com o botão direito e crie uma nova classe com o nome ‘FlisolCGXlet’.nova classe com o nome ‘FlisolCGXlet’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

10 - Implemente a classe Xlet na nossa classe criada.

public class FlisolCGXlet implements Xlet {

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

11 - Clique no ‘problema’ para tratar a dependência.

import javax.tv.xlet

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

12 - Clique no ‘problema’ para implementar os métodos do Xlet.Xlet.

destroyXlet()

initXlet()

pauseXlet()

startXlet()

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

13 - Dentro da classe, declarar os objetos que serão utilizados.utilizados.

private XletContext contexto;

private HStaticText labelAcima;

private HStaticText labelMeio;

private HStaticText labelAbaixo;

private HScene scene;

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

14 - Clique no ‘problema’ para tratar as dependências.

import org.havi.ui.HScene;

import org.havi.ui.HStaticText;

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

15 - Crie o método construtor da classe.

public FlisolCGXlet() {

//vazio

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

16 - Configure o método destroyXlet.

public void destroyXlet(boolean arg0) throws XletStateChangeException {

this.contexto.notifyDestroyed();

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

17 - Adicione o objeto ‘contexto’ no método initXlet.

public void initXlet(XletContext contexto) throws XletStateChangeException {

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

18 - Ainda dentro do método initXlet adicione:

public void initXlet(XletContext contexto) throws XletStateChangeException {

this.contexto = contexto;

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

19 - Ainda dentro do método initXlet adicione:

public void initXlet(XletContext contexto) throws XletStateChangeException {

this.contexto = contexto;

this.scene = HSceneFactory.getInstance()

.getFullScreenScene(HScreen.getDefaultHScreen()

.getDefaultHGraphicsDevice());.getDefaultHGraphicsDevice());

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

20 - Clique no ‘problema’ para tratar as dependências.

import org.havi.ui.HScreen;

import org.havi.ui.HSceneFactory;

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

21 - Ainda dentro do método ‘initXlet’ adicione:

this.labelAcima = new HStaticText(“FlisolCG 2011");

this.labelAcima.setFont(new Font("Arial", Font.BOLD, 90));

this.labelAcima.setBounds(10, 10, 700, 200);

this.labelAcima.setForeground(Color.white);

this.labelAcima.setBackground(new Color(0,100,0));

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

22 - Clique no ‘problema’ para tratar as dependências.

import java.awt.Color;

import java.awt.Font;

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

23 - Ainda dentro do método ‘initXlet’ adicione:

this.labelMeio = new HStaticText("TV Digital se faz com Ginga!");

this.labelMeio.setFont(new Font("Arial", Font.BOLD, 40));

this.labelMeio.setBounds(10, 200, 700, 200);

this.labelMeio.setForeground(new Color(0,0,139));

this.labelMeio.setBackground(Color.white);

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

24 - Ainda dentro do método ‘initXlet’ adicione:

this.labelAbaixo = new HStaticText("www.gingams.com.br");

this.labelAbaixo.setFont(new Font("Arial", Font.BOLD, 60));

this.labelAbaixo.setBounds(10, 370, 700, 200);

this.labelAbaixo.setForeground(Color.yellow);

this.labelAbaixo.setBackground(new Color(50,153,204));this.labelAbaixo.setBackground(new Color(50,153,204));

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

25 - Ainda dentro do método ‘initXlet’ adicione:

this.scene.add(this.labelAcima);

this.scene.add(this.labelMeio);

this.scene.add(this.labelAbaixo);

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

26 - No método ‘startXlet’ adicione:

public startXlet() throws XletStateChangeException {

this.scene.setVisible(true);

}

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

27 - Clique no menu ‘Project->Clean’ para compilar nossa aplicação.aplicação.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

28 - Abra o prompt de comando e inicie o XletView.

java -jar xletview.jar

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

29 - Clique no menu ‘Applications->Manage Applications’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

30 - Clique em ‘Default Group’ e no menu lateral clique em ‘New Application’.‘New Application’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

31 - Clique em ‘new app 01’ e no formulário especifique os seguintes dados.seguintes dados.

Name: FlisolCG

Path: Pasta ‘bin’ do nosso projeto

Xlet: br.com.flisolcg.FlisolCGXlet

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

32 - Clique em ‘Save & Close’.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

33 - Volte no menu ‘Applications’ e clique na aplicação ‘FlisolCG’ criada.‘FlisolCG’ criada.

Criando e testando algumas aplicações de exemploCriando e testando algumas aplicações de exemplo

34 - Se estiver tudo ok a aplicação comecará a rodar, se algo estiver errado verifique o console da aplicação.algo estiver errado verifique o console da aplicação.

BônusBônus

Testando algumas aplicações da comunidade.

ConclusãoConclusão

● Mercado altamente promissor.

● Diversos nichos a serem explorados.

● Hora de se capacitar.

● Levar a ideia para as universidades.

● Promover eventos.

● Se divertir.Se divertir.

DúvidasDúvidas

ObrigadoObrigado

● Contato:

– www.diemesleno.com.br

– diemesleno@gmail.com

– @diemesleno