Desenvolvendo para tango projeto
Video: GOOGLE TANGO! VOCÊ PRECISA CONHECER ESTA NOVIDADE!
Conteúdo
unidades Android muitos de projectos inovadores do Google. Tome, por exemplo, o dispositivo comprimido conhecido como Project Tango. À primeira vista, um dispositivo de Projeto Tango parece um tablet comum de sete polegadas. Quando você liga o dispositivo, você verá a tela familiarizado Início Android com ícones para aplicativos de lançamento, e com indicadores de sinal WiFi e força da bateria.
O dispositivo funciona mesmo app Play Store do Google, para que você possa usá-lo para navegar na web, editar documentos, e fazer todas as outras coisas que tablets comuns fazem.
Mas o hardware do Projeto Tango não é comum. A parte traseira do comprimido tem um sensor de profundidade, uma câmara de olho de peixe, e uma câmara de infravermelhos. Combinando os dados provenientes dessas fontes com o seu hardware de rastreamento de movimento interno, o Projeto Tango cria um mapa 3D do espaço circundante.
Video: Say hello to Project Tango!
Você pode fazer um mapa de sua própria sala de estar e armazenar o mapa em um dispositivo do Projeto Tango. Quando você colocar o dispositivo de volta para sua sala de estar, o dispositivo lembra o espaço e todos os objetos dentro do espaço.
Tango vem com alguns aplicativos de demonstração. Com um aplicativo, você apontar o dispositivo em dois pontos para medir a distância entre esses pontos. Você pode ficar vários pés dos pontos de início e fim, pois o dispositivo sabe como você está longe de cada um dos pontos.
Video: What is Google's Tango?
Com outro aplicativo, você anda através de mundos virtuais. Para alterar o seu ponto de vista em um mundo, você não torcer um joystick, mova o mouse ou arrastar os dedos ao longo de uma tela. Em vez disso, você vê a tela do dispositivo como você se move em torno de seu próprio ambiente de vida real. O dispositivo mostra o que você veria no mundo virtual como você anda para a frente, viro para olhar para os lados, e navegar no seu caminho em torno de objetos virtuais 3D.
Para você começar fazendo o desenvolvimento, o Projeto Tango vem com alguns aplicativos de amostra. Abrir o aplicativo QuickStart muito básico em valores exibe translação e rotação Android Studio como você mover o dispositivo a partir de um lugar para outro. (Veja a figura a seguir.)
No núcleo do aplicativo QuickStart é um Android Atividade. Alguns de código do aplicativo aparece abaixo.
/ ** de Copyright 2014 Google Inc. Todos os direitos reservados. ** Licenciado sob a Licença Apache, Versão 2.0 (a "Licença") - * Você não pode usar este arquivo, exceto em conformidade com a Licença * Você pode obter uma cópia da Licença em ** https://apache.org/licenses/LICENSE-2.0** menos que exigido por lei aplicável ou acordado. por escrito, o software * distribuído sob a Licença é distribuído "COMO É" BASE, * SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. * Consulte a Licença para as permissões específicas que regem a linguagem e * limitações sob a Licença. * / Import com.google com.google.atap.tangoservice.Tango-import .atap.tangoservice.Tango.OnTangoUpdateListener-import com.google.atap.tangoservice.TangoConfig-import com.google.atap.tangoservice.TangoCoordinateFramePair-import com.google.atap.tangoservice.TangoPoseData - // Há mais declarações de importação herepublic classe MainActivity estende Actividade {@Overrideprotected vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView (R.layout.activity_main) -mTranslationTextView = (TextView) findViewById (R.id.translation_text_view) -mRotationTextView = (TextView) findViewById (R.id.rotation_text_view) - // Instantiate Tango clientmTango = new Tango (this) - // Defina a configuração do Tango para o movimento trackingmConfig = mTango.getConfig (TangoConfig.CONFIG_TYPE_CURRENT) -mConfig.putBoolean (TangoCon fig.KEY_BOOLEAN_MOTIONTRACKING, true) -} @ onActivityResult vazio Overrideprotected (requestCode int, resultCode int, dados intenção) {try {setTangoListeners () -} catch (TangoErrorException e) {} try {mTango.connect (mconfig) -} catch (TangoOutOfDateException e) {} catch (TangoErrorException e) {}} setTangoListeners private void () {// Selecione coordenar quadro pairsArrayListframePairs = new ArrayList () -framePairs.add (novo TangoCoordinateFramePair (TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE, TangoPoseData.COORDINATE_FRAME_DEVICE)) - // Adicionar um ouvinte para Tango representam datamTango.connectListener (framePairs, nova OnTangoUpdateListener () {@Sobreporpublic void onPoseAvailable (TangoPoseData representar) {// formato de tradução e rotação da coluna datafinal translationMsg = String.format (sTranslationFormat, pose.translation [0], pose.translation [1], pose.translation [2]) - final String rotationMsg = String.format (sRotationFormat, pose. rotação [0], pose.rotation [1], pose.rotation [2], pose.rotation [3]) - // dados de exibição no TextViewsrunOnUiThread (nova Runnable () {@Sobreporpublic void run () {mTranslationTextView.setText (translationMsg) -mRotationTextView.setText (rotationMsg) -}}) -} }) -}}
O que você vê aqui não é a toda 210-line Atividade principal classe, mas alguns dos destaques importantes da classe foram resumidos.
Ter um olhar para o Atividade principal classe. O coração do código do atividade está dentro do anonymous OnTangoUpdateListener classe com o seu onPoseAvailable método.
Na vida cotidiana, um pose é a maneira como você orientar sua cabeça em relação ao seu entorno. E na terminologia do Projeto Tango, um pose é a maneira como você orientar o dispositivo em relação ao seu entorno. A pose é descrito por sete números, como os números de translação e rotação que você vê na figura anterior.
Video: Projeto aprender tango part 1
Quando o hardware do dispositivo detecta um novo pose, o software chama o onPoseAvailable método. o onPoseAvailable método deve exibir mensagens como Tradução: -2,6622, 3,214773, 2,824979 em campos de texto da atividade.
Mas há um problema. regras de segmentação do Android ditam que nenhuma thread diferente do thread principal pode atualizar a interface de uma aplicação. No Atividade principal classe, o OnTangoUpdateListener instância é executada em um segmento próprio. Assim, o exemplo é onPoseAvailable método não pode exibir mensagens em campos de texto da atividade chamando diretamente o mTranslationTextView.setText e mRotationTextView.setText métodos.
Mas, como Professor Farnsworth em Futurama sempre diz, não há “Boa notícia, todos!” Android tem um runOnUiThread método para apenas tais ocasiões. o runOnUiThread parâmetro do método é uma classe que implementa Java de Runnable interface. No código do QuickStart aplicativo, método de execução deste classe exibe o texto em nome do OnTangoUpdateListener instância. No final, usuário do dispositivo vê os dados de translação e rotação, e está tudo bem.