segunda-feira, 24 de novembro de 2014

Implementação do ícone do PimpMyPizza

Bom Dia,
Durante a semana realizamos diversas atividades, podemos destacar a implementação do ícone do PimpMyPizza na aplicação, substituindo o emblemático robozinho do Android (finalmente).

Imagem 1: ícone com a aplicação em execução

Imagem 2: ícone para executar a aplicação

Além disso foram realizadas as substituições das imagens do manual do usuário e as recorrentes atualizações no relatório de desenvolvimento.

sábado, 15 de novembro de 2014

Atividades da semana

Boa Noite,
As atividades dessa semana se concentraram na documentação do projeto. Foram realizadas correções, indicadas pelos professores, no relatório de desenvolvimento e nos manuais técnico e de usuário.
No manual técnico especificamente iniciamos a elaboração de uma sessão de detalhamento de funcionamento do Web Service da aplicação.
Além disso, postamos no repositório do grupo as análises de apresentação dos demais grupos.

sábado, 8 de novembro de 2014

Correções na parte Mobile

Boa noite,
Nesta semana realizamos algumas correções na parte mobile da aplicação. A principal indicada pelos professores era a correção do método de cálculo de preço do pedido, que antes era calculado a alteração realizada no carrinho (adição ou remoção de produto), agora, o método calcula o preço de todos os itens .
Iniciamos também a prototipagem da tela de configuração de pedido quem segundo os professores, estava saturada de elementos. Decidimos por separar a tela em: customização de sabores e customização de Pizza.
A intenção no momento é a utilização de SwypeTabs como no cardápio da Aplicação.
Durante as próximas semanas, atualizaremos o blog com os progressos do projeto.

sexta-feira, 24 de outubro de 2014

Análises dos projetos de PDS apresentados

Concluídas todas as apresentações, fica ao encargo de cada grupo realizar relatórios e avaliações das apresentações e projetos realizados nessa disciplina.
Dessa forma, foram postados no repositório subversion todas as análises, feitas de modo a ressaltar possíveis melhorias.
Assim que todos os grupos terminarem seus relatórios, o grupo Pimp My Pizza utilizará estes relatórios para ponderar quais otimizações podem ser feitas para o quarto bimestre.

segunda-feira, 20 de outubro de 2014

Forma de pagamento

Um ponto extremamente importante quando realizamos um pedido por telefone é a forma de pagamento que o cliente deseja. Pensando nisso, implementamos na ação de envio de pedido mais dois dialogboxes que questionam o cliente a respeito da forma de pagamento (Imagem 1) e se há necessidade de troco (caso a opção escolhida seja 'Dinheiro' - Imagem 2), tornando a experiencia de pedido pela aplicação mais completa.

Imagem 1

Imagem 2


quinta-feira, 9 de outubro de 2014

Número de Telefone do usuário

Juntamente das informações do pedido do usuário, o grupo decidiu que a aplicação enviaria o número de telefone do usuário, com a intenção de facilitar a entrega do pedido. Implementamos então uma função que pegava automaticamente o número de telefone do usuário, entretanto em recentes pesquisas, descobrimos que está não funciona para todos os cartões SIM.
Atualizamos então a aplicação com uma caixa de dialogo, onde o usuário pode informar um número de telefone de contato para a Pizzaria. Esta caixa é preenchida automaticamente quando o cartão SIM possibilita que a função pegue o número, porém o usuário é capaz de alterá-lo.


sábado, 4 de outubro de 2014

YOU HAVE NO POWER HERE BUG!!!

   Caros colegas programáticos, a semanas que eu não apareço por aqui, mas havia um motivo... eu estava sendo vencido por um bug. 
   Tudo começou quando eu implementei a função de retirar ou de adicionar um ingrediente.
Tudo funcionava perfeitamente, exceto pelo fato de que: Se o usuário estivesse mexendo com dois ou mais sabores e estes possuíssem ingredientes em comum, ao fazer uma alteração no ingrediente de um sabor ele alterava o do outro também... O mais esquisito é que quando o usuário finalizava a pizza os ingredientes eram enviados corretamente.

resumo: enviava certo e exibia errado.

foram semanas estudando e revisando o código até que hoje eu percebi que talvez eu estivesse apontando pro "objeto mãe" do ingrediente e não para o ingrediente exclusivo do sabor em questão. 

solução: instanciar um novo objeto de ingrediente ao fazer a montagem dos sabores disponíveis no cardápio


for (String ingrediente : ingredientes) {
IngredienteModel aux = PimpController.ingredientes.get(ingrediente);
IngredienteModel aux2 = new IngredienteModel(aux.getNome(), aux.getPreco(), true);         iAux.add(aux2);
}

sendo aux = o ingrediente mãe.
          aux2 = o ingrediente exclusivo do sabor. 



segunda-feira, 22 de setembro de 2014

Alterações para envio de pedido

