Tôi muốn phát triển một ứng dụng sẽ chụp màn hình của màn hình android..không ai biết làm thế nào để làm điều đó ..? mà là tương tự như koushik duttas màn hình shot .. Nhưng với ra bằng cách sử dụng root .. và không ai có ứng dụng ảnh chụp màn hình koushik dutta đang làm việc ..? không làm việc cho tôi .. xin vui lòng cho tôi biết .. cảm ơn trước.Chụp màn hình trong android
Trả lời
Tôi nghĩ rằng không thể không có gốc hoặc SDK, xin lỗi.
Tôi rất muốn được chứng minh là sai.
Không phải là ứng dụng, nhưng nếu bạn có cáp USB, bạn có thể cài đặt Android SDK trên PC và chụp ảnh màn hình từ PC với androidscreencast mà không cần phải root điện thoại của bạn.
Bạn có thể thử một cái gì đó như thế này
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();
}
Hãy nói rằng bạn nhấp vào một nút:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
}
});
Sau đó bạn cần hai phương pháp:
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);
}
}
Bạn có nên sử dụng CompressFormat.PNG thay vì CompressFormat.JPG vì tệp đang được lưu là tệp .png không? (hoặc thay đổi tên tệp thành .jpg) – joshaidan
đây chỉ là ví dụ cơ bản về mã. bạn có thể sử dụng những gì bạn muốn :) –
Tôi chỉ nói rằng, bạn có "screenshot.png" làm tên tệp, nhưng sử dụng CompressFormat.JPEG làm định dạng nén. Không thống nhất. – joshaidan
Phương pháp này view.getDrawingCache() trước tiên sẽ cố gắng truy xuất một hình ảnh mà nó đã lưu trước đó. Điều này có thể gây ra sự cố nếu bạn muốn đảm bảo ảnh chụp màn hình của mình được cập nhật. Ví dụ: nếu người dùng của bạn nhấp vào nút ảnh chụp màn hình của bạn, sau đó thay đổi giao diện người dùng, sau đó nhấp vào giao diện người dùng, ảnh chụp màn hình thứ hai sẽ giống với ảnh chụp màn hình đầu tiên trừ khi bạn xóa bộ nhớ cache. Tôi tìm thấy phương pháp sau đây thuận tiện hơn:
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;
}
HI nichola, cảm ơn câu trả lời của bạn..khi bạn có mã nguồn hoạt động trên điện thoại gốc .. vì mã koushik duttas không hoạt động đối với tôi. –