Screen Capture en android

Quiero desarrollar una aplicación que tome una captura de pantalla de Android … ¿alguien sabe cómo hacerlo …? que es similar a la captura de pantalla de koushik duttas … Pero sin usar root … y ¿alguien tiene una aplicación de captura de pantalla de koushik dutta que funciona …? no está funcionando para mí … por favor házmelo saber … gracias de antemano.

Digamos que hizo clic en un botón:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = takeScreenshot(); saveBitmap(bitmap); } }); 

Después de eso necesitas estos dos métodos:

 public Bitmap takeScreenshot() { View rootView = findViewById(android.R.id.content).getRootView(); rootView.setDrawingCacheEnabled(true); return rootView.getDrawingCache(); } public void saveBitmap(Bitmap bitmap) { File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png"); FileOutputStream fos; try { fos = new FileOutputStream(imagePath); bitmap.compress(CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { Log.e("GREC", e.getMessage(), e); } catch (IOException e) { Log.e("GREC", e.getMessage(), e); } } 

Puedes probar algo como esto

 private RelativeLayout view; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); view = (RelativeLayout)findViewById(R.id.relativeView); View v1 = view.getRootView(); v1.setDrawingCacheEnabled(true); Bitmap bm = v1.getDrawingCache(); } 

El método view.getDrawingCache () primero intentará recuperar una imagen previamente almacenada en caché. Esto puede causar problemas si desea garantizar que su captura de pantalla esté actualizada. Por ejemplo, si su usuario hace clic en su botón de captura de pantalla, luego cambia la interfaz de usuario y luego vuelve a hacer clic, la segunda captura de pantalla será idéntica a la primera, a menos que limpie la caché. Encuentro el siguiente método más conveniente:

 public Bitmap takeScreenshot() { View rootView = findViewById(android.R.id.content).getRootView(); Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); rootView.draw(canvas); return bitmap; } 

Creo que es imposible sin root o el SDK, lo siento.

Me encantaría que se demuestre que estoy equivocado.

No es una aplicación, pero si tiene un cable USB, puede instalar el SDK de Android en una PC y tomar capturas de pantalla desde la PC con androidscreencast , sin tener que rootear su teléfono.