精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android開發實例:實現屏幕截圖及郵件發送功能

移動開發 Android
我們大家在用電腦的時候,都用過截屏的功能,有的時候截屏給我們帶來了很多方便。那么我們怎么才能在Android上實現這個功能呢?下面我們就給大家提供一些代碼用以實現Android上的截屏功能。

做掌上BT軟件或者移動辦公軟件 ,一般都會有這樣一個功能,用戶可以對屏幕當前顯示的數據或報表進行截圖,并通過郵件發送。本文的開發實例就是要實現此功能。

其中有一個開發時候的小技巧:

用email.setType("image/png");或者email.setType("application/octet-stream"); 都不會影響郵件的發送。為什么email.setType("image/png");而不用email.setType("application /octet-stream"); ? 因為在開發中發現setType("image/png"),系統會同時給你調用彩信,郵件,等.....

下面k將實現方法跟大家分享一下:

  1. package com.johnson.Screenshot;     
  2. import java.io.File;     
  3. import java.io.FileNotFoundException;     
  4. import java.io.FileOutputStream;     
  5. import java.io.IOException;     
  6. import android.app.Activity;     
  7. import android.content.Context;     
  8. import android.content.Intent;     
  9. import android.graphics.Bitmap;     
  10. import android.graphics.Rect;     
  11. import android.net.Uri;     
  12. import android.os.Environment;     
  13. import android.os.StatFs;     
  14. import android.view.View;     
  15. import android.widget.Toast;     
  16. public class ScreenshotTools {     
  17.   /***    
  18.     * @author Johnson    
  19.     *       
  20.     * */     
  21.   public static long minSizeSDcard = 50;     
  22.   public static String filePath = Environment.getExternalStorageDirectory()     
  23.       + "/FJBICache";     
  24.   public static String fileName = "chart.png";     
  25.   public static String detailPath = filePath + File.separator + fileName;     
  26.   public static final int SEND_EMAIL = 1;     
  27.   // public static String detailPath="/sdcard/FjbiCache/chart.png";     
  28.   /**    
  29.     * 調用系統程序發送郵件    
  30.     *       
  31.     * @author Johnson    
  32.     *       
  33.     * */     
  34.   private static void sendEmail(Context context, String[] to, String subject,     
  35.       String body, String path) {     
  36.     Intent email = new Intent(android.content.Intent.ACTION_SEND);     
  37.     if (to != null) {     
  38.       email.putExtra(android.content.Intent.EXTRA_EMAIL, to);     
  39.     }     
  40.     if (subject != null) {     
  41.       email.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);     
  42.     }     
  43.     if (body != null) {     
  44.       email.putExtra(android.content.Intent.EXTRA_TEXT, body);     
  45.     }     
  46.     if (path != null) {     
  47.       /*    
  48.         * 用email.setType("image/png");或者email.setType(    
  49.         * "application/octet-stream"); 都不會影響郵件的發送    
  50.         * 為什么email.setType("image/png"    
  51.         * );而不用email.setType("application/octet-stream"); ?    
  52.         * 因為在開發中發現setType("image/png"),系統會同時給你調用彩信,郵件,等.....    
  53.         */     
  54.       File file = new File(path);     
  55.       email.putExtra(android.content.Intent.EXTRA_STREAM,     
  56.           Uri.fromFile(file));     
  57.       email.setType("image/png");     
  58.     }     
  59.     context.startActivity(Intent.createChooser(email, "請選擇發送軟件"));     
  60.   }     
  61.   /**    
  62.     * 獲取指定Activity的截屏,保存到png文件    
  63.     *       
  64.     * @author Johnson    
  65.     * **/     
  66.   private static Bitmap takeScreenShot(Activity activity) {     
  67.     // View是你需要截圖的View     
  68.     View view = activity.getWindow().getDecorView();     
  69.     view.setDrawingCacheEnabled(true);     
  70.     view.buildDrawingCache();     
  71.     Bitmap b1 = view.getDrawingCache();     
  72.     // 獲取狀態欄高度     
  73.     Rect frame = new Rect();    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);     
  74.     int statusBarHeight = frame.top;     
  75.     System.out.println(statusBarHeight);     
  76.     // 獲取屏幕長和高     
  77.     int width = activity.getWindowManager().getDefaultDisplay().getWidth();     
  78.     int height = activity.getWindowManager().getDefaultDisplay()     
  79.         .getHeight();     
  80.     // 去掉標題欄     
  81.     // Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);     
  82.     Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height     
  83.         - statusBarHeight);     
  84.     view.destroyDrawingCache();     
  85.     return b;     
  86.   }     
  87.   /**    
  88.     * 截圖保存    
  89.     *       
  90.     * @author Johnson    
  91.     * **/     
  92.   private static void savePic(Bitmap b, String filePath, String fileName) {     
  93.     File f = new File(filePath);     
  94.     if (!f.exists()) {     
  95.       f.mkdir();     
  96.     }     
  97.     FileOutputStream fos = null;     
  98.     try {     
  99.       fos = new FileOutputStream(filePath + File.separator + fileName);     
  100.       if (null != fos) {     
  101.         b.compress(Bitmap.CompressFormat.PNG, 90, fos);     
  102.         fos.flush();     
  103.         fos.close();     
  104.       }     
  105.     } catch (FileNotFoundException e) {     
  106.       e.printStackTrace();     
  107.     } catch (IOException e) {     
  108.       e.printStackTrace();     
  109.     }     
  110.   }     
  111.   /**    
  112.     *       
  113.     * 截屏并發送郵件    
  114.     *       
  115.     * @author Johnson    
  116.     * **/     
  117.   public static void takeScreenShotToEmail(Context context, Activity a) {     
  118.     if (getAvailableSDcard(context)) {     
  119.       savePic(takeScreenShot(a), filePath, fileName);     
  120.       // selectDialog(context);     
  121.       sendEmail(context, nullnullnull, detailPath);     
  122.     }     
  123.   }     
  124.   /***    
  125.     * Sd判斷SD卡是否可用    
  126.     *       
  127.     * @author Johnson minSizeSDcard>50kb    
  128.     * */     
  129.   public static boolean getAvailableSDcard(Context context) {     
  130.     boolean sdCardExist = Environment.getExternalStorageState().equals(     
  131.         android.os.Environment.MEDIA_MOUNTED); // 判斷sd卡是否存在     
  132.     System.out.println("+++" + sdCardExist);     
  133.     if (sdCardExist) {     
  134.       File path = Environment.getExternalStorageDirectory();     
  135.       StatFs stat = new StatFs(path.getPath());     
  136.       long blockSize = stat.getBlockSize();     
  137.       long availableBlocks = stat.getAvailableBlocks();     
  138.       long sdCardSize = (availableBlocks * blockSize) / 1024;// KB值     
  139.       if (sdCardSize > minSizeSDcard) {     
  140.         System.out.println("SDcardSize:::" + minSizeSDcard + "KB");     
  141.         return true;     
  142.       } else {     
  143.         Toast.makeText(context, "SD卡空間不足", Toast.LENGTH_SHORT).show();     
  144.       }     
  145.     } else {     
  146.       Toast.makeText(context, "請在使用轉發功能之前插入SD卡", Toast.LENGTH_SHORT)     
  147.           .show();     
  148.     }     
  149.     return false;     
  150.   }     
  151. }       
  152. package com.johnson.Screenshot;     
  153. import android.app.Activity;     
  154. import android.content.Context;     
  155. import android.os.Bundle;     
  156. import android.view.View;     
  157. import android.view.View.OnClickListener;     
  158. import android.widget.Button;     
  159. public class ScreenshotActivity extends Activity {     
  160.         /** Called when the activity is first created. */     
  161.   Button bt;     
  162.   Context mContext;     
  163.         @Override     
  164.         public void onCreate(Bundle savedInstanceState) {     
  165.                 super.onCreate(savedInstanceState);     
  166.                 setContentView(R.layout.main);     
  167.                 bt=(Button)findViewById(R.id.button1);     
  168.                 mContext=this;     
  169.                 bt.setOnClickListener(new OnClickListener() {     
  170.       @Override     
  171.       public void onClick(View v) {     
  172.         // TODO Auto-generated method stub     
  173.         ScreenshotTools.takeScreenShotToEmail(mContext, ScreenshotActivity.this);     
  174.       }     
  175.     });             
  176.         }     
  177. }   

XML/HTML代碼如下:

  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.         android:layout_width="fill_parent"     
  4.         android:layout_height="fill_parent"     
  5.         android:orientation="vertical" >     
  6.         <Button     
  7.                 android:id="@+id/button1"     
  8.                 android:layout_width="wrap_content"     
  9.                 android:layout_height="wrap_content"     
  10.                 android:text="@string/button_text" />     
  11. </LinearLayout>  
責任編輯:閆佳明 來源: jizhuomi
相關推薦

2009-09-03 17:23:45

C#發送郵件

2014-12-31 14:40:53

cropper截取截圖

2013-09-02 15:26:44

.NET開發郵件系統.Net

2009-06-09 08:57:08

微軟Windows 7操作系統

2011-08-30 14:47:53

UbuntuLookit

2022-09-02 15:08:02

Python郵件發送

2010-01-27 18:06:03

Android短信發送

2025-04-11 08:25:36

2012-03-07 14:37:03

JavaJavaMail

2011-08-02 11:30:41

iOS開發 郵件發送

2024-09-05 08:58:37

2020-11-24 11:00:24

前端

2009-12-02 16:31:54

PHP發送郵件

2009-12-09 15:23:36

PHP mail()函

2009-10-29 08:32:21

Ubuntu 9.10截圖

