Android的截屏代码
时间: 2023-12-06 10:44:16 浏览: 71
以下是在 Android 平台上截屏的代码:
```java
// 获取屏幕截图
View view = getWindow().getDecorView().getRootView();
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
// 保存截图到文件
String path = Environment.getExternalStorageDirectory().getPath();
String fileName = "screenshot.png";
File file = new File(path, fileName);
try {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
```
这段代码首先获取当前窗口的根视图,然后将其缓存启用,并创建一个位图对象,将根视图绘制到位图中。接下来,缓存被禁用,并将位图保存到指定的文件中。请确保已添加 WRITE_EXTERNAL_STORAGE 权限。
相关问题
Android 截屏代码
以下是一段Android截屏的代码:
```java
public Bitmap takeScreenshot() {
View rootView = getWindow().getDecorView().getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
}
```
这段代码会返回一个Bitmap对象,其中包含了当前屏幕的截图。注意,这个代码需要在Activity中执行,并且需要在AndroidManifest.xml中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
```
Android连续截屏代码
以下是一个简单的 Android 连续截屏代码示例:
```java
public class MainActivity extends AppCompatActivity {
private Handler handler = new Handler();
private int delay = 1000; // 截屏间隔时间,单位毫秒
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler.postDelayed(new Runnable() {
@Override
public void run() {
takeScreenshot();
handler.postDelayed(this, delay);
}
}, delay);
}
private void takeScreenshot() {
try {
// 获取屏幕截图
View view = getWindow().getDecorView().getRootView();
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
// 保存截图到文件
String filename = "screenshot_" + System.currentTimeMillis() + ".png";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
Log.d("MainActivity", "Screenshot saved to " + file.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这个示例代码会每隔一定时间截取一张屏幕截图,并保存到外部存储器中。注意需要在 AndroidManifest.xml 中添加读写外部存储器的权限:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
阅读全文