10

विशिष्ट परिदृश्य समस्याओं से बचने के: सैमसंग उपकरणों में गतिविधि के लिए
व्यवहार तरीके है कि हर बार वहाँ एक परिवर्तन का पता, निकटता के लिए था में अलग था, यह करने के लिए कॉल में बदल सैमसंग उपकरणों पर केवल onPause()/onResume()एंड्रॉयड निकटता सेंसर मुद्दा

मैं onPause() में निकटता सेंसर को साफ़ कर रहा था जिसके परिणामस्वरूप सैमसंग उपकरणों के लिए एक व्यवहार अद्वितीय था।

आशा है कि यह किसी के लिए कुछ समय बचाएगा जो इसका सामना कर रहा है। मैंने onPause() से समाशोधन निकटता सुनने वालों की कॉल को हटा दिया और अब यह उल्लिखित उपकरणों पर अपेक्षित काम करता है।

अद्यतन:

क्या नीचे उल्लेख किया है केवल मुद्दा नहीं है, निकटता सेंसर लगातार कि तरीके से व्यवहार नहीं करता है।

if (!mWakeLock.isHeld()) mWakeLock.acquire();

बेतरतीब ढंग से, if() रिटर्न उल्लेख किया उपकरणों के लिए झूठी इसलिए mWakeLock.acquire() हमेशा नहीं बुलाया जाता है: अन्य मुद्दे को एक एल-ओ-सी है।

संभवतः प्रासंगिक जानकारी:

mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName()); 

जहां

field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32 

मेरे निकटता सेंसर कोड काम करता है गलत तरीके से ही पर
1. सैमसंग GT-I9082 एंड्रॉयड 4.2.2 (एपीआई 17) [डुओस ग्रैंड]
2. सैमसंग एसएम-जी 9 25 आई एंड्रॉइड 5.1.1 (एपीआई 22) [S6 बढ़त]

कोड:

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
    ...new SensorEventListener() { 
       @Override 
       public void onSensorChanged(SensorEvent event) { 
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
         if (event.values[0] <= 5) { //Sleep 
          turnOffScreen(); 
         } else { //Wake 
          turnOnScreen(); 
         }... 
// registering listener with SensorManager.SENSOR_DELAY_NORMAL); 

समस्या: लॉग इन मूल्यों, दोनों उपकरणों उतार चढ़ाव पर निकटता सेंसर द्वारा लौटाए गए हम फोन पर एक हाथ जगह यहाँ तक कि जब लगातार कुछ सेकंड के लिए; 10-15 इसे आगे बढ़े बिना।
तरह:
सैमसंग 6 edge-

02-10 20:12:36.532: D/SensorManager(3467): Proximity, val = 8.0 [far] 
02-10 20:12:36.532: D/SensorManager(29335): Proximity, val = 8.0 [far] 
02-10 20:12:36.532: D/DisplayPowerController(3467): [sensor] setProximitySensorEnabled::unregisterListener 
02-10 20:12:36.532: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityNegative() 
02-10 20:12:36.562: I/Sensors(3467): Proximity old sensor_state 33554560, new sensor_state : 33554432 en : 0 
02-10 20:12:36.632: I/Sensors(3467): Proximity old sensor_state 33554944, new sensor_state : 33555072 en : 1 
02-10 20:12:36.642: D/SensorManager(29335): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0, 
02-10 20:12:36.652: D/SensorManager(29335): Proximity, val = 8.0 [far] 
02-10 20:12:36.662: I/Sensors(3467): ProximitySensor - 8(cm) 
02-10 20:12:36.672: D/SensorManager(29335): Proximity, val = 8.0 [far] 
02-10 20:12:41.752: I/Sensors(3467): Proximity old sensor_state 33554560, new sensor_state : 33554432 en : 0 
02-10 20:12:41.822: I/Sensors(3467): Proximity old sensor_state 33554432, new sensor_state : 33554560 en : 1 
02-10 20:12:41.842: D/SensorManager(29335): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0, 
02-10 20:12:41.842: D/SensorManager(29335): Proximity, val = 8.0 [far] 
02-10 20:12:41.872: I/Sensors(3467): ProximitySensor - 8(cm) 
02-10 20:12:41.872: D/SensorManager(29335): Proximity, val = 8.0 [far] 
02-10 20:12:50.482: I/Sensors(3467): ProximitySensor - 0(cm) 
02-10 20:12:50.482: D/SensorManager(29335): Proximity, val = 0.0 [close] 
02-10 20:12:50.482: D/DisplayPowerController(3467): [sensor] setProximitySensorEnabled::registerListener 
02-10 20:12:50.482: D/SensorManager(3467): registerListener :: 5, TMD4903 Proximity Sensor, 200000, 0, 
02-10 20:12:50.482: D/SensorManager(3467): Proximity, val = 0.0 [close] 
02-10 20:12:50.482: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityPositive() 
02-10 20:12:50.482: D/PowerManagerService(3467): [s] DisplayPowerCallbacks : onProximityPositive() 

सैमसंग Duos: उतार-चढ़ाव मूल्यों ऊपर

  • 8,0 के विपरीत 0.0 में मतभेद है और 5.0 क्या अन्य तरीकों या क्रमचय-संयोजन हो सकता है देखते हैं इस मुद्दे को हल करने के लिए सफलतापूर्वक और सटीक रूप से लागू किया गया?

  • क्या यह विभिन्न सेंसर की वजह से है; जीपी 2 ए निकटता सेंसर और एपीडीएस-9930/क्यूपीडीएस-टी 9 30 निकटता & लाइट?

पहले से ही पर काफी कुछ समय बिताया है it..in व्यर्थ

+0

देखें: http://stackoverflow.com/questions/33405259/why-sensors-value-is- अलग-in- अलग-android-devices/33405362#33405362 –

+0

सटीकता मेरी समस्या नहीं है, या तो सवाल हो गया है गलत समझा या मैं समझ नहीं पाया कि आप क्या कहना चाहते हैं, क्या आप – user2450263

+0

विस्तृत कर सकते हैं, मुझे लगता है कि यह 1 बिट से अधिक मूल्य निकटता सेंसर का अर्थ ओडीएम तक है, इसलिए तथ्य यह है कि मूल्य कवर/अनदेखा होने पर भिन्न होता है यह एक कार्यान्वयन विस्तार और 'गलत' व्यवहार नहीं है। –

उत्तर

2

तो पता चला यह सैमसंग उपकरणों के साथ एक पंजीकृत मुद्दा है, यहाँ है पृष्ठों जो इस का सामना करना पड़ किसी को भी मदद कर सकता है का एक संग्रह है:

  1. onWindowFocusChanged का उपयोग करें। यह मुझे समझ में आया और onPause() से संबंधित मेरा कार्यान्वयन इसके बाद सफल रहा।
    स्रोत और स्पष्टीकरण: activity-onpause-to-handle-focus
    मुझे किसने मदद की: onPause() में;

    @Override सार्वजनिक शून्य onWindowFocusChanged (बूलियन hasFocus) { super.onWindowFocusChanged (hasFocus); अगर (! हैफोकस) { clearProximityListeners(); } }

  2. Issue 74464:Activity#onPause called without Activity#onResume, or can Context#registerReceiver failed

  3. अधिक संदर्भ:
    बिल्कुल अलग पहलू है, अपंजीकृत पर बग ... ओटो बस से .. बोली: For us, this only appears on Samsung devices. And after a quick search,...

कृपया संपादन, सही , यदि उत्तर में कोई और स्पष्टता है तो उत्तर में सुधार करें .. उम्मीद है कि यह कुछ समय बचाएगा।

संबंधित मुद्दे