PDA

View Full Version : اسکرین شات از صفحه و ارور



mohsen.hex
یک شنبه 14 خرداد 1396, 13:35 عصر
سلام
من میخام از صفحه نمایش اسکرین شات بگیرم و کد های زیر رو پیدا کردم


private void takeScreenshot() { Date now = new Date(); android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);

try {
// image naming and path to include sd card appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString () + "/" + now + ".jpg";

// create bitmap <span class="highlight">screen</span> <span class="highlight">capture</span>
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

File imageFile = new File(mPath);

FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();

openScreenshot(imageFile);
} catch (Throwable e) {
// Several error may come out with file handling or OOM
e.printStackTrace();
} }

ولی متاسفانه برنامه خطا میگیره
java.lang.NullPointerException

و این خطا را برای خط میگیرد

Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());

ایراد چیست؟؟

#root#
یک شنبه 14 خرداد 1396, 14:30 عصر
این متد رو کجا فراخونی میکنید، در رویداد خاصی مثل کلیک یا همینجوری لا به لای کدها قرار دادید؟

mohsen.hex
یک شنبه 14 خرداد 1396, 17:25 عصر
این متد رو کجا فراخونی میکنید، در رویداد خاصی مثل کلیک یا همینجوری لا به لای کدها قرار دادید؟

برای شروع کار داخل onStart!!
ایا مکان ان مهم است؟؟

#root#
دوشنبه 15 خرداد 1396, 14:59 عصر
بله مهم هست، به احتمال زیاد چون View مدنظر شما هنوز به صورت کامل draw نشده، این خطا رو میگیرید، در onResume هم تست کنید،
میتونید یه callback هم بزارید وقتی کار draw شدن View تموم شد کد شما اجرا بشه لینک (https://stackoverflow.com/questions/7733813)