uygulama içinden ekran görüntüsü almak ! resimli anlatım :)

Sponsorlu Bağlantılar

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Burak

Üye
    Konu Sahibi
uygulama içinden ekran görüntüsü almak ! resimli anlatım :)
Android platformunda ekran görüntüsü almak için kolay bir yol yok ama en azından kendi uygulamamızın içerisinden, yine kendi uygulamamızın ekran görüntüsünü alabilme şansımız var.

Ne işimize yarayacak derseniz, uygulamanıza, ekranı arkadaşınla paylaş gibi bir özellik ekleyebilirsiniz, ya da ekran görüntüsünü sosyal ağlara gönderebilirsiniz. Aklıma gelen bir başka alan ise o anki ekran görüntüsünü alıp üzerinde image processing yapmak ve başka amaç için kullanmak, mesela kullanıcı, favorilere ekle dediğinde ekran görüntüsünü alıp küçültüp, eğip bükebilir ve bu thumbnail’lerden bir katalog oluşturabilirsiniz

Android 2.1 ile gelen browser’daki bookmark’lar şu şekilde yapılıyor. (resim aşagıda)

Bildiğiniz gibi her Android ekranı bir Activity’den oluşuyor ve her Activity’e bir layout set ediyoruz, her layout’un (aslında view’ın) da bir draw methodu bulunuyor. Sistem gerektiği durumlarda bu draw methodunu çağırıyor ve bir Canvas objesine tasarladığımız layout’u çiziyor. Canvas objesi de Bitmap objesi barındırıyor ve çizim bu bitmap’e yapılıyor.

Bizim ekran görüntüsü almak için çıkış noktamız bu draw methodu olacak, önce kendi Bitmap ve Canvas objemizi yaratacağız ve layout’un draw methoduna bu canvası vereceğiz. Draw methodu bizim Canvas’ımıza çizimi yapacak, böylece kendi yarattığımız Canvas ve dolayısıyla Bitmap’te ekran görüntüsü oluşacak sonra bunu JPEG yapıp sd karta kaydeceğiz

Kod:
private void captureScreen() {
        RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main);
                File root = Environment.getExternalStorageDirectory();
                File file = new File(root,"Ekran.jpg");
        Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), mainLayout
                .getHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        mainLayout.draw(c);
        FileOutputStream fos = ;
        try {
            fos = new FileOutputStream(file);

            if (fos != ) {
                b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
                fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


SD kartımızıda Ekran.jpg isimli bir dosya oluşturmuş olduk
Burada dikkat edilecek konu, findViewById ile layoutumuzu alırken bunun daha önce setContentView() methodu ile inflate edilmiş olması. Eğer setContentView() ile kullanmadığımız bir layout ise bu layout’u manuel inflate etmek gerekecek.
 

Ekli dosyalar

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...


Üst Alt