← Todos os modelos
🌀
Sensores
Modelo de app Giroscópio
Taxa de rotação e orientação com um cartão 3D que se inclina.
Este é o modelo rodando ao vivo. Recursos do celular, como câmera, vibração e notificações, funcionam no app que você criar.
Recursos do celular que este modelo usa
Eles vêm da ponte JavaScript do FreeApp, que todo app criado com o Free HTML to APK inclui. Em um navegador comum, o modelo continua funcionando e as chamadas simplesmente não fazem nada.
Sensores de movimento
FreeApp.sensors.start() FreeApp.sensors.stop()
Retorna uma função de parada, ou null se não estiver disponível.
Vibração
Uma vibração única (padrão 50 ms) ou um padrão [desligado, ligado, desligado, ligado…].
Como o modelo os chama
const stop = window.FreeApp && FreeApp.sensors.start('gyroscope', d => {
card.style.transform = `rotateX(${d.x * 10}deg) rotateY(${d.y * 10}deg)`;
}, 30);
// later: stop && stop();
Deixe com a sua cara usando IA
Copie este prompt no ChatGPT, Gemini ou Claude, troque a ideia pela sua e cole a resposta de volta no editor. Ele já explica para a IA a estrutura do app e os recursos do celular.
Mostrar o prompt para a IA
Build a single-file mobile web app (index.html with inline CSS/JS) for Android WebView.
The app: Gyroscope — a gyroscope rotation-rate readout with a 3D tilting card. Rotation rate and orientation with a 3D tilting card.
Requirements:
- Mobile-first, touch-friendly UI (min 44px tap targets), works in portrait, supports light and dark mode.
- Use <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> and pad for env(safe-area-inset-*).
- Must work fully offline: no CDN or external scripts, fonts or images; persist data in localStorage.
The page runs inside an Android app that injects a native bridge as window.FreeApp. Available APIs:
- FreeApp.sensors.start(type: 'accelerometer' | 'gyroscope' | 'magnetometer' | 'light' | 'proximity' | 'pressure' | 'gravity' | 'linear_acceleration' | 'rotation' | 'humidity' | 'temperature' | 'steps' | 'step_detector', cb: (d: {type, values: number[], x, y, z, accuracy, t}) => void, intervalMs?: number): (() => void) | null — returns a stop function, or null if unavailable
- FreeApp.sensors.stop(type: string): void
- FreeApp.vibrate(ms?: number | number[]): void — one-shot buzz (default 50 ms) or an [off, on, off, on…] pattern
Rules for the bridge:
- Always guard calls with `window.FreeApp &&` (or `if (window.FreeApp) { … }`) and provide a browser fallback so the page also works in a normal browser.
- The bridge may be injected after your script runs: do native setup inside `window.addEventListener('freeappready', …)` and also run it immediately if window.FreeApp already exists.
- Do not use alert/confirm for normal feedback; prefer FreeApp.toast when available.
Return the complete index.html in one code block.
My idea: [DESCRIBE YOUR APP IDEA HERE]Transforme em um app Android
- Toque em Editar e compilar online. O modelo abre no editor online.
- Mude o texto, as cores e o código e depois escolha um nome de app, um ícone e um nome do pacote.
- Compile. Você recebe um APK assinado para instalar e um AAB para o Google Play, grátis, sem conta e sem marca d'água.