Tutorial: Deteksi Getaran Ponsel

 – Beragampengetahuan
1 min read

Tutorial: Deteksi Getaran Ponsel – Beragampengetahuan

Pelajari cara mendeteksi gerakan perangkat tanpa perpustakaan apa pun.

Untuk mendeteksi getaran, kami menggunakan browser devicemotion API. Tutorial ini mencakup matematika, persyaratan izin iOS, dan implementasi akhir.

Contents

Langkah 1: Matematika (Mengukur Gravitasi)

Akselerometer memberikan nilai untuk sumbu X, Y dan Z. Untuk mendeteksi getaran (terlepas dari orientasi ponsel), kami menghitung besaran total vektor percepatan.

rumus: Amplitudo = √(x² + y² + z²)

kami menggunakan accelerationIncludingGravity. Ukuran telepon rumah kira-kira 9.8 (Gravitasi bumi). Getaran sering kali menghasilkan paku 15 atau 20.

Langkah 2: Menangani Izin iOS 13+

IPhone modern mengharuskan pengguna memberikan izin secara manual untuk menggunakan sensor gerak. Anda tidak bisa begitu saja mulai mendengarkan; Anda harus memicu permintaan melalui interaksi pengguna (seperti mengklik tombol).

function requestPermission() {
  if (typeof DeviceMotionEvent.requestPermission === 'function') {
    DeviceMotionEvent.requestPermission()
      .then(response => {
        if (response == 'granted') {
          window.addEventListener('devicemotion', handleMotion);
        }
      })
      .catch(console.error);
  } else {
    // Non-iOS devices don't need permission
    window.addEventListener('devicemotion', handleMotion);
  }
}

Langkah Ketiga: Kocok Logikanya

Kami menambahkan pengatur waktu “Debounce”. Tanpa ini, guncangan fisik dapat memicu kode tersebut 50 kali dalam satu detik. Kami memaksa kode untuk menunggu (misalnya 1000 milidetik) sebelum mendeteksi getaran baru.

let lastShake = 0;
const MIN_INTERVAL = 1000; // Wait 1 sec between shakes

function handleMotion(event) {
  const acc = event.accelerationIncludingGravity;
  if (!acc) return;

  // Calculate Magnitude
  const total = Math.sqrt(acc.x**2 + acc.y**2 + acc.z**2);

  // Threshold of 15 is a good starting point
  if (total > 15) {
    const now = Date.now();
    if (now - lastShake > MIN_INTERVAL) {
      lastShake = now;
      alert("Shake Detected!"); 
    }
  }
}

Demonstrasi langsung

Uji kodenya di sini. Jika Anda menggunakan perangkat seluler, klik tombol di bawah dan goyangkan ponsel Anda.

Status: Tidak valid

rencana pengembangan website



metode pengembangan website

jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website

#Tutorial #Deteksi #Getaran #Ponsel

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *