因为需要后台默认截图,所以特意搜了这个,然后做了一个这样的DEMO.
第一个方法:(此方法只适用于Activity.不能截取应用外的界面)代码很少,这有这一段:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {
private Button leftStepBtn ;
private Bitmap bm;
private String imgurl;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgurl = Environment.getExternalStorageDirectory()
.getPath() + "/DCIM/MyPicture/";
leftStepBtn = (Button) findViewById(R.id.leftStepBtn);
leftStepBtn.setVisibility(View.VISIBLE);
leftStepBtn.setText("截屏");
leftStepBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 得到当前view所在view结构中的根view
View vv = v.getRootView();
// 设置属性
vv.setDrawingCacheEnabled(true);
// 取得位图
bm = vv.getDrawingCache();
showConfirmDialog(1).show();
}
});
}
@SuppressLint("SdCardPath")
public void saveBitmap(Bitmap bitmap, String bitName) throws IOException {
File folder = new File(imgurl);
if (!folder.exists()) {
folder.mkdir();
}
File file = new File(imgurl + bitName + ".jpg");
Toast.makeText(MainActivity.this, "保存图片中", Toast.LENGTH_SHORT).show();
FileOutputStream out;
if (!file.exists()) {
try {
out = new FileOutputStream(file);
if (bitmap.compress(Bitmap.CompressFormat.PNG, 70, out)) {
Toast.makeText(MainActivity.this, "成功存入相册",
Toast.LENGTH_SHORT).show();
out.flush();
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 确定保存 AlertDialog
* @param i
*/
public AlertDialog showConfirmDialog(final int i) {
return new AlertDialog.Builder(MainActivity.this)
.setIcon(android.R.drawable.progress_horizontal)
.setTitle("确认保存").setMessage("请确认是否保存图片!")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
try {
if(i == 1){
String num = getRandomCode();
saveBitmap(bm, "imagePic" + num);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).setNegativeButton("取消", null).create();
}
// 随机获取图片编号
private String getRandomCode() {
String num = "";
for (int i = 0; i < 10; i++) {
int f = (int) (Math.random() * 10);
num += f;
}
return num;
}
// 按钮
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return false;
}
}
第二个方法(此方法可以截取应用外的屏幕,即桌面或其他应用):
String imgurl = Environment.getExternalStorageDirectory()
.getPath() + "/DCIM/MyPicture/";
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd_HH.mm.ss");
Date date = Calendar.getInstance().getTime();
String timeStamp = format.format(date);
String fullPath = imgurl + timeStamp +".png" ;
ScreentShotUtil.getInstance().takeScreenshot(context,fullPath);
ScreentShotUtil为一个shell命令的封装=-=如果你的机器不能用shell命令,可以放弃这个方法。
推荐阅读:成都之窗
频道推荐
-
山药可以这样吃,口感嫩滑,营养美味,简单方便
关于山药的吃法也有很多,常见的山药粥,炖山药以及山药片等等,小编也非常喜欢吃山药,煮的炖的都喜欢,但是小编今天是把山药做成甜品-蔓越莓山药糕。这道甜品的做法简单...
2020-02-12 -
女生都爱的养颜小吃!比敷面膜还管用,5块钱能
梁实秋写《雅舍谈吃》时,其实并非他吃得最尽心的时候。那会儿他年岁已高,并且得了糖尿病,嘴巴没了自由,才想起说:以笔谈“吃”。全书中印象最深的一篇,是他写馋:“校...
2020-02-12 -
养生小甜品,超好吃的桂花酒酿丸子,齿颊留香
手脚冰凉的小仙女们看过来,今天给大家做超好吃的桂花酒酿丸子,大姨妈时来一碗,还可以缓解痛经,吃完整个人都是暖暖哒~也是一道适合冬天的甜品,来一碗也是暖暖哒~先给...
2020-02-12 -
土豆这么做,一盘都不够!没有可乐的可乐饼一口
传统的可乐饼是油炸而成的,虽然美味,但是热量却不低。所以感谢人类发明了烤箱,今天我们来做烤箱版的可乐饼吧。不用油炸,热量更低,减脂的小仙女也可以大口大口的吃。对...
2020-02-12 -
迪拜土豪口中的美食,在国内却没什么市场,这是
说到迪拜,所有人都会不约而同地联想到一些词:“豪华”、“土豪”、“X星级酒店”。的确,作为一座中东城市,迪拜的景观和市容在所有的中东国家中是可以排得比较靠前的,...
2020-02-12 -
晒晒我家7天的晚餐,有肉有菜又省钱,朋友:每
晒晒我家7天的晚餐,有肉有菜又省钱,朋友:每月3000元都拿不下。我和老公的工作都是朝九晚五,早出晚归,午餐大多数是在单位食堂解决,而晚餐,无论下班有多晚,都会...
2020-02-12