2012-01-08 10 views
6

जब मैं ब्राउज़र का उपयोग करता हूं तो मैं उस साइट के स्क्रीनशॉट को सहेजना चाहता हूं जिसे मैंने देखा था। क्योंकि कुछ पेज भविष्य में गायब हो जाते हैं। इसलिए मैंने एक पृष्ठभूमि सेवा करने का फैसला किया जो साइट पर आने पर नियमित समय पर स्क्रीनशॉट करेगा www.site.com। मुझे कोई टिप्स, ट्यूटोरियल के लिंक, उदाहरण, ... कौन दे सकता है?किसी अन्य एप्लिकेशन की पृष्ठभूमि सेवा से स्क्रीनशॉट (प्रोग्रामेटिक रूप से)

पीएस मेरा फोन जड़ है। एंड्रॉइड 2.1। और नहीं कहता कि यह असंभव है :)

अद्यतन:

JPG प्रारूप या HTML एक अंतर के बिना में स्क्रीनशॉट। विधि जो बनाना आसान है।

+1

पीएनजी/जेपीजी या एचटीएमएल स्क्रीनशॉट में स्क्रीनशॉट? यदि पूर्व है, तो अपने यूआई थ्रेड से पिक्चर लिस्टनर # ऑन न्यू पिक्चर() का उपयोग करें, फिर इसे सेवा में भेजें। –

उत्तर

10
Process sh = Runtime.getRuntime().exec("su", null,null); 

         OutputStream os = sh.getOutputStream(); 
         os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII")); 
         os.flush(); 

         os.close(); 
         sh.waitFor(); 

    then read img.png as bitmap and convert it jpg as follows 

Bitmap screen = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ File.separator +"img.png"); 

//my code for saving 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     screen.compress(Bitmap.CompressFormat.JPEG, 15, bytes); 

//you can create a new file name "test.jpg" in sdcard folder. 

File f = new File(Environment.getExternalStorageDirectory()+ File.separator + "test.jpg"); 
       f.createNewFile(); 
//write the bytes in file 
     FileOutputStream fo = new FileOutputStream(f); 
     fo.write(bytes.toByteArray()); 
// remember close de FileOutput 

     fo.close(); 
+1

केवल रूट किए गए फोन पर काम करता है – Gabor

+0

यदि आप किसी अन्य एप्लिकेशन के स्क्रीनशॉट तक पहुंचना चाहते हैं, तो आपको रूट अनुमति की आवश्यकता है। मुझे आशा है कि सवाल इतना है ... –

+0

और गैर रूट फोन के बारे में क्या ?? –

2

सबसे खराब स्थिति परिदृश्य आप यूएसबी के माध्यम से प्लग इन करते समय एंड्रॉइड एसडीके का उपयोग कर सकते हैं और स्क्रीन शॉट ले सकते हैं।