Tôi muốn triển khai một số loại công cụ hỗ trợ từ xa (như vnc) cho Android. Có khả năng chụp màn hình lập trình trên thiết bị không?Screencapture có lập trình trên thiết bị di động
Trả lời
Something như thế có thể làm việc cho bạn:
View v = view.getRootView();
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
Có một cuộc thảo luận dài này trên android-developers, nhưng câu trả lời ngắn gọn là: Bạn có thể không programatically chụp màn hình của màn hình một thiết bị Android của tại khoảnh khắc, trừ khi
- Bạn có quyền root trên điện thoại đó, hoặc
- ứng dụng của bạn là một ứng dụng hệ thống
Giấy phép kê khai Android READ_FRAME_BUFFER tồn tại (xem tài liệu api here), nhưng hiện tại chỉ có thể được sử dụng bởi các ứng dụng hệ thống. Có nhiều lý do cho điều này, một là vì nó là một nguy cơ bảo mật. Nếu một nền có thể chụp ảnh màn hình của màn hình điện thoại bất cứ lúc nào, thì mọi người có thể sử dụng các kỹ thuật OCR để đánh cắp mật khẩu của người dùng khi chúng được nhập vào, trong số các thông tin cá nhân khác.
Vì vậy, không, ứng dụng VNC không thể thực hiện tại thời điểm này mà không có gốc. Để chụp ảnh màn hình từ máy tính của bạn (trong khi điện thoại được cắm qua usb), bạn có thể sử dụng DDMS.
Dựa trên những gì bạn đã nói ở đây, có vẻ như một ứng dụng hệ thống có thể được cài đặt thông qua phục hồi không có chứng khoán và không nhất thiết cần đến ROM chính nó được bắt nguồn từ. Tôi chưa từng nghe về bất kỳ ứng dụng hệ thống VNC nào, thậm chí là 1,75 năm sau khi bạn đăng câu trả lời này. Có rất nhiều người dùng ROM tùy chỉnh trên mạng và có vẻ như có một khoảng trống ở đó đang chờ ai đó đến cùng với một ứng dụng VNC tốt. –
Về điểm 2: bạn không chỉ đơn thuần là một ứng dụng hệ thống (tức là trong thư mục hệ thống), bạn phải được ký bằng phím OS, điều này còn hạn chế hơn nhiều. Đây là sự khác biệt giữa sự cho phép là "signatureOrSystem" và "signature". –
Bạn có thể thử thư viện sau: http://code.google.com/p/android-screenshot-library/ Ảnh chụp màn hình Android Thư viện (ASL) cho phép chụp ảnh màn hình theo chương trình từ thiết bị Android mà không yêu cầu quyền truy cập root. Thay vào đó, ASL sử dụng một dịch vụ gốc chạy trong nền, bắt đầu thông qua Cầu gỡ lỗi Android (ADB) một lần cho mỗi lần khởi động thiết bị.
Câu trả lời của bạn rất hữu ích cho tôi nhưng khi tôi sử dụng thư viện này, nó tiếp tục hiển thị cho tôi một bánh mì nướng nói "Không tìm thấy dịch vụ gốc". Bạn đã gặp phải một vấn đề như vậy nếu vậy hãy giúp tôi. Cảm ơn –
"Không tìm thấy dịch vụ gốc" cho tôi .... tôi thiếu gì ở đây? –
Tôi nghĩ rằng có thể trong kitkat bằng cách sử dụng lệnh adb để chụp màn hình. Bạn có thể sử dụng lệnh này để màn hình ghi lại như một đoạn video
adb shell screenrecord /sdcard/demo.mp4
Bạn có thể tìm thêm chi tiết here
bạn có thể thực hiện lệnh adb từ ứng dụng của bạn. Kiểm tra câu trả lời here
Không. Sau khi thực thi: 'screenrecord --verbose --time-limit 5 /sdcard/recvid.mp4' trên phương thức getRuntime(). Exec() ... Quá trình này chạy, tuy nhiên tôi nhận được lỗi: "Permission Denial: broadcast yêu cầu chạy như người dùng -1 nhưng đang gọi từ người dùng 0; điều này yêu cầu android.permission.INTERACt_ACROSS_USERS_FULL .. "Tuy nhiên tôi đã có thể chạy 'screenrecord --help' tốt! – giannileuani
Các VNC-type tol từ xa không tồn tại cho "một số" các thiết bị Android (chủ yếu là Samsung):
TeamViewer QuickSupport
https://play.google.com/store/apps/details?id=com.teamviewer.quicksupport.market
Dos ai biết cách cụ mà được màn hình chụp và tại sao nó chỉ hỗ trợ một số thiết bị giới hạn?
đặt nó trong onClick ..
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
và viết funtcion ..
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);
}
}
- 1. Trang web lập trình dành cho thiết bị di động
- 2. Javascript profiling trên thiết bị di động
- 3. Tắt di chuyển trên thiết bị di động
- 4. Tính năng di chuột css có hoạt động trên thiết bị di động không?
- 5. Nút Bootstrap bị "kẹt" trên thiết bị di động
- 6. Phóng to trong trình duyệt có giống như phóng to trên thiết bị di động không?
- 7. Trượt trên thiết bị di động jQuery không hoạt động
- 8. hộp tổ hợp mở tự động trên trình duyệt di động cho các thiết bị Android
- 9. Có thể tránh các trình phát video gốc trên thiết bị di động không?
- 10. phát hiện thiết bị trình duyệt di động trong .NET
- 11. Thiết bị di động được phát hiện là thiết bị không di động
- 12. Lập trình kết nối với thiết bị Android trong Điểm phát sóng di động
- 13. Hành vi video HTML5 trên thiết bị di động
- 14. Hỗ trợ WebSocket trên thiết bị di động
- 15. cách mô phỏng trình duyệt trên thiết bị di động (android) trên máy tính để bàn
- 16. fullcalendar nhiều ô được chọn trên thiết bị di động?
- 17. Ghép màu trên thiết bị di động jQuery
- 18. Hỗ trợ iframe trên thiết bị di động
- 19. jsfiddle thay thế trên thiết bị di động?
- 20. Cách quản lý tệp trên Thiết bị di động MTP?
- 21. Facebook chia sẻ trên thiết bị di động
- 22. Trình mô phỏng thiết bị di động Windows - Tạo thiết bị có độ phân giải tùy chỉnh
- 23. Thông báo ứng dụng Facebook trên thiết bị di động
- 24. Chiều cao trang trên thiết bị di động jQuery
- 25. Tự động phát Youtube không hoạt động trên thiết bị di động có trình phát HTML5 được nhúng
- 26. Chuyển đổi ngôn ngữ lập trình trên thiết bị Android
- 27. Google Map trong thiết bị di động
- 28. Nút Thích trên Facebook gây ra di chuyển ngang trên thiết bị di động
- 29. Phát hiện thiết bị bluetooth ẩn/không hiển thị trên thiết bị di động
- 30. Android 2.2: Khởi động lại thiết bị theo lập trình
Cảm ơn, đây chỉ là những gì tôi cần!Tôi đã có một vấn đề tương tự nhưng tôi chỉ muốn một Bitmap của ứng dụng của tôi, không phải là giao diện người dùng hệ điều hành vv –