2013-03-07 17 views
5

Chciałbym wiedzieć, jaki jest kod, aby zrobić zrzut ekranu z bieżącego ekranu (po naciśnięciu przycisku) i zapisać go w galerii, ponieważ nie mam urządzenia z kartami SD. Więc chciałbym zapisać w domyślnej galerii. dziękujęjak programowo zrobić zrzut ekranu i zapisać go w galerii?

+0

Nie jest to możliwe, chyba że urządzenie jest zrootowane. – 323go

+0

próbować ten jeden ..... [http://stackoverflow.com/questions/7762643/android-take-screen-shot-programatically][1] [1]: http://stackoverflow.com/questions/7762643/android-take-screen-shot-programatycznie –

Odpowiedz

0

Jak skomentował 323go, nie jest to możliwe, chyba że urządzenie jest zrootowane, naprawdę.

Ale jeśli tak, może to być dobra robota dla monkeyrunner lub jeśli używasz emulatora.

9
Bitmap bitmap; 
    View v1 = findViewById(R.id.rlid);// get ur root view id 
    v1.setDrawingCacheEnabled(true); 
    bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
    v1.setDrawingCacheEnabled(false); 

To powinno wystarczyć.

Do zapisywania

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(); 
+0

czy udzieliłeś powyższej odpowiedzi? – Raghunandan

+2

Działa dobrze, dobra odpowiedź. Nie zapomnij dodać uprawnień lub nie będzie działać:

4
View v1 = L1.getRootView(); 
    v1.setDrawingCacheEnabled(true); 
    Bitmap bm = v1.getDrawingCache(); 
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); 
    image = (ImageView) findViewById(R.id.screenshots); 
    image.setBackgroundDrawable(bitmapDrawable); 

Dla pełnego kodu źródłowego przejść poniższym blogu

http://amitandroid.blogspot.in/2013/02/android-taking-screen-shots-through-code.html

Do przechowywania bitmapy, aby zobaczyć link poniżej

Android Saving created bitmap to directory on sd card

1

Spowoduje to zapisanie w galerii. Kod ustawia również ścieżkę obrazu. Jest to przydatne w przypadku funkcji Intent.SEND_ACTION i zamiarów e-mail.

String imagePath = null; 
Bitmap imageBitmap = screenShot(mAnyView); 
if (imageBitmap != null) { 
    imagePath = MediaStore.Images.Media.insertImage(getContentResolver(), imageBitmap, "title", null); 
} 


public Bitmap screenShot(View view) { 
    if (view != null) { 
     Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), 
       view.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(bitmap); 
     view.draw(canvas); 
     return bitmap; 
    } 
    return null; 
} 
+0

Wiem, że to kilka miesięcy, ale to działało ... z wyjątkiem .. - przechwycił zawartość widoku, ale NIE wyświetlił pod-widoków. Jak uzyskać bitmapę wszystkiego, co jest wyświetlane w górnej części widoku (czyli cały ekran)? – ByteSlinger

Powiązane problemy