精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本视频一区在线观看| 亚洲最大成人综合| 精品国产伦理网| 国产精品一区二区久久国产| av中文字幕网址| 中文字幕在线2018| 日韩免费在线电影| 中文字幕中文字幕在线一区 | 精品毛片免费观看| 欧美视频一区二区三区四区| 成人午夜两性视频| 波多野结衣有码| 天堂8中文在线最新版在线| 99国产欧美另类久久久精品| 97超级碰在线看视频免费在线看| 亚洲狼人综合干| 香蕉视频网站在线| 亚洲国产精品日韩专区av有中文 | 国产一级片免费看| 韩国美女久久| 国产精品12区| 精品视频久久久久久| 色一情一乱一伦一区二区三欧美| 伊人影院中文字幕| 国产精品啊v在线| 亚洲欧美激情四射在线日| 热久久精品免费视频| 2024最新电影在线免费观看| 2022国产精品视频| 久久伊人精品一区二区三区| 污污污www精品国产网站| 国产精品186在线观看在线播放| 91麻豆国产精品久久| 国产欧美精品日韩| 久久精品亚洲无码| 91亚洲国产成人久久精品| 欧美精品一区二区三区高清aⅴ| 午夜dv内射一区二区| 日本资源在线| 久久国产精品无码网站| 欧美激情免费观看| 精品欧美一区二区久久久| 视频二区欧美| 欧美亚洲高清一区| 国产免费观看高清视频| 国产高潮在线观看| 久久综合88| 日韩av中文字幕在线免费观看| 三级a三级三级三级a十八发禁止| 视频一区二区在线播放| 亚洲久色影视| 欧美一区二区三区白人| 好男人www社区| 欧美aa一级| 综合精品久久久| 国产欧美精品在线播放| 久久久久99精品成人片我成大片| 国产精品xxxav免费视频| 欧美疯狂性受xxxxx喷水图片| 伊人久久大香线蕉成人综合网| 最近中文字幕在线视频| aa级大片欧美三级| 亚洲欧洲日产国码av系列天堂| 2018国产精品| 欧美一区一区| 91麻豆精品91久久久久同性| 亚洲一二三区精品| 日本福利在线观看| 水野朝阳av一区二区三区| 亚洲欧美国内爽妇网| 疯狂揉花蒂控制高潮h| 日本免费精品| 日韩一区二区三区电影在线观看| 8x8x成人免费视频| 欧美高清影院| 欧美三级日本三级少妇99| 日日摸天天爽天天爽视频| 伊人网在线播放| 五月综合激情日本mⅴ| 国产伦精品一区二区三毛| 亚洲AV无码精品国产| 国产一区二区三区四区在线观看| 久久91精品国产91久久久| 亚洲av永久无码精品| 999久久久精品一区二区| 一本色道久久综合亚洲91| 日本a视频在线观看| 天堂在线中文网| 不卡视频一二三四| 国产麻豆乱码精品一区二区三区| 天堂网av在线播放| 91蜜桃网址入口| 欧美成熟毛茸茸复古| 中文字幕+乱码+中文| 美女高潮久久久| 97人人爽人人喊人人模波多| 久久久久久久久影院| 天堂在线亚洲视频| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 欧美成人精品在线观看| 亚洲欧美日本一区二区| 国产精品亚洲欧美一级在线 | 伊人久久大香线蕉av一区| www在线视频| 午夜一区二区三区视频| 欧美精品色婷婷五月综合| 欧美国产日韩电影| 欧美一区二区久久| 九九久久久久久| 日韩欧美国产大片| 中文字幕无线精品亚洲乱码一区| 久久久精品视频免费观看| 国产精品久久久亚洲一区| 成年人精品视频| 日韩av黄色片| 蜜桃视频一区二区| 超碰97人人人人人蜜桃| 亚洲区小说区图片区| 欧美经典一区二区三区| 50度灰在线观看| 欧美日韩大片| 日韩欧美电影在线| 国产交换配乱淫视频免费| 伊人久久综合网另类网站| 亚洲国产精品悠悠久久琪琪 | 国产又大又粗又爽| 久久精品国产77777蜜臀| 国产伦精品一区二区三毛| 日韩欧美亚洲系列| 亚洲欧美偷拍卡通变态| 国产免费毛卡片| 国产精品一区二区三区www| 日韩精品在线观看一区| 国产探花在线播放| 奇米在线7777在线精品| 国产专区一区二区| 国产日产一区二区| 欧美自拍偷拍午夜视频| 精品人妻伦一二三区久| 亚洲a在线视频| 97人人模人人爽人人喊中文字| 91福利在线观看视频| 久久久久久久综合日本| 青青青青在线视频| 婷婷久久综合九色综合99蜜桃| 亚洲欧美精品伊人久久| 国产第一页第二页| 国产精品一区二区在线播放| 亚洲免费精品视频| 日本不卡一二三| 日韩第一页在线| 福利一区二区三区四区| 国产成人精品亚洲777人妖| 亚洲毛片aa| 成人国产精品| 国产一区二区三区高清在线观看| 国产美女激情视频| av一区二区三区| 不卡日韩av| 国产激情视频在线观看| 欧美日韩精品高清| 东京热无码av男人的天堂| 三级成人在线视频| 国产精品久久久久久av| 欧美一区二区三区激情| 亚洲一区二区3| 91香蕉国产线在线观看| 天天射综合网视频| 91精品国产自产在线| 伊人免费在线| 日韩毛片高清在线播放| 色婷婷狠狠18| 青青草成人影院| 国产精品久久久久久久久久小说| 天堂av在线免费| 五月天激情综合| 国产夫妻性爱视频| 久久成人一区| 日本一区视频在线观看免费| 色在线中文字幕| 亚洲精品有码在线| 人人妻人人爽人人澡人人精品| 久久久久久久免费视频了| 久久9精品区-无套内射无码| 国产欧美日韩一区二区三区四区| 国产成人高潮免费观看精品| 美女做暖暖视频免费在线观看全部网址91| 欧美午夜视频一区二区| 女女互磨互喷水高潮les呻吟| 免费成人av在线播放| 天天操天天干天天玩| 亚洲成av人片在线观看www| 久久久久久久久久久人体| 日韩一级免费视频| 色天天综合色天天久久| 一本色道无码道dvd在线观看| av一区二区在线播放| 国产精品久久久999| 免费黄色网址在线观看| 色欧美片视频在线观看| 久久久久人妻一区精品色| 国产自产v一区二区三区c| 18黄暴禁片在线观看| 成人看片网页| 欧美一区2区视频在线观看| 精品一区在线视频| 久久久久久亚洲综合影院红桃| 亚洲怡红院在线| 国产精品www994| 视频二区一区| 日韩一二三区| 国产精品高潮呻吟视频| 调教一区二区| 亚洲人成欧美中文字幕| 国产色综合视频| 欧美午夜片欧美片在线观看| 日韩女优一区二区| 国产日韩欧美电影| 国产成人在线综合| 一区二区福利| 在线观看17c| blacked蜜桃精品一区| 国产精品xxxx| 日韩精品第二页| 欧美专区中文字幕| 羞羞污视频在线观看| 亚洲视频日韩精品| 亚洲国产av一区二区| 欧美亚洲尤物久久| 日韩欧美国产亚洲| 亚洲日本韩国一区| 久久久久久久毛片| 成年人午夜久久久| 一级片免费在线观看视频| 久久久精品午夜少妇| 亚洲理论电影在线观看| 午夜影院欧美| 性欧美videosex高清少妇| 精品国内亚洲2022精品成人| 91热精品视频| 日本电影全部在线观看网站视频| 亚洲第一天堂av| 国产成人无码精品久久久久| 亚洲精品水蜜桃| 全黄一级裸体片| av男人天堂一区| 精品国产免费久久久久久婷婷| 蜜桃精品视频在线观看| 亚洲中文字幕无码中文字| 黄色亚洲大片免费在线观看| 男插女免费视频| 色777狠狠狠综合伊人| 精品中文字幕一区| 国产成人夜色高潮福利影视| 亚洲一区二区免费| 精品美女一区| 国产精品久久久久久久久久久久久| 麻豆mv在线观看| 欧美精品18videos性欧美| 国产精品实拍| 久久这里只有精品视频首页| 日本中文在线| 日韩一区二区三区在线播放| 国产在线视频网| 亚洲色图色老头| 精品黄色免费中文电影在线播放| 久久人体大胆视频| 麻豆蜜桃在线| 欧美一性一乱一交一视频| 日韩av超清在线观看| 国产日韩欧美视频在线| 午夜久久av| 免费国产一区| 91久久国产| 可以看毛片的网址| 日韩 欧美一区二区三区| jizzzz日本| 成人精品视频网站| 国产精品毛片一区二区| 日韩一区在线免费观看| 久久网中文字幕| 色婷婷综合五月| 国产日韩欧美中文字幕| 亚洲精品一区二区三区四区高清 | 中文字幕高清在线免费播放| 欧美色欧美亚洲另类二区| 国产熟女一区二区丰满| 亚洲国产精品va| av电影在线观看| 日韩精品在线免费| 天天影视久久综合| 欧美国产日产韩国视频| 欧美最新精品| 国产经品一区二区| 精品国产一区二区三区小蝌蚪 | 免费中文字幕在线| 欧美视频专区一二在线观看| 一道本在线视频| 亚洲国产精品资源| 国产淫片在线观看| 88xx成人精品| 免费精品一区| 日韩欧美一区二区三区四区五区 | 成人性做爰aaa片免费看不忠| 国产资源在线一区| 美女被到爽高潮视频| 一区二区国产视频| 看黄色一级大片| 欧美精品一区二区三区蜜桃| 欧美边添边摸边做边爱免费| 91av在线不卡| 日韩精品中文字幕一区二区| 日韩国产欧美一区| 亚洲久久视频| 国产成人av片| 17c精品麻豆一区二区免费| aaaaaa毛片| 亚洲国产高清自拍| 综合久久2o19| 成人精品网站在线观看| 国产在线日韩精品| 69堂免费视频| 成人av电影免费观看| 男女做暖暖视频| 欧美日韩亚洲丝袜制服| 视频福利在线| 68精品久久久久久欧美| 粉嫩久久久久久久极品| 黄色免费高清视频| 久久精品国产一区二区三| 成人国产精品久久久网站| 午夜精品一区二区三区免费视频| 精品久久久免费视频| www.亚洲天堂| 欧美美女被草| 一区二区不卡在线观看| 免费高清视频精品| 亚洲av熟女国产一区二区性色| 欧美日韩国产中文精品字幕自在自线| 精品国产亚洲一区二区麻豆| 久久久精品在线观看| 91成人app| 最近中文字幕免费mv| 精品中文字幕一区二区| 五月天婷婷丁香网| 欧美羞羞免费网站| 国产资源在线观看| 国产精品久久久久av免费| 精品久久久久久久久久久下田| 99视频在线免费| 欧美国产欧美亚州国产日韩mv天天看完整| 国产一级一级国产| 亚洲性无码av在线| 国产精品.xx视频.xxtv| 亚洲综合欧美日韩| 韩国午夜理伦三级不卡影院| 麻豆精品国产免费| 亚洲制服丝袜av| 国产丰满美女做爰| 久久久久久久久久久亚洲| 久久365资源| 久久精品国产精品亚洲色婷婷| 久久久精品国产免大香伊| 久久人人爽人人爽人人片av免费| 国产一区二区三区在线视频| 日本免费在线一区| 青青视频免费在线| 不卡视频一二三四| 亚洲中文无码av在线| 精品久久久999| 超碰精品在线| 欧美日韩在线中文| 国产精品视频麻豆| 国产情侣在线视频| 国产视频久久久| 国产a亚洲精品| 9191国产视频| 91网站黄www| 中文字幕免费在线看| 欧美成年人在线观看| 清纯唯美亚洲经典中文字幕| 亚洲精品高清无码视频| 亚洲私人黄色宅男| 午夜视频免费看| 国产精品日韩专区| 激情久久中文字幕| 我想看黄色大片| 精品国产乱码91久久久久久网站| 综合在线影院| 777久久精品一区二区三区无码 | 欧美一级日韩一级| 涩涩视频在线免费看| 日本特级黄色大片| 99久久国产综合色|国产精品| 一区二区三区精彩视频| 性欧美xxxx交| 国产精品成人av| 一本加勒比北条麻妃| 日韩欧美高清一区| 国产一区二区色噜噜|