2017-11-17 11 views
5

मुझे पता है कि स्क्रीनशॉट को कैप्चर करने के बारे में बहुत सारे प्रश्न हैं, और मैंने उनमें से अधिकांश की जांच की है। उनके पास एक ही जवाब है (छोटे कोड विविधता के साथ)।स्क्रीनशॉट कैप्चर कैसे करें?

मैं स्क्रीनशॉट कैप्चरिंग के लिए विधि निम्नलिखित है:

@NonNull 
public static Bitmap takeScreenShot(Window window) throws IOException { 
    final View rootView = window.getDecorView().getRootView(); 
    final boolean drawingCacheEnabled = rootView.isDrawingCacheEnabled(); 
    rootView.setDrawingCacheEnabled(true); 

    try { 
     return Bitmap.createBitmap(rootView.getDrawingCache()); 
    } finally { 
     rootView.setDrawingCacheEnabled(drawingCacheEnabled); 
    } 
} 

और तुम इस तरह इसका इस्तेमाल कर सकते हैं: takeScreenShot(getActivity().getWindow())

हालांकि इन दृष्टिकोण कई सीमाएँ हैं:

  1. आप कुछ संवाद है, तो स्क्रीन पर उन्हें स्क्रीनशॉट पर कब्जा नहीं किया जाएगा।
  2. क्या यह हार्डवेयर त्वरित दृश्यों के साथ काम करेगा? प्रलेखन के लिए अनुसार:

    जब हार्डवेयर त्वरण चालू है,
    ड्राइंग कैश को सक्षम करने के प्रतिपादन क्योंकि इस प्रणाली त्वरण जो ध्वज पर ध्यान नहीं देता

  3. स्क्रीनशॉट के लिए एक
    अलग तंत्र का उपयोग करता है पर कोई प्रभाव नहीं GLviews के बजाय ब्लैक बॉक्स शामिल हैं। (उदाहरण के लिए जब आपके पास ऐप के नक्शे हैं।)। ऐसा लगता है कि दूसरे बिंदु के परिणामस्वरूप।

तो मेरा सवाल यह है कि, बिना किसी समाधान के कोई समाधान है जो कम से कम मेरे कुछ मुद्दों को हल कर सकता है?

+0

पट्टे पर मैं संवादों पर कब्जा करना चाहते हैं: https://github.com/AndroidDeveloperLB/ScreenshotSample

इसके अलावा, निम्नलिखित उपयोगी पढ़ने हो जाएगा –

उत्तर

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

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