programação para dispositivos móveisarieldias.com/material/2019-1/pdm/aula3n.pdf ·...
TRANSCRIPT
Programação para Dispositivos MóveisSensores
Introdução
▪ Smartphones podem possuir pelo menos 10 tipos de sensores importantes que auxiliam no funcionamento do aparelho, fornecem informações aos aplicativos e recolhem dados do ambiente e também do usuário
▪ É possível utilizar sensores no dispositivo para adicionar recursos avançados de localização e movimento ao seu aplicativo, desde dados do GPS ou da localização da rede, até a utilização do acelerômetro, giroscópio, temperatura, barômetro e muito mais.
▪ Alguns sensores são de hardware, outros de software e outros que combinam funções de outros sensores, gerando novas funcionalidades
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Introdução
▪ Exemplos
▪ Um jogo pode rastrear leituras do sensor de gravidade de um dispositivo para inferir gestos e movimentos complexos do usuário, como inclinação, oscilação, rotação ou oscilação.
▪ Um aplicativo climático pode usar o sensor de temperatura e o sensor de umidade de um dispositivo para calcular e reportar o ponto de condensação.
▪ Um aplicativo de viagem pode usar o sensor de campo geomagnético e o acelerômetro para informar um rolamento de bússola.
▪ Um sensor de movimento pode detectar a movimentação de um ser humano e capturar a foto desta pessoa.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
▪ A plataforma Android fornece vários sensores que permitem monitorar o movimento de um dispositivo.
▪ As possíveis arquiteturas dos sensores variam de acordo com o tipo de sensor:
▪ Os sensores de gravidade, aceleração linear, vetor de rotação, movimento significativo, contador de passos e detector de degrau são baseados em hardware ou em software.
▪ Os sensores do acelerômetro e do giroscópio são sempre baseados em hardware.
▪ A maioria dos dispositivos com Android tem um acelerômetro, e muitos agora incluem um giroscópio.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_ACCELEROMETER
SensorEvent.values[0] Força de aceleração ao longo do eixo x (incluindo a gravidade).
m/s²SensorEvent.values[1] Força de aceleração ao
longo do eixo y (incluindo gravidade).
SensorEvent.values[2] Força de aceleração ao longo do eixo z (incluindo a gravidade).
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_ACCELEROMETER_UNCALIBRATED
SensorEvent.values[0] Aceleração medida ao longo do eixo X s/ compensação de polarização.
m / s2
SensorEvent.values[1] Aceleração medida ao longo do eixo Y s/ compensação de polarização.
SensorEvent.values[2] Aceleração medida ao longo do eixo Z s/ compensação de polarização.
SensorEvent.values[3] Aceleração medida ao longo do eixo X c/ compensação de polarização.
SensorEvent.values[4] Aceleração medida ao longo do eixo Y c/ compensação de polarização.
SensorEvent.values[5] Aceleração medida ao longo do eixo Z c/ compensação de polarização.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_GYROSCOPE
SensorEvent.values[0] Taxa de rotação ao redor do eixo x.
rad / sSensorEvent.values[1] Taxa de rotação em torno do eixo y.
SensorEvent.values[2] Taxa de rotação ao redor do eixo z.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_GRAVITY
SensorEvent.values[0] Força da gravidade ao longo do eixo x.
m / s2
SensorEvent.values[1] Força da gravidade ao longo do eixo y.
SensorEvent.values[2] Força da gravidade ao longo do eixo z.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Movimento
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_LINEAR_ACCELERATION
SensorEvent.values[0] Força de aceleração ao longo do eixo x (excluindo a gravidade).
m / s2SensorEvent.values[1] Força de aceleração ao longo do eixo y (excluindo a
gravidade).
SensorEvent.values[2] Força de aceleração ao longo do eixo z (excluindo a gravidade).
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Posição
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A plataforma Android fornece dois sensores que permitem determinar a posição de um dispositivo: o sensor de campo geomagnético e o acelerômetro.
▪ Também fornece um sensor que permite determinar a proximidade da face de um dispositivo a um objeto (conhecido como sensor de proximidade ). O sensor de campo geomagnético e o sensor de proximidade são baseados em hardware.
▪ Os sensores de posição normalmente não são usados para monitorar movimento ou movimento do dispositivo, como tremor, inclinação ou empuxo.
Sensores de Posição
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_GAME_ROTATION_VECTOR
SensorEvent.values[0] Componente do vetor de rotação ao longo do eixo x (x * sin (θ / 2)).
Sem unidade
SensorEvent.values[1] Componente do vetor de rotação ao longo do eixo y (y * sin (θ / 2)).
SensorEvent.values[2] Componente do vetor de rotação ao longo do eixo z (z * sin (θ / 2)).
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Posição
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_GEOMAGNETIC_ROTATION_VECTOR
SensorEvent.values[0] Componente do vetor de rotação ao longo do eixo x (x * sin (θ / 2)).
Sem unidade
SensorEvent.values[1] Componente do vetor de rotação ao longo do eixo y (y * sin (θ / 2)).
SensorEvent.values[2] Componente do vetor de rotação ao longo do eixo z (z * sin (θ / 2)).
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Posição
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_MAGNETIC_FIELD
SensorEvent.values[0] Intensidade do campo geomagnético ao longo do eixo x.
μT
SensorEvent.values[1] Intensidade do campo geomagnético ao longo do eixo y.
SensorEvent.values[2] Intensidade do campo geomagnético ao longo do eixo z.
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Posição
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_ORIENTATION
SensorEvent.values[0] Azimute (ângulo ao redor do eixo z). Graus
SensorEvent.values[1] Pitch (ângulo ao redor do eixo x).
SensorEvent.values[2] Rolar (ângulo ao redor do eixo y).
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Posição
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_PROXIMITYSensorEvent.values[0] Distância do objeto. (Alguns sensores de
proximidade fornecem apenas valores binários representando perto e longe)
Cm
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Sensores de Ambiente
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A plataforma Android fornece quatro sensores que permitem monitorar várias propriedades ambientais. Você pode usar esses sensores para monitorar a umidade relativa do ambiente, a iluminação, a pressão ambiente e a temperatura ambiente perto de um dispositivo com tecnologia Android.
▪ Todos os quatro sensores de ambiente são baseados em hardware e estão disponíveis somente se um fabricante de dispositivos os tiver incorporado em um dispositivo.
Sensores de Ambiente
Sensor Dados do Evento do Sensor
Descrição Unidades de Medida
TYPE_AMBIENT_TEMPERATURE event.values[0] Temperatura ambiente °C
TYPE_LIGHT event.values[0] Iluminância Lx
TYPE_PRESSURE event.values[0] Pressão do Ar hPA ou mbar
TYPE_RELATIVE_HUMIDITY event.values[0] Umidade relativa %
TYPE_TEMPERATURE event.values[0] Temperatura do dispositivo °C
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Crie um novo projeto no Android Studio
▪ Escolha para criar uma “Empty Activity”
▪ Coloque o nome do projeto de ➔ Sensores
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Crie um novo projeto no Android Studio
▪ Escolha para criar uma “Empty Activity”
▪ Coloque o nome do projeto de ➔ Sensores
▪ A estrutura do projeto ficará conforme a imagem
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Lembrando:▪ AndroidManifest fica as informações do APP▪ MainActivity é a Activity, a tela da aplicação,
neste arquivo fica toda parte lógica▪ activity_main.xml é a tela, associada a classe
java MainActivity. Neste arquivo colocaremos os elementos gráficos
▪ Para começar, vamos criar um botão que, ao clicar nele, será apresentada a relação de sensores do dispositivo
▪ Então abra o arquivo activity_main.xml
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Faremos algumas modificações conforme o código do próximo slide
▪ Vamos definir o Layout
▪ Remover o componente TextView
▪ e adicionar um componente Button com um método onClick chamado “ListarSensores”
▪ Ao abrir o arquivo activity_main.xml pela primeira vez, ele entra em modo “Design”, troque para o modo “Text” na parte inferior da tela
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity">
<Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content" android:text="Listar Sensores"android:onClick="ListarSensores"/>
</LinearLayout>
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Note que o nome do método “ListarSensores” está com um traço vermelho embaixo, indicando erro e, do lado esquerdo, aparece uma lâmpada vermelha
▪ Isso ocorre pois o método ListarSensores foi criado no xml mas ainda não foi criado na classe java (classe lógica MainActivity)
▪ Para corrigir este “erro”, clique na lâmpada que aparece a esquerda OU clique sobre o nome do método (ListarSensores) e pressione no teclado em conjunto as teclas ALT + ENTER
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Surgirá uma lista com opções igual a da imagem, escolha a opção
▪ “Create ‘ListarSensores(View)’ in MainActivity”
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Desta forma o método que executará a ação de listar o nome dos sensores está criado, porém ainda não faz nada
▪ Agora vamos colocar as ações
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Existem basicamente três classes de vital importância para nós programadores:
▪ SensorManager (android.hardware.SensorManager): permite que acessemos os sensores dos dispositivos;
▪ Sensor (android.hardware.Sensor): representa um dos sensores propriamente dito;
▪ SensorEvent (android.hardware.SensorEvent): encapsula as informações de um evento ocasionado por um sensor. Por exemplo, no sensor de luz, quando a leitura indica uma alteração na luminosidade do ambiente, o sensor acusará um evento. Cabe então ao programa trabalhar com os novos valores.
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Primeiramente vamos instanciar a classe SensorManager, criando o objeto mSensorManager
▪ A classe Activity possui um método chamado getSystemService, que permite que o desenvolvedor trabalhe com um serviço no nível de sistema operacional.
▪ A mesma classe também fornece diversas constantes para acessar diferentes serviços. Uma delas é a SENSOR_SERVICE, que faz com que o método citado retorne um SensorManager
▪ Agora vamos então para a classe MainActivity (código java) para programa-la
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {
SensorManager mSensorManager;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);}
public void ListarSensores(View view) {}
}
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Agora que temos o serviço sensor associado a variável mSensorManager, vamos no método do botão (ListarSensores) colocar a ação de listar os sensores
▪ Porém antes...
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O android studio possui uma funcionalidade de registro de log chamada LogCatque fica localizada na parte inferior da tela com um número 6 na frente, como na imagem
▪ Clicando sobre ele abrirá uma janela local com várias opções e conteúdos, apresento cada um a seguir
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
1. Apresenta o dispositivo do qual será observado os Logs
2. Plataforma utilizada
3. Tipos de log (Verbose, Debug, Info, Warn, Error, Asset)
4. A tag de pesquisa
1 2 3 4
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O formato de uma entrada de log é este
▪ Log.i(“TAG a ser pesquisada”,”Mensagem”); //log de informação
▪ Log.e(“TAG a ser pesquisada”,”Mensagem”); //log de erro
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Desta forma, ao invés de mostrarmos os sensores na tela do celular, vamos mostrar na tela do LogCat através dos logs
▪ Vamos fazer um teste então, no método ListarSensores crie uma entrada de log conforme abaixo
public void ListarSensores(View view) {Log.i("Teste","Utilizando o Log");
}
▪ Clique em “LogCat” para deixar a janela aberta e execute a aplicação
▪ Deixe o tipo de log como “info” (pois declaramos Log.i)
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Assim que a aplicação estiver em execução no aplicativo, pressione o botão “Listar Sensores”, a saída será como abaixo
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Muita informação, não é? Para filtrar o clique do botão, vamos digitar no campo de pesquisa a TAG definida previamente chamada “Teste”
▪ No exemplo abaixo o botão foi pressionado 4 vezes e, nas 4 vezes apareceu o log
▪ O log então é utilizado para reportar alguma ocorrência no sistema
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Nesta saída é que vamos listar agora os dispositivos presente no seu smartphone
▪ Então vamos ao código, no próximo slide listo apenas o código do método ListarSensores
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {
...
public void ListarSensores(View view) {List<Sensor> lista = mSensorManager.getSensorList(Sensor.TYPE_ALL);Iterator<Sensor> iterator = lista.iterator();String sensores = "";while (iterator.hasNext()) {
Sensor sensor = iterator.next();sensores += " - " + sensor.getName() + "\n";
}Log.i("Sensores","Meus sensores: \n"+sensores);
} ...
}
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Na primeira linha o método getSensorList nos retorna uma instância de List com os sensores disponíveis de um determinado tipo, ou, de todos os tipos se usarmos a constante TYPE_ALL.
▪ Na segunda foi criada uma instância de Iterator para navegar por todas as instâncias retornadas pela pesquisa feita na primeira linha.
▪ Na quarta linha temos um laço de repetição que possui como argumento de parada o método hasNext() de Iterator.
▪ Cada instância de Sensor presente na lista tem seu nome recuperado (método getName()) e anexado à variável sensores.
▪ Depois, podemos mostrar essa variável no LogCat.
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Execute a aplicação
▪ No APP, clique no botão “Listar Sensores”
▪ Na tela do LogCat pesquise pela TAG “Sensores”
Quais sensores meu dispositivo possui?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Respondendo a pergunta acima então, o meu dispositivo possui os sensores
▪ Esta lista vai variar de dispositivo para dispositivo
▪ Se você estiver testando no emulador, certamente esta lista será muito maior
Testando os sensores
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Nos próximos slides testaremos os 4 tipos de sensores mais comuns nos smartphones (sensores nesta ordem)
▪ Luminosidade
▪ Proximidade
▪ Acelerometro
▪ Gravidade
Criando a interface
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O primeiro passo será criar os 4 botões necessários para a nossa aplicação
▪ Cada botão ativará um sensor
▪ Veja o código a seguir e não esqueça de que, para cada botão temos que criar uma ação (método) na classe java (já vimos como fazer nesta aula)
▪ Coloque os botões a seguir abaixo do botão Listar Sensores criado anteriormente
Criando a interface
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
...<Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="LUMINOSIDADE"android:text="SENSOR LUMINOSIDADE"/>
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="PROXIMIDADE"android:text="SENSOR PROXIMIDADE"/>
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="ACELEROMETRO"android:text="SENSOR ACELEROMETRO"/>
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="GRAVIDADE"android:text="SENSOR GRAVIDADE"/>
...
Lógica da aplicação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Na classe MainActivity foram criados os 4 métodos
Lógica da aplicação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O primeiro passo (para todos os sensores) é recuperar uma instância do Sensor desejado.
▪ SensorManager possui um método chamado getDefaultSensor, que retorna uma instância de Sensor e requer um parâmetro do tipo int
▪ Este parâmetro é apresentado no formato de constantes (vide as tabelas do início deste slide, esta constante está presente na coluna “Sensor”)
▪ A linha abaixo recupera do dispositivo o sensor de luminosidade
Sensor mLuz = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Lógica da aplicação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Criaremos um listener para acompanhar possíveis mudanças nos valores de proximidade e da intensidade de luz ambiente.
▪ Um Listener é um conceito muito utilizado na programação Java, sendo seu objetivo aguardar por uma determinada ação. Pode ser usado para verificar possíveis cliques em um botão, mudanças na posição geográfica do dispositivo, mudanças nos valores de um determinado sensor etc.
Lógica da aplicação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O registerListener requer três parâmetros:
▪ Uma instância de uma classe que implemente SensorEventListener;
▪ Uma instância da classe Sensor;
▪ Um inteiro que define a taxa de leitura de dados do sensor.
Lógica da aplicação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A classe SensorManager já nos apresenta algumas constantes para definir a taxa de atualização da leitura dos sensores. Estas constantes são:
▪ SENSOR_DELAY_FASTEST: retorna os dados do sensor o mais rápido possível;
▪ SENSOR_DELAY_GAME: utiliza uma taxa adequada para jogos;
▪ SENSOR_DELAY_NORMAL: taxa adequada para mudanças na orientação da tela;
▪ SENSOR_DELAY_UI: taxa adequada para a interface de usuário.
Sensor de Luminosidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Na listagem foram criadas duas classes distintas que implementam SensorEventListener.
▪ Ambas precisam implementar os métodos
▪ onAccuracyChanged() ➔ é chamado quando há exatidão dos dados lidos pelo sensor sobre alterações
▪ onSensorChanged() ➔ é chamado quando o hardware intercepta uma leitura do sensor para o qual foi registrada esse listener
▪ No próximo slide será apresentada apenas as alterações na classe MainActivity (o que for novo ficará em vermelho), o restante vamos representar com 3 pontos (...) ou na cor preta
Sensor de Luminosidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {SensorManager mSensorManager;Sensor mLuz;
...
public void LUMINOSIDADE(View view) {mLuz = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);mSensorManager.registerListener(new LuzSensor(), mLuz, SensorManager.SENSOR_DELAY_FASTEST);
}
class LuzSensor implements SensorEventListener {public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {float vl = event.values[0];Log.i(“Sensores","Luminosidade: "+vl);
}}...
}
Sensor de Luminosidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Agora, clique para abrir o LogCat, no campo de pesquisa digite Sensores e execute o aplicativo
▪ Clique no botão referente ao botão de luminosidade
▪ Aproxime e afaste a sua mão da tela do dispositivo para que seja possível ver o resultado no LogCat
Sensor de Proximidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A lógica para obtenção de dados do sensor de proximidade (e de todos os outros sensores) não se modificam
▪ Assim como no sensor de luminosidade, aqui vou apresentar apenas as alterações na classe MainActivity, alterações referentes ao sensor de proximidade (ficará em vermelho)
Sensor de Proximidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {SensorManager mSensorManager;Sensor mLuz, mProx;
...
public void PROXIMIDADE(View view) {mProx = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);mSensorManager.registerListener(new ProxSensor(), mProx, SensorManager.SENSOR_DELAY_FASTEST);
}
class ProxSensor implements SensorEventListener {public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {float vl = event.values[0];Log.i(“Sensores",“Proximidade: "+vl);
}}...
}
Sensor de Proximidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Agora, clique para abrir o LogCat, no campo de pesquisa digite Sensores e execute o aplicativo
▪ Clique no botão referente ao sensor de Proximidade
▪ Aproxime e afaste a sua mão da tela do dispositivo para que seja possível ver o resultado no LogCat
▪ Alguns modelos de dispositivos apresentarão a distância em centímetros, outros apresentação na forma binária (0 ou 1) para indicar se está próximo ou longe
Sensor de Gravidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A lógica para obtenção de dados do sensor de gravidade (e de todos os outros sensores) não se modificam
▪ Assim como nos sensores anteriores, aqui vou apresentar apenas as alterações na classe MainActivity, alterações referentes ao sensor de gravidade (ficará em vermelho)
Sensor de Gravidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {SensorManager mSensorManager;Sensor mLuz, mProx, mGravidade;
...
public void GRAVIDADE(View view) {mGravidade = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);mSensorManager.registerListener(new GravidadeSensor(), mGravidade, SensorManager.SENSOR_DELAY_FASTEST);
}
class GravidadeSensor implements SensorEventListener {public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {float vl = event.values[0];float v2 = event.values[1];float v3 = event.values[2];Log.i("Sensores","Gravidade: eixo X: "+vl+", eixo Y: "+v2+", eixo Z: "+v3)
}}...
}
Sensor de Gravidade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Agora, clique para abrir o LogCat, no campo de pesquisa digite Sensores e execute o aplicativo
▪ Clique no botão referente ao sensor de Gravidade
▪ Movimente o dispositivo para que seja possível ver o resultado no LogCat
▪ No log serão apresentados 3 valores
▪ Gravidade no eixo X, no eixo Y e no eixo Z
Sensor de Acelerômetro
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ A lógica para obtenção de dados do sensor de acelerômetro (e de todos os outros sensores) não se modificam
▪ Assim como nos sensores anteriores, aqui vou apresentar apenas as alterações na classe MainActivity, alterações referentes ao sensor de acelerômetro (ficará em vermelho)
Sensor de Acelerômetro
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
public class MainActivity extends AppCompatActivity {SensorManager mSensorManager;Sensor mLuz, mProx, mGravidade, mAcelerometro;
...
public void ACELEROMETRO(View view) {mAcelerometro = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);mSensorManager.registerListener(new GravidadeSensor(), mAcelerometro, SensorManager.SENSOR_DELAY_FASTEST);
}
class AcelerometroSensor implements SensorEventListener {public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event) {float vl = event.values[0];float v2 = event.values[1];float v3 = event.values[2];Log.i("Sensores",“Acelerômetro: eixo X: "+vl+", eixo Y: "+v2+", eixo Z: "+v3)
}}...
}
Sensor de Acelerômetro
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ Agora, clique para abrir o LogCat, no campo de pesquisa digite Sensores e execute o aplicativo
▪ Clique no botão referente ao sensor de Gravidade
▪ Movimente o dispositivo para que seja possível ver o resultado no LogCat
▪ No log serão apresentados 3 valores
▪ Gravidade no eixo X, no eixo Y e no eixo Z
Atividade
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
▪ O seu dispositivo possui algum sensor diferente dos 4 listados anteriormente? Crie um botão para ele e monte toda a rotina para obtenção de dados do mesmo