2013-03-07 29 views
5

tôi sẽ biết mã để chụp ảnh màn hình của màn hình hiện tại (sau khi nhấn một nút) và lưu nó trên thư viện vì tôi không có thiết bị có thẻ sd. Vì vậy, tôi sẽ lưu trong thư viện mặc định. cảm ơn bạncách chụp ảnh màn hình lập trình và lưu nó trên thư viện?

+0

Không thể trừ khi thiết bị của bạn bị root. – 323go

+0

thử cái này ..... [http://stackoverflow.com/questions/7762643/android-take-screen-shot-programatically][1] [1]: http://stackoverflow.com/questions/7762643/android-take-screen-shot-programatically –

Trả lời

0

Như đã nhận xét, điều này là không thể trừ khi thiết bị của bạn được root, thực sự.

Nhưng nếu có, đó có thể là một công việc tốt cho monkeyrunner hoặc nếu bạn đang sử dụng trình mô phỏng.

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); 

Điều này sẽ thực hiện thủ thuật.

Đối với tiết kiệm

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

bạn có đưa ra câu trả lời ở trên không? – Raghunandan

+2

Hoạt động tốt, câu trả lời hay. Đừng quên thêm quyền hoặc nó sẽ không hoạt động:

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); 

Đối với mã nguồn hoàn chỉnh đi qua blog dưới

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

Để lưu trữ các Bitmap để xem liên kết dưới đây

Android Saving created bitmap to directory on sd card

1

Điều này sẽ lưu vào thư viện. Mã này cũng đặt một đường dẫn hình ảnh .. đó là hữu ích với Intent.SEND_ACTION và email Intents.

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

Tôi biết đây là một vài tháng tuổi, nhưng nó hoạt động ... ngoại trừ .. nó đã chiếm được nội dung của khung nhìn chứ KHÔNG phải các bản xem trước. Làm thế nào để bạn có được một bitmap của tất cả mọi thứ được hiển thị trên đầu trang của xem (aka, toàn bộ màn hình)? – ByteSlinger

Các vấn đề liên quan