2009-03-04 09:26:17

Kumo搜索引擎截圖

2017-04-26 09:00:23

Python發送郵件腳本

2011-10-31 09:35:50

2009-03-26 08:47:55

Windows Mob微軟移動OS

2012-02-16 11:04:32

點贊
收藏

51CTO技術棧公眾號

欧美国产中文高清| 自拍视频在线免费观看| 亚洲激情午夜| 在线成人激情黄色| www.com久久久| 七七成人影院| 国产亚洲va综合人人澡精品 | 影音先锋男人资源在线观看| 久久三级中文| 欧洲激情一区二区| 日本福利视频网站| av在线播放网站| 成人福利在线看| 国产精品一区二区三区久久| 国产亚洲欧美久久久久| 欧美影院三区| 日韩黄色av网站| 夜夜爽久久精品91| 色成人免费网站| 午夜亚洲福利老司机| 亚洲欧洲久久| 日韩在线无毛| 丁香天五香天堂综合| 国产精品在线看| 四虎精品永久在线| 国产精品大片| 久久久97精品| 免费看91的网站| 精品国产午夜肉伦伦影院| 欧美日韩一区二区欧美激情| 国产精品专区在线| bestiality新另类大全| 国产日韩欧美高清| 久久久久久久久久码影片| av网站免费播放| 日本伊人午夜精品| 欧美最猛黑人xxxx黑人猛叫黄| 日韩成人短视频| 欧美色蜜桃97| 亚洲精品一区二区久| 在线免费黄色小视频| 中韩乱幕日产无线码一区| 精品久久久久久久大神国产| 欧美另类videosbestsex日本| av电影在线观看一区二区三区| 久久综合久久99| 国产三区精品| 亚洲精品视频91| 国产美女视频一区| 成人黄色短视频在线观看| 亚洲中文字幕无码爆乳av| 一本综合精品| 2019亚洲男人天堂| 日本一级淫片免费放| 韩国亚洲精品| 欧美多人爱爱视频网站| 我家有个日本女人| 亚洲一区二区| 欧美成人午夜免费视在线看片| 日韩三级在线观看视频| 国产精品久久久久9999赢消| 日韩视频―中文字幕| 在线观看天堂av| 久久大综合网| 久久久久999| 99热精品免费| 伊人久久大香线蕉精品组织观看| 久久亚洲欧美日韩精品专区| 永久免费看片直接| 911久久香蕉国产线看观看| 日日噜噜噜夜夜爽亚洲精品| 天天做夜夜爱爱爱| 欧美日韩mv| 欧美极品在线视频| 久久一区二区三区视频| 美女视频一区免费观看| 国产脚交av在线一区二区| 亚洲精品国产欧美在线观看| 日韩avvvv在线播放| 国产欧美亚洲视频| 国产人妖在线播放| 成人激情免费网站| 欧美国产综合视频| 大乳在线免费观看| 亚洲人成人一区二区在线观看| 一级特黄妇女高潮| 6699嫩草久久久精品影院| 欧美日韩国产综合视频在线观看中文| 自拍日韩亚洲一区在线| 羞羞影院欧美| 欧美一区二区在线观看| yjizz视频| 国产精品一区二区av交换| 日韩网站免费观看| 久久精品国产亚洲av无码娇色| 久久福利一区| 亚洲精品女av网站| 天天综合网在线观看| 国产精品亲子伦对白| 波多野结衣 作品| 亚洲美女尤物影院| 欧美久久久久免费| 日本五十肥熟交尾| 成人在线亚洲| 久久免费福利视频| 瑟瑟视频在线免费观看| 成人午夜伦理影院| 日韩午夜视频在线观看| 日韩少妇视频| 欧美图区在线视频| 在线中文字日产幕| 欧美日韩国产高清电影| 欧美精品videos另类日本| 日韩精品成人免费观看视频| 国产乱子轮精品视频| 欧美精品123| 在线播放蜜桃麻豆| 在线免费视频一区二区| 国产综合内射日韩久| 久久精品国产68国产精品亚洲| 欧美高清视频免费观看| 蜜臀99久久精品久久久久小说| 成人免费视频国产在线观看| 亚洲人成网站在线播放2019| 182在线视频观看| 91精品福利在线一区二区三区 | 国产成人精品无码播放| 涩涩屋成人免费视频软件| 在线成人激情黄色| 久草视频在线观| 国产一区二区三区黄视频 | 久久永久免费| 国产高清精品一区二区三区| 夜级特黄日本大片_在线 | 中文字幕在线视频第一页| 不卡一区在线观看| 三级网在线观看| 日韩在线观看不卡| 日韩电影中文 亚洲精品乱码| 成人在线观看免费完整| 奇米在线7777在线精品| 免费看成人午夜电影| 亚洲性图自拍| 欧美一区二区三区四区高清| 久久久精品少妇| 日本怡春院一区二区| 欧美三级电影在线播放| 97超碰在线免费| 精品成人佐山爱一区二区| 强乱中文字幕av一区乱码| 国产一区二区在线影院| 亚洲精品国产精品久久| 日本美女久久| 色偷偷偷综合中文字幕;dd| 91在线视频免费播放| www国产精品av| 亚洲欧洲日产国码无码久久99| 欧美aaaaa级| 97免费中文视频在线观看| 亚洲男人天堂久久| 亚洲一区二区四区蜜桃| 91传媒理伦片在线观看| 精品999成人| 国产91色在线|亚洲| 成人三级小说| 日韩成人在线网站| 久久亚洲精品石原莉奈 | 亚洲国产美女视频| 国产一区二区三区黄视频| 欧美日韩亚洲国产成人| 国产精品一站二站| 色综合久久久久久中文网| 朝桐光av在线一区二区三区| 亚洲国产wwwccc36天堂| 污污污www精品国产网站| 亚洲精品少妇| 免费观看国产成人| 成人av色网站| 久久久精品中文字幕| www.xxx国产| 午夜伊人狠狠久久| 免费看黄色aaaaaa 片| 久久亚洲欧洲| 一区二区免费在线视频| 欧美经典一区| 午夜精品一区二区三区av| 日韩电影在线观看完整版| 91黄色免费网站| av最新在线观看| 成人免费黄色在线| 色一情一乱一伦一区二区三区日本| 日本一区二区高清不卡| 亚洲自拍偷拍区| 在线中文字幕播放| 最近更新的2019中文字幕| 国产av一区二区三区| 亚洲成人av一区二区三区| 亚洲区自拍偷拍| 国内精品久久久久影院薰衣草 | aa级大片免费在线观看| 亚洲午夜av久久乱码| 国产精品视频第一页| 亚洲成av人片一区二区三区| 一区二区伦理片| 国产91在线看| 亚洲欧美另类动漫| 欧美日韩亚洲一区二区三区在线| 快播日韩欧美| 欧一区二区三区| 国产97色在线| 污影院在线观看| 亚洲视频axxx| 亚洲精品字幕在线观看| 色哟哟一区二区三区| 丁香花五月激情| 国产亚洲人成网站| 制服丝袜av在线| 久久99精品国产麻豆婷婷洗澡| 久久久久免费看黄a片app| 国产精品久久久久久久免费观看 | 亚洲综合免费观看高清完整版在线 | 小说区视频区图片区| 亚洲素人在线| 国产精品裸体一区二区三区| 国产高清日韩| 国产精品视频免费在线| 中文在线资源| 久久久亚洲成人| 国产成人无吗| 日韩一区二区欧美| h网站在线免费观看| 日韩成人在线视频观看| 亚洲欧美强伦一区二区| 欧美精品视频www在线观看 | 国产一二三av| 久久色视频免费观看| 国产伦精品一区二区三区88av| 麻豆成人久久精品二区三区红 | 精品人妻在线播放| 亚洲欧美另类久久久精品2019| 亚洲av无码国产精品麻豆天美| 91在线观看地址| 日本不卡视频一区| 丁香激情综合国产| 伦伦影院午夜理论片| 国产尤物一区二区| www.国产福利| 国产综合久久久久久久久久久久| 中文字幕第80页| 日韩1区2区日韩1区2区| 乌克兰美女av| 青青草97国产精品免费观看| 亚洲激情在线观看视频| 日韩激情一区二区| 日日躁夜夜躁aaaabbbb| 麻豆精品在线播放| 午夜久久福利视频| 精品一区二区三区av| 激情在线观看视频| 激情欧美日韩一区二区| 欧美在线a视频| 国产成人h网站| 在线观看成人动漫| 26uuu欧美日本| 亚洲а∨天堂久久精品2021| 日本一区二区不卡视频| 国产精品麻豆一区| 亚洲丝袜自拍清纯另类| 国产这里有精品| 亚洲主播在线观看| 偷偷操不一样的久久| 日韩欧亚中文在线| 中文字幕av片| 欧美一区在线视频| 人妻无码中文字幕| 亚洲欧洲第一视频| 亚洲s色大片| 久久99亚洲热视| 青青青免费在线视频| 国产成人一区三区| 亚洲香蕉久久| 国产视频一区二区不卡| 深爱激情久久| 国产又大又长又粗又黄| 激情成人综合| 欧美成人黑人猛交| 国产一区二区中文字幕| 朝桐光av一区二区三区| 国产欧美精品一区二区色综合朱莉| 美国精品一区二区| 亚洲一区二区综合| 国产一级片av| 日韩一区二区中文字幕| 深夜福利在线观看直播| 亚洲欧美日韩国产精品| 国产91在线视频蝌蚪| 51精品在线观看| 国产日韩在线观看视频| 九色视频成人porny| 欧美电影免费播放| 人人妻人人添人人爽欧美一区| 日韩激情一区二区| 国产高潮视频在线观看| 国产精品黄色在线观看| 国产在线视频你懂的| 欧美日韩电影在线播放| 欧美 日韩 中文字幕| 中文字幕国产亚洲| 17videosex性欧美| 91麻豆国产精品| 国产精品一国产精品| 国产精品www在线观看| 麻豆精品新av中文字幕| bl动漫在线观看| 亚洲美女区一区| 中文字幕第99页| 亚洲精品二三区| 手机在线免费看av| 国产欧美日韩精品丝袜高跟鞋| 少妇高潮一区二区三区| 91精品国产吴梦梦| 久久国产精品露脸对白| 爱爱免费小视频| 精品色蜜蜜精品视频在线观看| 国产视频一二三四区| 中文字幕国产日韩| 色8久久影院午夜场| 精品久久久久久综合日本| 中文字幕一区二区三区欧美日韩 | 精品综合免费视频观看| 中文字幕5566| 亚洲成人av一区二区| 国产喷水吹潮视频www| 在线精品高清中文字幕| 日韩电影毛片| 国产a一区二区| 欧美一区高清| 一女二男3p波多野结衣| 国产视频一区二区在线| 东京热一区二区三区四区| 精品久久久久久久人人人人传媒 | 57pao成人永久免费视频| 成人av地址| 丁香婷婷综合激情| 国产一二精品视频| 欧美三根一起进三p| 日韩一级完整毛片| 日本高清在线观看| 97人人模人人爽人人少妇| 欧美~级网站不卡| 三日本三级少妇三级99| 亚洲精品视频免费观看| wwwav在线播放| 欧美激情亚洲精品| 国产精品毛片视频| 野外做受又硬又粗又大视频√| 成人国产免费视频| 日韩黄色精品视频| 亚洲精品久久久久久久久久久| 国产乱码午夜在线视频| 久久国产精品-国产精品| 亚洲综合日韩| 中文字幕第24页| 欧美日韩一区二区三区四区| 老司机精品影院| 9a蜜桃久久久久久免费| 99国产精品视频免费观看一公开| 亚洲久久久久久| 天天亚洲美女在线视频| 免费看男男www网站入口在线 | 在线成人一区二区| 久久精品资源| 天堂av免费看| 成人免费黄色在线| 69成人免费视频| 最新国产成人av网站网址麻豆| 欧美视频精品全部免费观看| 国产肉体ⅹxxx137大胆| av在线不卡观看免费观看| 在线观看日本视频| 在线日韩中文字幕| av成人在线网站| 欧美二区在线视频| 国产三级三级三级精品8ⅰ区| 一道本无吗一区| 欧美日韩999| 天堂av一区二区三区在线播放| 欧美日韩在线免费播放| 国产精品国产三级国产普通话三级| 国产精品欧美亚洲| 97国产成人精品视频| 不卡一区综合视频| 亚洲v在线观看| 欧美性猛交xxxx富婆| 香蕉视频国产在线观看| 91精品国产一区二区三区动漫| 国产精品久久久久久久免费软件 | 要久久爱电视剧全集完整观看 | 成人在线视频首页| 中日精品一色哟哟|