import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.os.Environment;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class PrintScreenDemoActivity extends Activity {
private Button mButton;
private LinearLayout mLayout;
private int mPrintNum;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inf = this.getLayoutInflater();
mLayout = (LinearLayout)inf.inflate(R.layout.main, null);
setContentView(mLayout);
mButton = (Button)findViewById(R.id.print_btn);
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
GetandSaveCurrentImage();
mPrintNum++;
mButton.setText("截屏次数:"+mPrintNum);
}
});
}
private void GetandSaveCurrentImage()
{
//1.构建Bitmap
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();
Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );
//2.获取屏幕
View decorview = this.getWindow().getDecorView();
decorview.setDrawingCacheEnabled(true);
Bmp = decorview.getDrawingCache();
String SavePath = getSDCardPath()+"/PrintScreenDemo/ScreenImage";
//3.保存Bitmap
try {
File path = new File(SavePath);
//文件
String filepath = SavePath + "/Screen_"+mPrintNum+".png";
File file = new File(filepath);
if(!path.exists()){
path.mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = null;
fos = new FileOutputStream(file);
if (null != fos) {
Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取SDCard的目录路径功能
* @return
*/
private String getSDCardPath(){
File sdcardDir = null;
//判断SDCard是否存在
boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(sdcardExist){
sdcardDir = Environment.getExternalStorageDirectory();
}
return sdcardDir.toString();
}
}
布局文件:
< ?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/print_btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="截屏" />
</LinearLayout>
由于是把截屏的图片存放到sd卡里,所以要在manifest.xml文件中增加对sd卡的写入权限.
转自:http://my.oschina.net/u/246578/blog/77263
分享到:
相关推荐
对于移动设备,例如Android和iOS,通常有电源键+音量键的组合来截取屏幕。 屏幕截取的简单封装,意味着开发者将这个功能集成到一个应用程序或库中,使得用户可以通过调用API或函数来执行屏幕截图。这涉及到编程语言...
总之,Android提供了一套相对简单的接口来截取屏幕图片并保存到外部存储。开发者需要理解权限管理的变化,并根据不同的Android版本调整相应的代码,以确保兼容性和用户体验。在实际开发中,可能还需要考虑异步处理、...
在 Android 开发中,截取手机屏幕是一项常见的需求,例如截取 WebView 的视图保存为图片。今天,我们将讨论两种实现 Android 截取手机屏幕的方案,这两种方案都有其优缺,下面我们将详细介绍。 方法1:使用 View....
最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片。 方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { ...
这条命令会将手机屏幕快照保存为PNG格式的文件,并将其放置在设备的/sdcard/目录下。然后,你可以通过以下命令将截图文件拉取到电脑上: ``` adb pull /sdcard/screenshot.png ``` 这样,截图就会被保存到你的电脑...
在Android开发中,"sdk图片截取"是一个常见的需求,涉及到屏幕截图和图像处理功能。SDK(Software Development Kit)是开发者用来构建应用程序的工具集,其中包括了与图像操作相关的API。下面将详细介绍如何使用...
在Android平台上,截取当前屏幕并保存为图片是一项常见的需求,比如用于用户分享应用界面或者开发者调试。在上述代码中,给出了一个简单的实现方法。以下是对这个实例代码的详细解释: 1. **获取屏幕尺寸**: 首先...
是用底层JNI交叉编译进行截取当前屏幕图片并保存到sdcard根目录下的。已经测试成功了。但是,需要对/dev/graphics/fb0设备文件具有读写权限。如果您机器没有,那么将返回-100。即打不开文档,里面有所有源代码
确保在保存前已经获取到了SD卡的写权限,可以使用`Environment.getExternalStorageDirectory().getPath()`获取SD卡根目录。 5. **展示截图** 要在设备上展示截图,可以创建一个新的`ImageView`,并设置其`src`属性...
5. **保存截图**:截图完成后,图片会自动保存在指定的文件夹,如在Android手机中通常是“storage/sdcard0/_screenshot”目录下。你可以通过文件管理器查看并分享这些图片。 对于没有root权限的手机,截图功能可能...
在大多数Android设备上,可以通过同时按下电源键和音量下键来快速截取屏幕当前的状态。这个快捷键组合是多数Android设备的标准设置,但不同厂商可能会有微小差异,例如某些设备可能需要按电源键和Home键。完成截图后...
最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片。 方法1: 首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { ...
`adb shell screencap -p /sdcard/screenshot.png`会将屏幕截图保存到设备的 `/sdcard` 目录下,然后可以通过`adb pull`命令将图片拉取到本地电脑,例如`adb pull /sdcard/screenshot.png`。 自动截屏工具可能还...
如果你想直接将截图保存到电脑,可以使用 `adb pull /sdcard/screenshot.png 本地保存路径`,这样图片就会被拉取到你指定的本地路径。 压缩包中的文件 `screencap.exe.config`、`screencap.exe` 和 `screencap.pdb`...
"Android scrollView 截图长图生成" Android 中截图是一种常见的需求,特别是在社交媒体分享时,需要截取某个界面的所有内容...通过这些代码,我们可以实现 Android 中的截图功能,生成长图,并将其保存到 sdcard 中。
本文将深入探讨“ScreenShot”这个程序,它允许开发者或用户捕获当前View的屏幕快照并保存到设备的特定目录中。 首先,让我们了解“ScreenShot”程序的核心功能。它修改了原始的截屏程序,使其能够运行并执行以下...
这个批处理脚本会连续截取100张屏幕快照,每秒一张(1000毫秒延迟),并将截图保存到与脚本同一目录下。你可以根据实际需求修改`COUNT`和`DELAY`变量的值。 为了自动化这个过程,可以将批处理脚本放在启动项中,...
这条命令会在设备的/sdcard/目录下创建一个名为screenshot.png的PNG格式图片文件。如果想将截图直接拉取到电脑,可以使用: ``` adb pull /sdcard/screenshot.png . ``` 这会将设备上的截图文件拉取到当前电脑...
通常情况下,可以选择将图片保存到SD卡上,以避免占用应用程序自身的存储空间。例如: ```java public static String SCREEN_SHOTS_LOCATION = "/sdcard/"; ``` 这里的`"/sdcard/"`是指定的SD卡根目录,可以根据...