Android: ScreenShot / ScreenCapture Code
Con estas líneas podemos hacer una captura de pantalla de nuestra aplicación Android. En este ejemplo la captura se guarda en la sdCard.
Del codigo, hay que tener en cuenta que se hace la captura de un View (viewToBeCaptured), que le tenemos que asignar el layout que queramos capturar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | package com.ideaknow.proves; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class ScreenCaptureActivity extends Activity { private View viewToBeCaptured; private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.button1); viewToBeCaptured = this.findViewById(R.id.mainView); viewToBeCaptured.setDrawingCacheEnabled(true); viewToBeCaptured.buildDrawingCache(); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { Log.v("Saved", "Save screenshot?"); saveFile(); } }); } public void saveFile(){ Bitmap b = viewToBeCaptured.getDrawingCache(); File sd = Environment.getExternalStorageDirectory(); File f = new File(sd, "captureAndroid.png"); try { if (sd.canWrite()) { Log.v("Saved", "Screenshot saved"); f.createNewFile(); OutputStream os = new FileOutputStream(f); b.compress(Bitmap.CompressFormat.PNG, 90, os); os.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } viewToBeCaptured.setDrawingCacheEnabled(false); } } |
package com.ideaknow.proves;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class ScreenCaptureActivity extends Activity {
private View viewToBeCaptured;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button1);
viewToBeCaptured = this.findViewById(R.id.mainView);
viewToBeCaptured.setDrawingCacheEnabled(true);
viewToBeCaptured.buildDrawingCache();
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
Log.v("Saved", "Save screenshot?");
saveFile();
}
});
}
public void saveFile(){
Bitmap b = viewToBeCaptured.getDrawingCache();
File sd = Environment.getExternalStorageDirectory();
File f = new File(sd, "captureAndroid.png");
try {
if (sd.canWrite()) {
Log.v("Saved", "Screenshot saved");
f.createNewFile();
OutputStream os = new FileOutputStream(f);
b.compress(Bitmap.CompressFormat.PNG, 90, os);
os.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
viewToBeCaptured.setDrawingCacheEnabled(false);
}
}
Aun no hay comentarios.