Foram realizadas algumas alterações na ação de envio de pedido por parte do usuário da aplicação mobile. Após clicar no botão de 'Enviar Pedido', o usuário informa um nome e o endereço para a entrega do pedido. O número de telefone é pego automaticamente pela aplicação.

Botão de 'Enviar Pedido' adicionado a tela de Carrinho

O usuário deve informar o nome...

e um endereço.

sexta-feira, 5 de setembro de 2014

Tela de Pefil implementada

Boa Tarde galera!
Em reta final de projeto venho aqui apresentar a tela de Perfil para vocês. Nela o usuário tem a opção de selecionar um nome e um telefone que estão salvos na aplicação e serão atribuídos ao pedido.
Nela também o usuário tem a opção de desabilitar que a aplicação pegue automaticamente a sua localização e o numero de telefone. Para economizar espaço, implementamos o Switch, que permite a opção de ativar/desativar de forma fácil e intuitiva.


quinta-feira, 4 de setembro de 2014

Manual do Usuário Mobile e Desktop.

         Finalizado esse manual em uma única versão, o material completo com imagens será em breve postado no subversion.
        A finalidade deste manual é descrever o aplicativo e sua fluidez e tirar possíveis dúvidas dos usuários de modo a fazer o melhor uso do software.
         Nele constam os Termos de Uso, Manual do Usuário do Mobile e Manual do Usuário Desktop.
         Os termos de uso dizem respeito às responsabilidades que os desenvolvedores, usuários e pizzarias devem ter para terem uma boa convivência.

         Os Manuais do Usuário dão um passo a passo descritivo para que o Pimp My Pizza possa ser usado corretamente e inequívocadamente.

Gource - 3º bimestre

Boa noite, acabei de criar mais um vídeo do gource que mostra o progresso do nosso projeto durante o 3º bimestre. 

Atualizações na tela de Carrinho

Durante a semana, realizamos algumas alterações na tela de Carrinho do projeto. Adicionamos botões no ListItem (Salvar, Deletar e Configurar): o botão "Salvar" salva a pizza nos Favoritos do usuário, o de "Deletar" remove a pizza do pedido do usuário e o de "Configurar" permite que o usuário edite a pizza adicionada ao carrinho. Antes a configuração podia ser feita ao clicar no Item da Lista, porém com as essas alterações, ela só pode ser feita a partir do botão adicionado.



quinta-feira, 28 de agosto de 2014

Criação da Tela de Favoritos

Boa Noite Pessoal,
Apresento-lhes a nossa tela de Favoritos (Imagem 1), onde ficam salvas algumas informações importantes sobre o usuário de nossa aplicação. Nela temos as opções de Perfil, Endereços e Pizzas. As telas de Perfil e de Pizzas Favoritas estão em construção e, ao clicar na opção de Endereços, você tem um AlertDialog que lhe informa os endereços salvos pelo usuário (Imagem 2), para que um deles possa ser escolhido para a entrega.
Os endereços no momento funcionam com dados testes, posteriormente os dados corretos serão enviados pelo servidor da aplicação.

Imagem 1

Imagem 2

Obs: Vale ressaltar que as imagens da tela favoritos foram retiradas da internet, não foram realizadas por nós.

Manual do Usuário Desktop

Finalizado o Manual do Usuário Desktop. Neste manual são descritos e explanados como o usuário da pizzaria, ou seja, o atendente deve proceder para catalogar novos ingredientes, pizzas, bebidas, publica-los ao usuário mobile e administrar os pedidos recém-recebidos e em processamento.

Aguardem um post mais detalhado.

segunda-feira, 25 de agosto de 2014

Atualizações da semana

Durante a semana realizamos algumas atualizações no projeto:
1- Agora na tela do cardápio, temos o preço de cada sabor (Imagem 1);
2- Na tela de configuração de pizza, temos a possibilidade de inserir novos sabores a pizza (Imagem 2);

As próximas tarefas para esta semana são: aparecer o preço na tela de configuração, e adicionar alguns botões a tela do carrinho.
Imagem 1

Imagem 2

quinta-feira, 14 de agosto de 2014

Atualizações na ActionBar

Durante a semana realizamos algumas alterações na ActionBar. Retiramos o nome das activities da ActionBar e trocamos pelo preço total do pedido, que aparecem em todas as telas da aplicação. Inserimos também um botão para acessar a tela de favoritos (que ainda não foi criada), onde estarão localizadas algumas informações do usuário (endereços, pizzas favoritas, etc.)


domingo, 10 de agosto de 2014

Mudanças no grupo

Boa Noite,

Essa semana durante a aula ocorre uma mudança importante em todos os grupos, um dos membros saiu e entrou outro aluno da sala para substitui-lo, no caso do nosso grupo o Rafael saiu e eu (Anne) entrei.
Por enquanto é só.

Obrigada :)

domingo, 3 de agosto de 2014

Cardápio pode ser visto mesmo sem conexão

Se por acaso, um usuário não consiga se conectar com o servidor de dados, uma tela de "Conexao Ruim" é exibida (ver posts anteriores do Victor Toth). Agora, mesmo coma falha de conexão o usuário tem a opção de ver um cardápio, gravado localmente (em um SharedPreferences). Toda vez que o usuário consegue conexão, uma nova versão do cardápio é gravada localmente, para que ele tenha sempre a versão mais atualizada, mesmo sem conexão.

Aguardem novas atualizações! :)

Splash Screen

Como dito antes, agora carregamos as informações a serem exibidas pelo aplicativo de um "servidor", que nos retorna um JSON. A aplicação trata o JSON recebido, populando uma serie de listas e maps. Todo esse processo requer um tempo para ser realizado, e uma medida tomada pelo grupo foi a implementação de uma splash screen, que fica um determinado tempo na tela, enquanto esse processo acontece por trás.

O certo seria que a slash screen sumisse logo que todo esse processo acabasse, porém, por enquanto ela funciona com um Handler de tempo (correção será feia no futuro, eu juro haha).


Upgrades na lista de Pizzas

Boa noite pessoal, trago algumas novidades do PimpMyPizza.
Primeiramente substituímos o adapter da lista de pizzas, na activity principal do projeto. Antes utilizávamos um ArrayAdapter, agora um BaseAdapter, que permite que passamos um ArrayList de objetos e, assim, podemos mostrar na tela do usuário, os ingredientes de cada pizza.
As tabs estão divididas em apenas salgadas e doces por enquanto, uma vez que agora pegamos tais informações do servidor, nao de listas testes da propria aplicação, como antes.

Em outros posts teremos mais novidades do Pimp, até mais.


terça-feira, 29 de julho de 2014

Spinner x Button & DialogBox

Hoje vou explicar a preferência de Dialogbox ao invez de um spinner

   Spinner - Fica muito pequeno na tela e para colocar um texto padrão como "selecione um tamanho" da um trabalho do demônio. Então precisaríamos de legenda o que estava ocupando espaço.

Spinner

   Dialogbox - Permite que eu coloque uma descrição inicial dispensando legendas, é maior e mais visível e eu gostei mais... Quem programou esse parte fui eu, logo vou usar aquele que eu gostei mais

DialogBox

Interface do cardápio 100% dinâmica & Listas estáticas

   Olá amigo programero, estou fazendo este post para explicar um pouco melhor como está funcionando nosso aplicativo quando se diz respeito a respeito do recebimento de dados e do que nós fazemos com ele.
   Tudo começa com um Json que nós recebemos do servidor, então fazemos uma verificação perguntando se todos os dados vieram conforme a gente quer. Se não for o caso ele não inicia o aplicativo, apenas informa o problema e pede que você tente novamente.

Eu sei que parece uma indecência mas é um cara de nariz grande sorrindo e usando óculos e esse botão tenta carregar o app novamente.

   Se for o caso então nós recebemos uma série de dados que ficam mais ou menos assim:

{'Cardapio':
  {'Sabores':
 [
    {'Categoria': 'Salgada',
     'Ingredientes': [{'Categoria': 'Padrao', 'Preco': 0.0, 'Nome': 'Molho'},...],
     'Preco': '30,00',
     'Nome': 'Mussarela'},...
  ],
  'Bebidas':
 [
    {'Tamanho': '1l', 'Preco': '10,00', 'Nome': 'Coca Cola'}, ...
 ],
  'Categorias': ['Salgada', 'Doce'],
  'Ingredientes': [{'Categoria': 'queijo', 'Preco': '2,50', 'Nome': 'Mussarela'}, ...]
},
 'Pizzaria': {'Horario_de_funcionamento': '8 da manha ao infinito', 'Descricao': 'Pizza todo dia', 'Localizacao':      'Quebradas da ZL', 'Nome': 'Pizzaria do Joao'}}
   
   Então tratamos esses dados para que populem algumas listas:

- Fazemos uma lista <String> para todas as categorias, futuramente cara uma dessas categorias vai se transformar em uma tab

- Depois populamos um HashMap (que funciona como um dicionário em JAVA) sendo <key, value> = <String, IngredienteModel>, assim temos acesso rápido para qualquer ingrediente e podemos buscá-lo apenas pelo nome. E assim fazemos com bebidas e futuramente com sobremesa.

- Por último e mais difícil, fazemos uma genuína gambiarra colocamos um HashMap dentro de outro  e fica assim : <String (categoria), <String(Nome sabor), SaborModel>> assim podemos ter acesso á todos os sabores por categoria (por tab), e podemos acessá-los pelo nome também.
   No final o que a gente faz é popular as tabs com apenas o nome dos sabores que pertencem a ela, e quando um sabor é selecionado então pegamos o objeto inteiro.

Usar esse mecanismo pode ser desvantajoso para quem tem a internet lenta, pois sem internet não tem aplicativo, mas a vantagem é que o aplicativo fica extremamente flexível as particularidades da pizzaria e uma vez que os dados forem tratados não há necessidade de consultar o servidor ou qualquer banco de dados, o que deixa o aplicativo mais rápido, a desvantagem é que se o usuário fechar o aplicativo ele terá que solicitar os dados novamente.

domingo, 13 de julho de 2014

Video Gource - 2º Bimestre

Esta semana foi postado um vídeo do nosso projeto no youtube. Esse vídeo foi feito pelo Gource, um aplicativo que consegue ler informações do Subversion e por meio disso cria visualizações gráficas do histórico de versionamento.

sábado, 5 de julho de 2014

Entrevista com a Pizzaria do David

Lembrando que o nosso aplicativo é direcionado ao atendimento de uma pizzaria, decidimos fazer uma entrevista com uma pizzaria (meio tardia, mas está valendo).

Separamos alguns tópicos a serem discutidos e eu escrevi um relatório baseado na conversa que eu tive com a Elaine da Pizzaria do David - Site da pizzaria

Como cobrar as pizzas?
   A cobrança é feita dependendo dos ingredientes gastos para fazer um único sabor ( 8 pedaços padrão). No caso de uma pizza com mais de um sabor (máximo 4) é cobrado o valor do sabor mais caro.
   No caso da pizza broto (4 pedaços) o valor cobrado é de 70% o valor da pizza padrão.
   Existem casos em que uma pizza de 8 pedaços pode ser dividida em 9 ou mais pedaços, mas isso não altera o tamanho nem o valor da pizza.

Exclusão de ingredientes

   Todos os ingredientes podem ser excluídos à gosto do cliente sem a alteração do preço.

Inclusão de ingredientes 

   A inclusão de ingredientes é algo complicado de se prever ou de se padronizar visto que o cliente pode pedir qualquer coisa e levando em consideração que na pizzaria do David a pizza é feita e assada na hora. 
De acordo com a Elaine o mais comum é a adição de queijos extra com um adicional no preço variando ente 7 a 9 reais.
   Contudo, o mais comum não é a adição de ingredientes, mas sim a exclusão ou a substituição. Substituição de ingredientes como ervilha por milho, mussarela por mussarela de bufala. Qualquer coisa que seja a gosto do cliente. No caso da ervilha não é cobrado taxas adicionais visto que o preço da ervilha para o milho não são tão diferentes. Já no caso das mussarelas ou de qualquer substituição por algum ingrediente mais caro as taxas adicionais podem variar entre 4 a 7 reais.  
   Concluindo, é extremamente difícil padronizar um esquema de personalização para um atendimento tão flexível. Talvez o nosso aplicativo tenha algumas limitações, pois já não resta muito tempo. 





   

Custom ListView usando BaseAdapter

Como mencionado anteriormente tivemos muita ajuda de um indiano. Vou explicar um pouco melhor a respeito da Custom ListView:

Uma ListView é um elemento que herda de um objeto View em formato de listas e que suporta uma String para cara item na lista.

ListView Comum



Mas e se eu quiser ter mais de um elemento por item? Uma imagem, mais de uma TextView... Bem é ai que entra o BaseAdapter 
Custom ListView

Se você quiser saber como fazer uma  ListView Personalizada siga os passos deste tutorial dividido em 4 partes, segue o link com a primeira parte:

NumberPicker

   Olá amigos programáticos! Uma postagem curta sobre uma funcionalidade do android chamada NumberPicker. Há uma necessidade no nosso aplicativo em que o usuário deve escolher a quantidade de pizzas que ele quer. Antes isso era feito com dois botões (+, -) e uma text view que mostrava essa quantidade.

Imagem porca pois eu não tirei print da versão antiga

Agora com o numberPicker eu economizo muito mais linhas de código e espaço:
numberpicker abaixo de "Quantidade: "
Se você quiser saber como adicionar um NumberPicker na sua aplicação de uma olhada nesse exemplo:

sexta-feira, 27 de junho de 2014

Feedback do Questionário A

(Clique nas imagens para amplia-las)
 Respostas A1
  Resposta A2
   Resposta A3
   Resposta A4
   Resposta A5
    Resposta A6
                                                                                                                                               Resposta A7

O uso da internet para realizar o pedido de pizzas ou qualquer outro gênero alimentício é algo crescente, mas como se pode ver na Resposta A5, ainda é pequeno o número de usuários que fazem o pedido via internet.
Por outro lado, o pedido realizado por meio do telefone é muitas vezes entregue errado ( Resposta A4), deixando o consumidor com um pedido trocado ou simplesmente sem os ingredientes solicitados.
Um fator que explica a quantidade de pedidos entregues errados é o pedido “customizado”. Acrescentar sabores, ingredientes ou retirar ingredientes se mostra uma atividade repetitiva para os consumidores e confusa para os atendentes.
A partir dos resultados obtidos nesta pesquisa, o grupo pôde confirmar algo muito importante para uma possível venda do software: que este seria bem-vindo e utilizado. Como o Pimp My Pizza pretende eliminar possíveis erros de telefonistas e fornecer agilidade a um pedido “customizado”, temos um sinal verde dos amantes de pizzas.

quarta-feira, 25 de junho de 2014

Tutorial para customização de ListViews

Fala galera, depois de algum tempo, estou postando a respeito de um canal do YouTube (de um indiano, como sempre!), encontrado pelo Victor, sobre programação em Android. Além disso, nele você encontra conteúdos sobre Java, Javascript, entre outros. Voltando ao que importa, os vídeos #90 ao #96 apresentam uma maneira de customização de ListViews, que será extremamente útil, para a montagem dos cardápios na parte mobile da aplicação.

Vale a pena conferir!

Link do indiano

segunda-feira, 9 de junho de 2014

Enviando dados POST

Olá amiguinhos fazedores de programa! ... HAHAHA foi muito ruim vamos de novo.

Eae! (bem melhor), desculpem a demora pelo novo post. Anteriormente havia postado sobre como receber dados em JSON a partir de um metodo GET, hoje vou postar um link de um tutorial para enviar dados em JSON por um método POST. Esse tutorial simplesmente salvou a minha vida. ai vai

Tutorial: enviar dados JSON/POST

O tutorial abrange bem o que você deve fazer para enviar dados, uma aplicação sempre é diferente da outra, no meu caso tive que adaptar o tratamento de dados em JSON e futuramente vamos ter que configurar o servidor para receber e tratar esses dados. Espero que ajude :)

sábado, 24 de maio de 2014

O que faz o serviço de localização?

Basicamente localiza o usuário :) Ok, as principais funções para o nosso serviço de localização consistem em indicar qual a unidade mais próxima da atual localização do usuário, a partir das coordenadas (latitude e longitude) fornecidas pelo GPS do smartphone. Para usufruir deste, é necessário que o o celular esteja conectada a internet. Caso o celular não possua a ferramenta de GPS, pode se determinar a localização do usuário a partir das Networks (redes de internet) próximas a ele, entretanto o resultado não é tão eficiente como o do GPS (e o serviço não implementado no PimpMyPizza).
Voltando ao nosso aplicativo, outra função do serviço de localização é fornecer as coordenadas das unidades da pizzaria, para que o usuário possa ver a localização da mesma, a partir de um serviço do GoogleMaps.

Vence o Android LocationManager!

Nesta semana, terminamos o serviço de localização do aplicativo, utilizando o Android LocationManager. Em outros posts colocamos em questão qual o serviço de localização a ser utilizada e apesar de muitos falarem da eficiência do GooglePlayLocationManager, optamos por utilizar o outro serviço, que atendente perfeitamente nossas necessidades e já estava em processo de implantação no aplicativo. Além da necessidade de instalação de um SDK da GooglePlay, o que consideramos um "excesso" já que usaríamos apenas uma ferramenta de localização. No próximo post falarei com mais detalhes sobre o que faz o nosso serviço de localização.

sexta-feira, 23 de maio de 2014

HTTP GET/JSON Android

  Olá amigo desenvolvedor! Como eu sei que você programa?... Ou pelo menos tenta, bom... Caso contrário você não estaria lendo isso hue.

   Essa semana peço desculpas pela minha ausência aqui no blog, mas trago um post bem interessante. Se assim como eu, você precisa fazer com que a sua aplicação android receba dados de um servidor web, segue o link com 2 tutoriais que me ajudaram muitíssimo.

   Eu segui o passo a passo e pude compreender melhor como podemos implementar o conteúdo dos tutoriais em nossa aplicação. Se por algum acaso você quiser se informar um pouco mais antes de olhar os tutoriais, pesquise sobre as seguintes classes:
-Httpclient
-Httpresponse
-InputStrem
- BufferedReader
-ConnectivityManager
-HttpAsyncTask

 Eu mesmo preciso estudar um pouquinho mais haha.

1 - requisição http por método GET:
  Requisição HTTP-GET

2 - recebendo e tratando dados em formato JSON:
  Tratamento JSON data

segunda-feira, 19 de maio de 2014

Inicio dos testes dos Serviços de localização

Como visto no penúltimo post, iniciamos o desenvolvimento do serviço de localização do usuário, utilizando o Android Location Service. Não descartamos a possibilidade de utilizarmos o Google Play Location Service, a intenção é testar o desempenho de ambos na própria aplicação.
Entretanto, nesta primeira fase de teste, já foi possível encontrar uma falha. Quando solicitado para Localizar o usuário, a aplicação retorna um endereço que não condiz com a sua atual posição. Nos testes realizados em meu smartphone, o endereço retornado era do bairro de Santo Amaro (Zona Sul de São Paulo), mais exatamente no local onde trabalho. Entretanto o local onde foi requisitado, foi em minha residência, localizada no bairro do Tremembé (Zona Norte de São Paulo ). Resta saber se o problema também ocorre se utilizarmos o Google Play Location Service.

Esta é a tela de localizar do usuário. O botão localizar retorna o endereço do usuário, e o botão Endereços Salvos, mostrará uma tela na qual o usuário visualizará um endereço salvo, onde costuma pedir a pizza.


O Problema com as Fragments

Nada é perfeito, nem na vida, muito menos na computação. Com o Android não podia ser diferente. Apesar de ser um sistema de primeiríssima qualidade, podemos encontrar alguns 'bugs', como o dos eventos de botões nas Fragments. Para podemos atribuir um evento 'onClick' a um botão localizado em uma Fragment, devemos implementar um onClickListener neste, para podermos sobre escrever o evento 'onClick'. Em uma Activity comum, bastaria atribuir o evento no próprio arquivo XML de layout. Segundo as nossas pesquisas, isto é um erro do Android, que os desenvolvedores pretendem resolver em próximas atualizações.  Um pequeno problema, uma grande dor de cabeça.

domingo, 18 de maio de 2014

Android Location Service vs Google Play Location Service

Para esta semana, a intenção do grupo na parte de programação, era inciar o desenvolvimento do serviço de localização do usuário do aplicativo. Iniciamos o desenvolvimento desta utilizando o Android Location Service, oferecido pelo Android Framework. Este consiste em serviço de fácil utilização, e que aparece em muitos aplicativos. Entretanto, nas nossas pesquisas encontramos outra ferramenta, mais recente oferecida pela Google Play, o Google Play Location Service. A própria Google recomenda a utilização da nova ferramenta, alegando ser mais rápida, eficiente e que economiza a bateria do dispositivo. Entretanto, encontramos em alguns fóruns, uma pequena quantidade (que não pode ser ignorada) de desenvolvedores que preferem a utilização do Android Location Service, causando uma certa dúvida ao grupo, uma vez que já havíamos iniciado o desenvolvimento com esta.
Porém não podemos simplesmente ignorar uma ferramenta que é recomendada pelo Google, portanto decidimos prolongar um pouco esta tarefa, para que o aplicativo possua o melhor serviço de localização possível.
Seguem alguns artigos explicando as diferenças entre as duas ferramentas:
Blog do Antonio Hong
Blog do Rahul Jiresal

quinta-feira, 15 de maio de 2014

Questionário

Para o melhor conhecimento das necessidades dos nossos clientes fizemos um questionário pelo google docs com perguntas referentes aos serviços de entrega de uma pizzaria e pedimos que os colaboradores postem o link desse questionário nas redes sociais como facebook e whatsapp.

Link para o questionário:
https://docs.google.com/forms/d/1hlQwS3Ab0NCvADFw77IMbSZT6Q8zDrCEmL2SN8Zx1eM/viewform?usp=send_form

quinta-feira, 8 de maio de 2014

Progressos da quinta-feira (08/05)

O projeto avança a cada semana... e nesta quinta, durante o período da aula de PDS, realizamos alguns progressos na parte da programação na plataforma mobile.
-> Criamos o efeito de 'scrollable tabs', onde o número de tabs excede o tamanho da tela, e só podem ser acessadas pelo efeito de scroll. 
-> Customizamos a Actionbar da aplicação, adicionando o botão de 'carrinho', onde o usuário pode conferir os produtos adquiridos no pedido. 
-> Iniciamos a criação da tela de escolha do lugar de onde será pedida a pizza, a de localização do usuário e a tela de pedidos.

Seguem alguns screenshot's da aplicação



domingo, 4 de maio de 2014

Interface Grafica Desktop

