تعطيل مستشعر الضوء أثناء الاتصال - Android
سؤال
عندما تتحدث على الهاتف في Android ، يعمل مستشعر الضوء. إذا قمت بتغطية الزاوية العلوية اليسرى من الشاشة ، فإن الشاشة تتحول إلى اللون الأسود ولا يمكنك رؤية أي شيء.
أود إلغاء هذه الميزة وحاولت العمل مع أجهزة استشعار Android و ال مستشعر الضوء لكن هذا لا يعمل.
هذا هو الكود الخاص بي:
senMgrLight=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
senMgrLight.registerListener(onSensorListener,
senMgrLight.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_FASTEST);
شكرًا.
المحلول
المستشعر الذي تحتاج إلى العمل معه هو مستشعر القرب ، جرب هذا ، سيعلمك ذلك ما إذا كان المستشعر مخفيًا أم لا (وهو يعمل أثناء مكالمة)
SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
sm.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Log.i(TAG,"sensor: " + event.sensor.getName() + ", values: " + Arrays.toString(event.values));
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG,"accuracy change: " + sensor + ", accuracy: " + accuracy);
}
}, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_FASTEST);
نصائح أخرى
أود استخدام الفصل Settings.System
لقراءة SCREEN_BRIGHTNESS
و ال SCREEN_BRIGHTNESS_MODE
عبر getint () قبل إجراء المكالمة. ثم أود تعيين قيم جديدة عبر setInt () ، وهي 255 من أجل السطوع و SCREEN_BRIGHTNESS_MODE_MANUAL
بالنسبة للوضع - الذي يجب أن يعطي سطوع ثابت بكمية أقصى.
بعد تعليق المكالمة ، يمكنك استعادة القيم القديمة التي قمت بتخزينها قبل تغيير القيم عبر setInt () حتى يحصل المستخدم على إعداداته الأولية. :-)
لا تنس أن الوضع متاح فقط لنظام Android 2.2 وأعلى (مستوى API 8) ، لذلك سيتعين عليك استخدام الانعكاس إذا كنت ترغب في استهداف إصدارات Android القديمة أيضًا. وبالطبع ستحتاج بالتأكيد أذونات لكتابة إعدادات النظام.
يتم التحكم في الشاشة بواسطة مستشعر الوكيل ، وليس مستشعر الضوء. يمكنك إزالة سجل مستشعر الوكيل في تطبيق الهاتف
أراهن أنك ستستمتع بهذا التطبيق بعد ذلك !!
القرب من المستشعر
يعتبر
CVS@2600HERTZ