Desenvolvendo aplicacoes para TV Digital Interativa
-
Upload
diemesleno-souza-carvalho -
Category
Technology
-
view
2.032 -
download
2
description
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