Nessa semana pesquisamos um pouco sobre  outras ferramentas de desenvolvimento gráfico para o desktop , e delas a que realmente mais nos chamou a atenção foi o qt ,ferramenta de desenvolvimento  multiplataforma com  implementação para Python, PyQt (http://qt-project.org/), que oferece varias opções para desenvolvimento gráfico como uma ferramenta de design, qml  e por código. Um dos fatos mais interessantes que observamos ao testar a ferramenta é que é possível  customizar certas partes dos elementos gráficos  por  Style Sheets facilitando muito essa parte do trabalho , também podemos notar que o PyQt parece ter módulos para utilização de banco de dados que podem também ser úteis no desenvolvimento do projeto (http://www.codeprogress.com/python/libraries/pyqt/showPyQTExample.php?index=422&key=QSqlDatabaseConnecttoMySql).

No momento acreditamos que usaremos os módulos  do PyQt5 para desenvolvimento gráfico , que será realizado em "puro Python", o que isso quer dizer?

Bom os módulos do PyQt5 também nos oferecem usar o QML uma opção de layout que é similar a uma Style Sheet só que com eventos e outros recursos, uma opção interessante só que no entanto é necessário  entender  conceitos novos para utiliza-la, sendo que o método de desenvolvimento gráfico por "Python puro" chega a ser bem similar ao Swing de Java com o qual já estamos acostumados.

domingo, 27 de abril de 2014

Bom, essa é a outra maneira que podemos desenvolver o layout do projeto , com layouts personalizados que permitem uma certa liberdade , mas ao mesmo tempo chegam a ser mais trabalhosos pois é necessário criar alguns recursos, como por exemplo nesse caso as bordas das tabs que tem dentro de um layout personalizado com texto tambem outro layout para limitar um certo espaço para que seja adicionada uma borda dos lado  especificados.

No momento não existe uma integração com swype pois para a mesma seria necessario utilizar uma scrollview para gerenciar scrolls horizontais para conseguir um resultado similar ao do link: http://blog.velir.com/index.php/2010/11/17/android-snapping-horizontal-scroll/    e tratar de possiveis bugs que podem aparecer ao dispor uma scrollview em cima de outra.


Para os leigos como eu (Creating Swipe Tabs)

   Olá, como mencionado no ultimo post, os meninos (Diego e Rafael) tiveram resultados ótimos a partir de um link do AndroidDeveloper, mas eu não tive tanto sucesso, então, acabei achando um tutorial excelente no you tube que explica passo a passo a criação de tab + swipe tab e como elas funcionam e etc.
   Recomendo fortemente o canal para você que assim como eu tem maior lentidão no aprendizado (hue)

P.S - para o tutorial de tabs especificamente veja da aula 127 à 132 na playList do link abaixo :)

Tutorial de tab com Fragments

Lista com conteudo + Tabs

Durante esta semana, a principal tarefa do grupo foi a criação da lista de conteúdos, que varia de acordo com a tab escolhida. A maior dificuldade foi justamente relacionar a lista com as tabs, para que as duas pudessem trabalhar juntas. Esta tarefa concentrou o trabalho dos 3 programadores, cada um tentando implementar a tela de forma que funcionasse. Fiquei responsável por tentar realizar esta com Fragments, e um link do Android Developer, que o Victor encontrou, foi de imensa ajuda. A nova tela funciona também com o movimento de "swipe", para transição de páginas.



O Rafael criou também a sua versão das telas e em um próximo post ele a apresentará. Durante a semana escolheremos qual será a versão principal do PimpMyPizza.

Este foi o link que nos auxiliou na criação desta versão: Creating Swipe views with tabs

segunda-feira, 21 de abril de 2014

Sumario do feriado (parte desktop)

Nesse feriado pesquisamos tecnologias bem como testamos a compatibilidade delas umas com as outras, que no caso foram os modulos  cx_freeze , tkinter , sqlite3 ,tornado para Python.

