19

स्क्रीन चालू करते समय ठीक से फिर से नहीं चलाते हैं मेरे पास एक वीडियो है जो पोर्ट्रेट मोड में चलता है। वीडियो के अंत में, मुझे इसके बारे में कुछ विचार दिखाना होगा। यह अब तक ठीक काम करता है।एंड्रॉइड - एक पूर्णस्क्रीन वीडियो के आखिरी फ्रेम पर ओवरलेड दृश्य

हालांकि, मुझे समस्या है, जहां वीडियो के आखिरी फ्रेम में दिखाई देने वाले दृश्य स्क्रीन बंद करने के बाद गतिविधि पर वापस आने पर ठीक से फिर से नहीं हटते हैं, फिर स्क्रीन पर अनलॉक करते हैं।

जो मैं देख रहा हूं वह यह है कि जब स्क्रीन वापस आती है और मैं अनलॉक करता हूं। मेरे वीडियो और छवियों को पहले पूर्णस्क्रीन मोड के बाहर प्रस्तुत किया जाता है (स्टेटस बार अभी भी दिखा रहा है) तो स्क्रीन सभी दृश्यों को स्थानांतरित करने और आर्टिफैक्टिंग के कारण पूर्णस्क्रीन मोड में जाएगी।

ऐसा लगता है कि उनके द्वारा प्रस्तुत किए जाने के बाद पूर्ण स्क्रीन पर संक्रमण के दृश्यों को उनके दृश्य सीमा से बाहर स्थानांतरित किया जा रहा है।

मैं वास्तव में ऐसा होने से रोकने के लिए वास्तव में स्टंप हूं।

Here is the sandbox project on github कोड को पूरा करने से बचने के लिए।

परियोजना के लिए बुनियादी सेटअप यह है:

टुकड़ा गतिविधि एक वीडियो दृश्य है और उस पर एक बटन व्यू लेआउट है। फिर यह एक सामग्री दृश्य कंटेनर में एक टुकड़ा जोड़ता है। वीडियो प्लेबैक के अंत से पहले सामग्री दृश्य 1 सेकंड में फीका होता है।

सबकुछ सुचारू रूप से काम करता है और समस्या स्क्रीन को चालू और बंद करने के बाद ऐप पर वापस लौटने के साथ होती है।

इसके अलावा, कभी-कभी वीडियो काले रंग की पृष्ठभूमि के ऊपर बैठे विचारों को छोड़कर पूरी तरह से बाहर निकल जाएगा।

आपकी सहायता के लिए अग्रिम धन्यवाद।

proper rendering of views over video

यहाँ artifacting होता है कि जब आप स्क्रीन बंद करने, पीठ पर, और अनलॉक है। ध्यान दें कि मुझे इसकी एक तस्वीर लेनी थी। डीडीएमएस पर स्क्रीनशॉट उपकरण छवियों को ठीक से देखता है।

artifacted image

उत्तर

3

स्क्रीन को बंद करने से रोकने के बजाए, जब आप फोन को जागने के बाद उपयोगकर्ता कुंजीगार्ड को खोलता है तो आप एक ईवेंट प्राप्त करने का विकल्प चुन सकते हैं।

इस बिंदु पर, View.invalidate पर अपने दोनों विचारों पर कॉल करना एक अच्छा विचार हो सकता है, इससे एक रेड्रा हो सकता है। लॉक स्क्रीन बहुत ऊपर है, जबकि लॉक स्क्रीन बहुत तेज है, क्योंकि आपका ऐप लॉक स्क्रीन के नीचे तकनीकी रूप से दिखाई देता है।

registerReceiver(new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context ctx, Intent intent) { 
      if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)) 

     } 
    }, new IntentFilter(Intent.ACTION_USER_PRESENT)); 
+0

सुझाव कॉलिन के लिए धन्यवाद। मैं इसे आज़मा दूंगा। –

+0

एनपी! उम्मीद है कि यह काम करता है :) –

+0

धन्यवाद कॉलिन। इससे निश्चित रूप से मदद मिली, मैंने यह नहीं पता कि इसे अभी कैसे ठीक किया जाए, लेकिन आपका सुझाव समस्या को दर्शाता है। मुद्दा यह है कि जब आप लॉक स्क्रीन देख रहे हों तो रेस्यूम को कॉल किया जाता है। लॉक स्क्रीन पर स्टेटस बार दिखाई देता है जो अनुचित ड्राइंग का कारण बनता है। उपयोगकर्ता के इरादे को प्राप्त करने से समस्या को ठीक करने में मदद मिलेगी। केवल अब मुद्दा यह है कि विचारों पर अमान्य कॉलिंग का कोई असर नहीं पड़ा। लेकिन यह आसान हिस्सा होना चाहिए। एक बार फिर धन्यवाद! –

0

ऐसा लगता है कि ओवरले लेआउट की तरह नियंत्रक बार से स्थानांतरित किया गया।
क्या आपको नहीं लगता कि यह नियंत्रक (प्ले/पॉज़/एफएफ/रीव + प्रगति) क्षेत्र से प्रभावित था?

+0

हाय जोना। पक्का नहीं आपका क्या मतलब है। मेरे पास इस mediaplayer उदाहरण के लिए कोई नियंत्रक सेट नहीं है।लेकिन क्या यह सुनिश्चित करने के लिए कुछ और करना चाहिए कि नियंत्रक बार हस्तक्षेप नहीं करता है? –

0

स्क्रीन को पहले स्थान पर जाने से रोकने का एक तरीका हो सकता है क्योंकि यह आपके पुनः आकर्षित मुद्दों को हल करने में अच्छा होगा, उम्मीद है कि इससे मदद मिलती है।

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