`

屏幕截图并email

阅读更多
效果图挺恶心,哈哈哈!
[img]

[/img]

布局文件就一个Button
<?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/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_text" />
</LinearLayout>


主要代码如下:
ScreenshotTools
package com.magus.screen;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Environment;
import android.os.StatFs;
import android.view.View;
import android.widget.Toast;

public class ScreenshotTools {

	/***
	 * @author Johnson
	 * 
	 * */

	public static long minSizeSDcard = 50;
	public static String filePath = Environment.getExternalStorageDirectory()
			+ "/FJBICache";
	public static String fileName = "chart.png";
	public static String detailPath = filePath + File.separator + fileName;
	public static final int SEND_EMAIL = 1;

	// public static String detailPath="/sdcard/FjbiCache/chart.png";

	/**
	 * 调用系统程序发送邮件
	 * 
	 * @author Johnson
	 * 
	 * */

	private static void sendEmail(Context context, String[] to, String subject,
			String body, String path) {

		Intent email = new Intent(android.content.Intent.ACTION_SEND);

		if (to != null) {
			email.putExtra(android.content.Intent.EXTRA_EMAIL, to);
		}
		if (subject != null) {
			email.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
		}
		if (body != null) {
			email.putExtra(android.content.Intent.EXTRA_TEXT, body);
		}
		if (path != null) {

			/*
			 * 用email.setType("image/png");或者email.setType(
			 * "application/octet-stream"); 都不会影响邮件的发送
			 * 为什么email.setType("image/png"
			 * );而不用email.setType("application/octet-stream"); ?
			 * 因为在开发中发现setType("image/png"),系统会同时给你调用彩信,邮件,等.....
			 */

			File file = new File(path);
			email.putExtra(android.content.Intent.EXTRA_STREAM,
					Uri.fromFile(file));
			email.setType("image/png");
		}
		context.startActivity(Intent.createChooser(email, "请选择发送软件"));

	}

	/**
	 * 获取指定Activity的截屏,保存到png文件
	 * 
	 * @author Johnson
	 * **/

	private static Bitmap takeScreenShot(Activity activity) {
		// View是你需要截图的View
		View view = activity.getWindow().getDecorView();
		view.setDrawingCacheEnabled(true);
		view.buildDrawingCache();
		Bitmap b1 = view.getDrawingCache();

		// 获取状态栏高度
		Rect frame = new Rect();
		activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
		int statusBarHeight = frame.top;
		System.out.println(statusBarHeight);

		// 获取屏幕长和高
		int width = activity.getWindowManager().getDefaultDisplay().getWidth();
		int height = activity.getWindowManager().getDefaultDisplay()
				.getHeight();
		// 去掉标题栏
		// Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
		Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height
				- statusBarHeight);
		view.destroyDrawingCache();
		return b;
	}

	/**
	 * 截图保存
	 * 
	 * @author Johnson
	 * **/
	private static void savePic(Bitmap b, String filePath, String fileName) {

		File f = new File(filePath);

		if (!f.exists()) {
			f.mkdir();
		}
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(filePath + File.separator + fileName);
			if (null != fos) {
				b.compress(Bitmap.CompressFormat.PNG, 90, fos);
				fos.flush();
				fos.close();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 
	 * 截屏并发送邮件
	 * 
	 * @author Johnson
	 * **/
	public static void takeScreenShotToEmail(Context context, Activity a) {

		if (getAvailableSDcard(context)) {
			savePic(takeScreenShot(a), filePath, fileName);

			// selectDialog(context);
			sendEmail(context, null, null, null, detailPath);
		}

	}

	/***
	 * Sd判断SD卡是否可用
	 * 
	 * @author Johnson minSizeSDcard>50kb
	 * */

	public static boolean getAvailableSDcard(Context context) {

		boolean sdCardExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在

		System.out.println("+++" + sdCardExist);
		if (sdCardExist) {
			File path = Environment.getExternalStorageDirectory();
			StatFs stat = new StatFs(path.getPath());
			long blockSize = stat.getBlockSize();
			long availableBlocks = stat.getAvailableBlocks();
			long sdCardSize = (availableBlocks * blockSize) / 1024;// KB值

			if (sdCardSize > minSizeSDcard) {
				System.out.println("SDcardSize:::" + minSizeSDcard + "KB");
				return true;
			} else {
				Toast.makeText(context, "SD卡空间不足", Toast.LENGTH_SHORT).show();
			}

		} else {
			Toast.makeText(context, "请在使用转发功能之前插入SD卡", Toast.LENGTH_SHORT)
					.show();

		}
		return false;
	}

}



ScreenshotActivity:
package com.magus.screen;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ScreenshotActivity extends Activity {
    /** Called when the activity is first created. */
	
	Button bt;
	Context mContext;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bt=(Button)findViewById(R.id.button1);
        mContext=this;
        bt.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				ScreenshotTools.takeScreenShotToEmail(mContext, ScreenshotActivity.this);
			}
		});
        
        
       
    }
}


本文转载自:http://johnson008.blog.51cto.com/4000361/743048 ,谢谢作者的指教.
  • 大小: 10.4 KB
分享到:
评论

相关推荐

    FastStone Capture Portable(屏幕截图) v7.6 绿色单文件版

    《FastStone Capture Portable:全能屏幕截图与视频录制神器》 FastStone Capture Portable是一款深受用户喜爱的屏幕截图和视频录制工具,其v7.6版本以其绿色便携、功能全面的特点,成为了众多IT工作者和普通用户的...

    非常好的截图软件

    同时,软件还提供了直接发送到Email、FTP服务器或者复制到剪贴板的功能,便于快速分享截图。 4. **定时截图**:对于需要定期捕获屏幕画面的情况,FSCapture的定时截图功能十分实用。用户可以设置间隔时间,让软件...

    Screenpresso Pro截图工具1.5.2注册版.rar

    Screenpresso Pro是一款屏幕截图和视频截图软件,通过预先设置的截图快捷键,你可以对屏幕任意位置进行截图,截取的范围包括指定区域、全屏幕等。可以对正在播放的视频进行截图,也可以从网络摄像摄像头截图。截取...

    Live Capture截图/截屏

    * 屏幕截图 各种输出文件方式,可以自定灵活的文件名,以及输出到Word,Excel,PPT,画图,windows图片和传真查看器,外部编辑器(可自定义),发送到Email,FTP空间,Web空间 全屏 激活窗口 窗口控件 选择区域...

    周期性的抓屏并发送EMAIL+c#

    标题 "周期性的抓屏并发送EMAIL+c#" 描述了一个使用C#编程语言开发的Windows桌面应用程序,该程序具有定期截取屏幕快照并将其通过电子邮件发送的功能。这涉及到多个IT知识点,包括图形用户界面(GUI)设计、定时任务...

    web截图上传和邮发到邮箱

    1.WEBScreenShot支持在IE等WEB Brower中使用屏幕截图功能,并把截图选择区以BMP/JPG/GIF格式上传到服务器或EMail到指定的邮箱中 2.用户可以任意选择截图中的区域,可以移动选择区,动态调整选择区大小,可以用笔涂鸦或用...

    FSCapture截图工具

    FSCapture是一款深受用户喜爱的屏幕截图软件,它以其高效、易用的特点在众多同类软件中脱颖而出。该工具不仅提供基础的截图功能,还集成了丰富的编辑工具,使得用户在捕获屏幕图像后能够进行快速编辑和处理,极大地...

    定时随机任务时间截取屏幕并发送到邮箱

    在Linux或macOS中,可以使用X11或 Quartz 库来获取屏幕截图。在Python中,可以使用PIL(Python Imaging Library)或screenshot库来实现这一功能。 4. **图像处理**:截取的屏幕图像可能需要进行压缩或格式转换,...

    优秀免费的桌面截图工具 Bug Shooting 2.17.2.849 中文版.zip

    与BUG射击,造成屏幕截图,并把他们送到各种bug跟踪和问题管理系统,电子邮件,图像编辑和即时消息应用程序是一件轻而易举的完成。 智能捕获模式 捕获 随着智能拍摄模式,这很简单,只要前所未有的捕捉画面。您可以...

    EMAIL verify 软件 v.178

    "屏幕截图.jpg"则为用户提供软件界面和操作流程的直观展示,便于理解软件的使用方法;而"使用说明-readme.txt"则是详细的使用指南,解答用户在使用过程中可能遇到的问题。 "EMAIL verify 软件 v.1.78"的核心功能...

    最好用的截图工具

    FSCapture是一款广受好评的屏幕截图软件,以其易用性和丰富的功能集而闻名。作为“gongju”(工具)类软件的代表,FSCapture满足了用户对高效截图和编辑的需求。以下我们将详细讨论FSCapture 7.7的主要功能和使用...

    超好用右键截图工具

    是一个功能强大的屏幕图像捕捉程序, 支持鼠标和快捷键两种捕捉方式, 支持任意图形、长方形、窗口、整个桌面四种捕捉范围, 捕捉后的图片可以直接复制到剪贴板, 保存为文件, 用Email发给朋友, 通过内置的FTP软件...

    自动截图发送邮件+python+excel

    2. **PIL(Python Imaging Library)**: 用于截图功能,PIL是Python的一个图像处理库,能够捕获屏幕上的指定区域并保存为图像文件。在本项目中,我们可以通过PIL的`ImageGrab`模块来实现自动截图。 3. **Openpyxl**...

    一种快速截图小软件,非常实用。

    对于那些需要频繁截图的人来说,能够快速、准确地捕获并保存屏幕图像的能力是至关重要的。 此外,“非常好用”这一评价表明该软件的用户体验设计良好。这可能包括了直观的用户界面、清晰的指导提示、以及便捷的...

    Faststone_Capture截图软件

    Faststone Capture是一款功能强大的屏幕截图工具,深受用户喜爱。它集成了多种截图方式,包括全屏、活动窗口、矩形区域、任意形状、滚动窗口等多种模式,满足用户在不同场景下的截图需求。软件体积小巧,运行速度快...

    Garuda-Javascript-Syntax:语法Garuda Javascript的屏幕截图

    语法屏幕截图由Carbon( )进行专辑1个Basic.png2鹰航Component.png3 Ajax.png4 Single Data.png5 Multiple Data.png6 Input Focus Value.png7 Button Event.png8预览Image.png9从URL.png加载图像10鼠标Scroll.png11...

    FSCapture-最好用的截图软件

    - **窗口截图**:FSCapture能自动识别并捕获屏幕上任何打开的窗口,包括活动窗口和非活动窗口。 - **全屏截图**:一键捕捉整个显示器的屏幕内容,方便快捷。 - **自由形状截图**:允许用户以自由曲线的形式选取...

    IE浏览器截图插件-LightShot for

    IE浏览器截图插件LightShot for Internet ExplorerIE浏览器截图工具取代了标准的Windows PrtScr命令并允许您拍摄桌面上或整个屏幕所选区域本站提供的软件我们限于能力及系统等问题,无法保证所有软件都没有任何问题...

    Python实用工具,email模块,Python实现邮件远程控制自己电脑.pdf

    - `PIL`(Python Imaging Library):用于屏幕截图。 - `email`:Python内置模块,用于处理电子邮件消息。 - 另外,Python自带的一些模块也会被用到,例如`time`和`re`。 **环境搭建**: 1. 安装Python并配置...

    Python-EmailMyPC通过邮件远程监控你的电脑

    5. **文件传输**:如果指令涉及文件,例如发送截图,Email My PC需要将文件附加到回邮中。Python的email和smtplib库可以帮助完成这一过程,包括文件的读取、编码和附件的创建。 6. **安全性**:由于涉及远程操作,...

Global site tag (gtag.js) - Google Analytics