A versão de Python a ser utilizada será muito provavelmente a 3.3.5 pois o cx_freeze( conjunto de scripts e módulos que tem o propósito de gerar executáveis para varias plataformas,http://cx-freeze.sourceforge.net/) apresentou certos problemas na versão para o Python 3.4 .

O módulo tkinter é basicamente o modulo nativo da linguagem para utilização de recursos gráficos , mas seu uso ainda não é certo pois existem algumas outras opções como QT e GTK+ 3 (https://docs.python.org/3/faq/gui.html)

O modulo sqlite3 é um modulo nativo da linguagem Python para utilização do banco de dados SQLite que será o banco de dados usado pela pizzaria pois é mais dinâmico, de acesso mais fácil  e normalmente mais rápido que o MySQL, que apresenta definições mais complexas de dados e uma segurança maior que no caso não serão necessárias nessa parte.

Tornado é uma framework de web assíncrona para Python que será utilizada no projeto para a comunicação entre os membros da rede (http://www.tornadoweb.org/en/stable/)

Também foram vistos os modulos de threads e processes de Python pois tanto a GUI que será utilizada quanto o tornado necessitam executar loops infinitos para o seu funcionamento.




sexta-feira, 18 de abril de 2014

Primeiro Passo - Criação de tab no android

   Na primeiríssima versão do PMP o desafio é simples. Adicionar Tabs e populá-los com o conteúdo de um array de maneira programática. Ainda sim é o suficiente para consumir o meu tempo e me escravizar na frente do google.
 
  Aqui está o que foi feito até agora, nota que de acordo com o código deveriam haver 5 'sabor" escritos na tab "Pizzas"... É, está precário, mas é preciso ter fé.

quarta-feira, 16 de abril de 2014

Protótipos de Tela do Aplicativo Mobile

Estes foram os esboços do que consistirão as telas da aplicação mobile do Pimp My Pizza:


Observação: edições de pizza como a quantificação de determinado ingrediente não entraram no esquema pois o grupo ainda não esta em comum acordo quanto a como fazer esta abordagem, seja por meio de comentários ou outros métodos.
                                                                                                              Pedro Henrique Cavalcanti Fenandes

domingo, 13 de abril de 2014

Cronograma Detalhado


 Cronograma desde março até agosto, data da primeira entrega do projeto.

Pedro Henrique Cavalcanti Fenandes

quinta-feira, 3 de abril de 2014

Estudando Python

      Essa semana começamos a estudar Python que é uma linguagem de programação orientada a objeto, com objetivo de podermos aplica-lo no nosso projeto.

Lúcia Luma Akemi Noguchi

Escolhendo um web service e um meio de codificar dados

        O grupo decidiu usar uma arquitetura web chamada rest como web service para fazer conexão entre mobile e desktop. Rest, abreviação de "REpresentational State Transfer",  é um conjunto de princípios que definem como Web Standards deve ser usado.
          Para codificar os dados, o grupo também decidiu usar o JSON que é uma formatação leve de troca de dados. Ele fica em formato de texto e assemelha-se a um sub tipo da sintaxe do JavaScript, mas ele não é um tipo de script.

Lúcia Luma Akemi Noguchi

terça-feira, 1 de abril de 2014

Apresentação do blog

Bem vindos ao blog do Pimp My Pizza.
Este espaço será usado para os clientes acompanharem o desenvolvimento do projeto.
Os integrantes do grupo são:
- Diego Yutaka
- Lúcia Noguchi
- Pedro Fernandes
-Rafael Marquês
- Victor Toth

Lúcia Luma Akemi Noguchi

sábado, 29 de março de 2014

Canal no YouTube

Nesse canal postaremos todos os videos produzidos durante a realização do nosso projeto. Acompanhe o passo a passo dos progressos do Pimp My Pizza:

>> Link do Canal

Diego Yutaka Kamiha

terça-feira, 25 de março de 2014

Proposta Inicial
            A proposta anterior à proposta atual consistia em um sistema para pedidos dentro de um restaurante, no entanto a proposta pareceu complicar o que já era simples, então a ideia foi alterada para a de delivery. Foi definido um escopo menor que seria o de atender pizzarias.
            A atual proposta é a seguinte: desenvolver um aplicativo para Android que possibilite ao usuário pedir pizzas de uma certa pizzaria ou de uma filial da rede mais próxima de uma maneira rápida , fácil e eficiente. O diferencial do projeto será que o usuário poderá personalizar o seu pedido, de acordo com a sua preferência, no que diz respeito ao tamanho e ingredientes, podendo configurar o cardápio exibido e/ou filtrá-lo por padrões estabelecidos por ele (Lista de mais pedidas, Pizzas favoritas).
            A parte desktop do sistema consiste em um programa que recebe o pedido do usuário de acordo com a localização por ele fornecida. Os pedidos são salvos no banco de dados do sistema, e a partir disso o administrador do sistema é capaz de gerar um relatório de controle de vendas.

Objetivo
            Facilitar a comunicação do usuário com a pizzaria por meio do aplicativo, acabando com o papel do intermediário (atendente); com o diferencial de que o usuário tenha a liberdade de personalizar o próprio pedido. A partir do escopo proposto, o presente grupo pretende aplicar os conhecimentos de Linguagem de Programação (em Java), Banco de Dados, criação de Web Services e modelagem de dados e processos.

Plataformas
            Android (a partir da versão 4.0);
            Desktop.



Tecnologias
 ●Java;
  Andriod SDK;
  MySQL / SQLITE;
  Illustrator / Photoshop;
  Gps.





Metodologia de Gerenciamento
            O grupo decidiu por adotar a metodologia Scrum de gerenciamento de projetos para melhor organização das tarefas. O Scrum é uma metodologia ágil para gestão e planejamento de projetos e, basicamente, consiste na divisão do projeto em pequenos “focos”, chamados Sprints, juntamente de reuniões de grupo frequentes para discussão do que foi realizado e de quais serão os próximos “focos” do projeto.

Divisão do grupo
            Ficarão responsáveis pela programação do projeto os seguintes integrantes: Diego, Rafael e Victor; onde os integrantes Diego e Victor ficarão responsáveis pelas funcionalidades da plataforma Mobile do sistema e o integrante Rafael pela plataforma Desktop. A criação do design de telas e da criação do Web Service serão realizadas por todos programadores.
            O integrante Pedro é o gerente do projeto, e ficará encarregado da montagem dos cronogramas e relatórios semanais, da elaboração dos documentos oficiais do projeto e do material para apresentação aos professores e colegas (Apresentação de slides, vídeos).
            A integrante Lúcia ficará responsável pela supervisão das postagens no blog e no canal do YouTube, de abastecer o repositório com documentações e informações relevantes, além de auxiliar na documentação do projeto.