my app running fine in foreground want implement take screenshot
in background .. m stuck how implement ...
i think service can helpful ....
public class mainactivity extends activity implements onclicklistener { listview listview; list<parseobject> ob; progressdialog mprogressdialog; arrayadapter<string> adapter; edittext et; button bt, bt2; string[] values; list<string> list11 = new arraylist<string>(); private sensormanager msensormanager; private float maccel; // acceleration apart gravity private float maccelcurrent; // current acceleration including gravity private float maccellast; // last acceleration including gravity @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); msensormanager = (sensormanager) getsystemservice(context.sensor_service); msensormanager.registerlistener(msensorlistener, msensormanager.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_normal); maccel = 0.00f; maccelcurrent = sensormanager.gravity_earth; maccellast = sensormanager.gravity_earth; } private final sensoreventlistener msensorlistener = new sensoreventlistener() { public void onsensorchanged(sensorevent se) { float x = se.values[0]; float y = se.values[1]; float z = se.values[2]; maccellast = maccelcurrent; maccelcurrent = (float) math.sqrt((double) (x * x + y * y + z * z)); float delta = maccelcurrent - maccellast; maccel = maccel * 0.9f + delta; // perform low-cut filter if (maccel > 2) { toast toast = toast.maketext(getapplicationcontext(), "device has shaken.", toast.length_long); toast.show(); save(); } } public void onaccuracychanged(sensor sensor, int accuracy) { } }; public void save() { final string screenshots_locations = environment .getexternalstoragedirectory().tostring() + "/screenshots/"; // device dimmensions display display = getwindowmanager().getdefaultdisplay(); point size = new point(); display.getsize(size); // root view view view = getwindow().getdecorview().getrootview(); // create bitmap use draw screenshot final bitmap bitmap = bitmap.createbitmap(size.x, size.y, bitmap.config.argb_4444); final canvas canvas = new canvas(bitmap); // current theme know background use final activity activity = mainactivity.this; final theme theme = activity.gettheme(); final typedarray ta = theme .obtainstyledattributes(new int[] { android.r.attr.windowbackground }); final int res = ta.getresourceid(0, 0); final drawable background = activity.getresources().getdrawable(res); // draw background background.draw(canvas); // draw views view.draw(canvas); // save screenshot file system fileoutputstream fos = null; try { final file sddir = new file(screenshots_locations); if (!sddir.exists()) { sddir.mkdirs(); } fos = new fileoutputstream(screenshots_locations + system.currenttimemillis() + ".jpg"); if (fos != null) { if (!bitmap.compress(bitmap.compressformat.jpeg, 90, fos)) { } fos.flush(); fos.close(); } } catch (filenotfoundexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } @override protected void onresume() { super.onresume(); msensormanager.registerlistener(msensorlistener, msensormanager.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_normal); } @override protected void onpause() { msensormanager.unregisterlistener(msensorlistener); super.onpause(); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } }
you can use code snippet taking screenshot,
view screen = getwindow().getdecorview().getrootview(); screen.setdrawingcacheenabled(true); bitmap bitmap = screen.getdrawingcache(); file mediastoragedir = new file(environment.getexternalstoragedirectory(), "yourpath"); if (!mediastoragedir.exists()) { if (!mediastoragedir.mkdirs()) { log.d("error", "path not created"); } } string filepath = environment.getexternalstoragedirectory() + file.separator + "yourpath" + "/" + "filename" + ".png"; try { bitmap.compress(compressformat.png, 100, new fileoutputstream(newfile(filepath))); } catch (filenotfoundexception e) { e.printstacktrace(); }
do not forget add permission ypur manifest.xml file
<uses-permission android:name="android.permission.write_external_storage"/>
Comments
Post a Comment