Trước hết tôi đang viết một ứng dụng gốc để quyền root không có vấn đề gì. Tôi đã tìm kiếm và tìm kiếm và tìm thấy rất nhiều mã mà không bao giờ làm việc cho tôi ở đây là những gì tôi đã ghép với nhau cho đến nay và sorta hoạt động. Khi tôi nói sorta tôi có nghĩa là nó làm cho một hình ảnh trên /sdcard/test.png của tôi tuy nhiên các tập tin là 0 byte và rõ ràng là không thể được xem.Android chụp màn hình theo chương trình
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blank);
content = findViewById(R.id.blankview);
getScreen();
}
private void getScreen(){
Bitmap bitmap = content.getDrawingCache();
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Mọi trợ giúp về cách tôi có thể chụp ảnh màn hình qua Android sẽ được đánh giá cao cảm ơn bạn!
=== EDIT ===
Sau đây là tất cả những gì tôi đang sử dụng hình ảnh được thực hiện trên sdcard của tôi và không 0bytes còn nhưng toàn bộ điều là màu đen không có gì trên đó là. Tôi đã gắn kết hoạt động với nút tìm kiếm của tôi vì vậy khi tôi là một số nơi trên điện thoại của tôi tôi tìm kiếm báo chí dài và nó được cho là để có một ảnh chụp màn hình nhưng tôi chỉ nhận được một hình ảnh màu đen? Tất cả mọi thứ được thiết lập trong suốt vì vậy tôi nghĩ rằng nó nên lấy bất cứ thứ gì trên màn hình, nhưng tôi chỉ tiếp tục nhận đen
Manifest
<activity android:name=".extras.ScreenShot"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.SEARCH_LONG_PRESS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:id="@+id/screenRoot">
</LinearLayout>
Ảnh chụp màn hình lớp
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screenshot);
content = findViewById(R.id.screenRoot);
ViewTreeObserver vto = content.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
content.getViewTreeObserver().removeGlobalOnLayoutListener(this);
getScreen();
}
});
}
private void getScreen(){
View view = content;
View v = view.getRootView();
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
String extr = Environment.getExternalStorageDirectory().toString();
File myPath = new File(extr, "test.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myPath);
b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
MediaStore.Images.Media.insertImage(getContentResolver(), b, "Screen", "screen");
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finish();
}
}
k cảm ơn cho câu trả lời sẽ có một cái nhìn tại câu hỏi của bạn vào ngày mai chỉ là quá mệt mỏi vào lúc này. Tôi có một câu hỏi khác mặc dù làm thế nào đến gốc không được gọi là khi tôi làm điều này? và mã này sẽ chỉ chụp ảnh màn hình bố cục chỉ vì tôi muốn chụp ảnh màn hình về những gì trên màn hình tôi đã gắn nó vào phím tìm kiếm khi nhấn lâu – user577732
Ok. Công trình của nó tốt. Nhưng nếu tôi đang sử dụng mã đó để chụp ảnh màn hình của chế độ xem camer thì nó sẽ không hoạt động. –