Aula 13 - Sensores e Hardware 📸
📱 Além da Tela
O smartphone é um laboratório de sensores. Apps nativos têm "superpoderes" para sentir o mundo físico.
- Onde eu estou? (GPS)
- O que eu estou vendo? (Câmera)
- Estou me movendo? (Acelerômetro)
🔑 O Porteiro: Permissões
No Android 6.0+, as permissões são dinâmicas.
- Normais: Declaradas no Manifest (Internet, BT).
- Perigosas: Pop-up em tempo de execução (GPS, Câmera, Microfone).
Sempre verifique se tem a permissão antes de usar o hardware! 🛡️
Pedindo Permissão (Moderno)
val launcher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { concedida ->
if (concedida) { /* Use o hardware */ }
}
launcher.launch(Manifest.permission.CAMERA)
🗺️ Localização e GPS
Use o Fused Location Provider.
- Por que? Ele mistura GPS, Wi-Fi e Células de rede.
- Vantagem: Menos gasto de bateria e maior precisão.
- Maps SDK: Exiba a localização visualmente.
📸 A Câmera com CameraX
Esqueça a dor de cabeça da Camera2 API.
- Preview: Imagem em tempo real.
- Capture: Tirar e salvar foto.
- Analysis: Analisar frames (QR Code, IA).
🎢 Sensores de Movimento
Acelerômetro e Giroscópio.
- Detectar o "Shake" (Balançar).
- Rodar a tela automaticamente.
- Realidade Aumentada (AR).
🔵 Bluetooth (Classic e BLE)
Conecte-se a tudo.
- Classic: Som, Arquivos grandes.
- BLE (Low Energy): Sensores, IoT, Smartwatches.
- Eddystone/iBeacons: Localização interna por proximidade.
📞 Telefonia e SMS
Sim, ainda é um telefone!
- SmsManager: Envie e receba mensagens programaticamente.
- TelephonyManager: Saiba a operadora e o estado da rede.
Cuidado: O Google Play é muito rígido com permissões de SMS. ⚠️
🔐 Biometria Segura
Impressão digital e Rosto.
- Use o
BiometricPrompt. - Nunca guarde a digital do usuário! O sistema apenas diz "Confere" ou "Não Confere".
🆚 Android vs iOS (Hardware)
| Recurso | Android | iOS |
|---|---|---|
| GPS | Fused Location | Core Location |
| Câmera | CameraX | AVFoundation |
| Sensores | SensorManager | Core Motion |
| Bluetooth | BluetoothAdapter | Core Bluetooth |
🧬 Mermaid: Ciclo de Hardware
graph TD
A[Usuário quer Foto] --> B{Tem Permissão?}
B -- Não --> C[Pedir Permissão]
C --> D{Aceitou?}
D -- Não --> E[Mostrar Aviso]
B -- Sim --> F[Abrir CameraX]
D -- Sim --> F
F --> G[Salvar Imagem]
🛠️ Prática: O Sensor de Luz
- Obtenha o
SensorManager. - Escolha o
Sensor.TYPE_LIGHT. - Se a luz baixar (colocar a mão sobre o sensor), mostre um aviso "Está escuro!".
🏁 Conclusão
- Hardware exige permissão e cuidado.
- CameraX e Fused Location são seus melhores amigos.
- Respeite a bateria do usuário! Pare de ouvir sensores no
onPause.