За несколько дней до того, как я выполнил ту же задачу.Если вы хотите сделать снимок экрана, и это изображение должно быть отправлено по электронной почте, пожалуйста, изучите приведенный ниже код, который я использовал для этого:
saveImageInLandscapFunction(); // function to save the Image
Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);
picMessageIntent.setType("image/jpeg");
File f = new File(APP_FILE_PATH + "/"+filename+".jpg");
picMessageIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(picMessageIntent);
Функция, которая принимает снимок экрана и сохраняет его на SD-карту
protected void saveImageInLandscapFunction() {
View root = findViewById(android.R.id.content);
root.setDrawingCacheEnabled(true);
Bitmap bm = Bitmap.createBitmap(root.getDrawingCache());
//Bitmap bm = Bitmap.createBitmap(root.getDrawingCache(), 0, 0, display.getWidth(), display.getHeight());
root.setDrawingCacheEnabled(false);
// Bitmap overlayBitmap = overlay(photoBitmap, mBitmap); // overlay the Bitmap
new ExportBitmapToFile(DrawMainActivity.this, bm).execute();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
}
Класс, который обрабатывает основной процесс сохранения изображения и показывает индикатор выполнения, пока изображение не будет сохранено:
// for to saw progressBar
public static class ExportBitmapToFile extends AsyncTask<Intent,Void,Boolean> {
private Context mContext;
private Handler mHandler;
private Bitmap nBitmap;
private ProgressDialog m_progressDialog = null;
@Override
protected void onPreExecute(){
m_progressDialog = new ProgressDialog(mContext);
m_progressDialog.setTitle("Draw");
m_progressDialog.setMessage("Please wait...");
m_progressDialog.setCancelable(false);
m_progressDialog.show();
}
public ExportBitmapToFile(Context context,Bitmap bitmap) {
mContext = context;
nBitmap = bitmap;
}
@Override
protected Boolean doInBackground(Intent... arg0) {
try {
if (!APP_FILE_PATH.exists()) {
APP_FILE_PATH.mkdirs();
}
final FileOutputStream out = new FileOutputStream(new File(APP_FILE_PATH + "/"+filename+".jpg"));
nBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
return true;
}catch (Exception e) {
e.printStackTrace();
}
//mHandler.post(completeRunnable);
return false;
}
@Override
protected void onPostExecute(Boolean bool) {
super.onPostExecute(bool);
if ( bool ){
//mHandler.sendEmptyMessage(1);
}
if (m_progressDialog.isShowing()) {
m_progressDialog.dismiss();
}
}
}
Надеюсь, это вам поможет.
Дайте мне знать, еслиВам нужна другая помощь.
Наслаждайтесь.:)