تكرار السؤال: …
الإجابة المختصرة
باستخدام حزمة expo-sensors للاشتراك في تدفق قراءات المستشعرات وتحديد وتيرة التحديث بالمللي ثانية (Update Interval) مع إلغاء الاشتراك فور مغادرة الشاشة.
الشرح
توفر مستشعرات الهاتف بيانات ثلاثية الأبعاد (x, y, z) لحركة وميلان الجهاز. للاستفادة منها دون استنزاف بطارية الهاتف، يجب ضبط تردد التحديث بدقة (مثلاً 100ms) وتجميع القراءات، والتأكد من استدعاء subscription.remove() في دالة تنظيف الـ Effect لتفادي تشغيل المستشعر بالخلفية.
مثال بالكود
import { Accelerometer } from 'expo-sensors';
import { useEffect, useState } from 'react';
function MotionTracker() {
const [data, setData] = useState({ x: 0, y: 0, z: 0 });
useEffect(() => {
Accelerometer.setUpdateInterval(100);
const subscription = Accelerometer.addListener(setData);
return () => subscription.remove();
}, []);
return <Text>الميلان: X: {data.x.toFixed(2)}, Y: {data.y.toFixed(2)}</Text>;
}أخطاء شائعة
- تعيين وتيرة التحديث بتردد فائق (مثل 16ms) دون داعٍ مما يسبب استنزافاً سريعاً لبطارية الهاتف وسخونة المعالج.