I had designed my android layout with some textviews and listview,after loading screen i just wanted to take screen shot of that layout and i have to save it on my device.Is it possible or not.
            Asked
            
        
        
            Active
            
        
            Viewed 185 times
        
    0
            
            
        - 
                    Is passible to take screenshot – kalidoss rajendran May 26 '15 at 11:08
- 
                    1see http://stackoverflow.com/questions/2661536/how-to-programatically-take-a-screenshot-on-android – flafoux May 26 '15 at 11:09
- 
                    some guys down vote this question,why you are discourage the freshers. – kalidoss rajendran May 26 '15 at 11:10
- 
                    1I didnt downvoted it, but I can clearly see the reason why other people would do it; the question does not show any kind of effort or whatsoever. – AlvaroSantisteban May 26 '15 at 11:11
- 
                    the given sample not working fine,its throwing some error like source not found @ this line bitmap = Bitmap.createBitmap(v1.getDrawingCache()); and also i used View v1 = getWindow().getDecorView().getRootView(); instead of View v1 = mCurrentUrlMask.getRootView(); because its throwing some error – golla raghu May 26 '15 at 11:20
- 
                    @AlvaroSantisteban i had tried different examples but they didnt work for me,thats why i posted here with my requirement,it is difficult to post all the examples what i had tried – golla raghu May 26 '15 at 11:22
2 Answers
1
            
            
        Bitmap bitmap;
View v1 = findViewById(R.id.rlid);// get ur root view id
v1.setDrawingCacheEnabled(true); 
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
For saving
 ByteArrayOutputStream bytes = new ByteArrayOutputStream();
 bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
 File f = new File(Environment.getExternalStorageDirectory()
                + File.separator + "test.jpg")
 f.createNewFile();
 FileOutputStream fo = new FileOutputStream(f);
 fo.write(bytes.toByteArray()); 
 fo.close();
dont forget to give permission
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
    
    
        Vinay Jayaram
        
- 1,030
- 9
- 29
- 
                    
- 
                    
- 
                    its an simple null pointer exeption,but i had written this code with in the constructor will its work fine – golla raghu May 26 '15 at 11:53
- 
                    I had asked you to can i write it in the constructor,but i didnt get the screen shot – golla raghu May 26 '15 at 11:56
0
            
            
        From How to programatically take a screenshot on Android?
Here is the sample code:
// image naming and path  to include sd card  appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + ACCUWX.IMAGE_APPEND;   
// create bitmap screen capture
Bitmap bitmap;
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
OutputStream fout = null;
imageFile = new File(mPath);
try {
  fout = new FileOutputStream(imageFile);
  bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
  fout.flush();
  fout.close();
} catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
For this you need this permission in manifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
    
    
        Community
        
- 1
- 1
 
    
    
        King of Masses
        
- 18,405
- 4
- 60
- 77
- 
                    Insted of mCurrentUrlMask you can use like this View v1 = getWindow().getDecorView().getRootView(); – King of Masses May 26 '15 at 12:47
- 
                    I had tried but its throwing an error NullException at line bitmap = Bitmap.createBitmap(v1.getDrawingCache()); and i changed these lines in your code String mPath=Environment.getExternalStorageDirectory().toString() + "/" +"test.png"; and File imageFile = new File(mPath); – golla raghu May 26 '15 at 13:38
