گرفتن Screen Shot از گوشی در فواصل زمانی بصورت سرویس
با سلام و خسته نباشید
چطور میشه برنامه ایی بسازیم که از اینترفیس دیوایس ما بصورت خودکار مثلا هر 2 ثانیه اسکرین شات بگیره ؟ حتی زمانی که از برنامه خارج میشیم و وقتی به برنامه برمیگردیم بتونیم اسکرین شات هارو متوقف کنیم؟
و اینکه علاوه بر گرفتم اسکرین شات بشه تصور رو با بهترین کیفیت یا با کمترین حجم ذخیره کرد؟
در فصل 20 آموزش ها روش انجام اینکار و خیلی چیزای دیگه آموزش داده شده
گرفتن ScreenShot از گوشی کار ساده ای هست، همانطور که دوست شما لینکی ارائه داد قابل انجام است.
اما ساده بودن این کار به معنی کم پردازش بودن آن نیست. در واقع هر بار عکس گرفتن، فشار زیادی به منابع سخت افزاری گوشی وارد می کند که باعث کند شدن سرعت گوشی خواهد شد. اگر این تصویر برداری، هر از چند گاهی باشد، یک تیک در گوشی احساس می شود و نرم بودن گوشی زیر سئوال می رود.
بنابراین توصیه اکید است که تا جاییکه می توانید از این قابلیت فقط در نرم افزار و نه به عنوان سرویس استفاده کنید.
سلام دوستان من از این کد برای گرفتن اسکرین شات از صفحه گوشی استفاده کردم
اما برنامه کرش میکنه!
اگر ممکنه راهنمایی کنید<
توی Logcat هیچ ارروی به اسم اپلیکیشن وجود نداره !
برای permision هم از
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
استفاده کردم.
package com.screen.capture.criss;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
public class ScreenCaptureActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// image naming and path to include sd card appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString() + "sdcard/media/cap.JPEG";
// create bitmap screen capture
Bitmap bitmap;
View mCurrentUrlMask = null;
View v1 = mCurrentUrlMask.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
OutputStream fout = null;
File imageFile = new File(mPath);
try {
fout = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
fout.flush();
fout.close();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .