From 9a74c8d1e4cc435cf073991cf27807b449e8e65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20M=C3=BCller?= Date: Thu, 16 Nov 2017 12:21:16 +0100 Subject: [PATCH] added auto refresh and removed unused stuff --- .../at/bitfire/gfxtablet/CanvasActivity.java | 65 ++++++++++++------ .../java/at/bitfire/gfxtablet/CanvasView.java | 19 +---- .../at/bitfire/gfxtablet/NetworkServer.java | 17 ++--- .../bitfire/gfxtablet/SettingsActivity.java | 5 +- .../res/drawable-hdpi/ic_action_picture.png | Bin 771 -> 0 bytes .../res/drawable-mdpi/ic_action_picture.png | Bin 558 -> 0 bytes .../res/drawable-xhdpi/ic_action_picture.png | Bin 947 -> 0 bytes .../res/drawable-xxhdpi/ic_action_picture.png | Bin 1314 -> 0 bytes .../app/src/main/res/drawable/bg_grid.png | Bin 251 -> 0 bytes .../src/main/res/drawable/bg_grid_pattern.xml | 5 -- .../src/main/res/layout/activity_canvas.xml | 2 +- .../src/main/res/menu/set_template_image.xml | 14 ---- .../app/src/main/res/values/strings.xml | 12 +--- .../app/src/main/res/values/styles.xml | 3 - .../app/src/main/res/xml/preferences.xml | 10 +-- 15 files changed, 58 insertions(+), 94 deletions(-) delete mode 100644 app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png delete mode 100644 app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png delete mode 100644 app-android/app/src/main/res/drawable-xhdpi/ic_action_picture.png delete mode 100644 app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png delete mode 100644 app-android/app/src/main/res/drawable/bg_grid.png delete mode 100644 app-android/app/src/main/res/drawable/bg_grid_pattern.xml delete mode 100644 app-android/app/src/main/res/menu/set_template_image.xml diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java index dd86dd0..2b35e7f 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java @@ -2,20 +2,14 @@ package at.bitfire.gfxtablet; import android.content.Intent; import android.content.SharedPreferences; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.preference.PreferenceFragment; +import android.os.Handler; import android.preference.PreferenceManager; -import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.PopupMenu; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -23,16 +17,17 @@ import android.view.View; import android.view.WindowManager; import android.widget.ImageView; import android.widget.Toast; + import at.bitfire.gfxtablet.NetEvent.Type; public class CanvasActivity extends AppCompatActivity implements View.OnSystemUiVisibilityChangeListener, SharedPreferences.OnSharedPreferenceChangeListener { - private static final int RESULT_LOAD_IMAGE = 1; private static final String TAG = "GfxTablet.Canvas"; + public static String SCREEN_PATH; private static CanvasActivity instance; + private Handler autoRefreshHandler; + private Runnable autoRefreshBackground; public static CanvasActivity get() { return instance; } - final Uri homepageUri = Uri.parse(("https://gfxtablet.bitfire.at")); - NetworkClient netClient; NetworkServer netServer; @@ -44,6 +39,8 @@ public class CanvasActivity extends AppCompatActivity implements View.OnSystemUi protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = this; + autoRefreshHandler = new Handler(); + SCREEN_PATH = CanvasActivity.get().getCacheDir() + "/screen.png"; preferences = PreferenceManager.getDefaultSharedPreferences(this); preferences.registerOnSharedPreferenceChangeListener(this); @@ -64,6 +61,20 @@ public class CanvasActivity extends AppCompatActivity implements View.OnSystemUi canvas.setNetworkClient(netClient); } + private void startAutoRefresh() { + autoRefreshHandler.postDelayed(new Runnable() { + public void run() { + refreshBackground(); + autoRefreshBackground=this; + autoRefreshHandler.postDelayed(autoRefreshBackground, 5000); + } + }, 5000); + } + + private void stopAutoRefresh() { + autoRefreshHandler.removeCallbacks(autoRefreshBackground); + } + @Override protected void onResume() { super.onResume(); @@ -73,12 +84,24 @@ public class CanvasActivity extends AppCompatActivity implements View.OnSystemUi else getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + if (preferences.getBoolean(SettingsActivity.KEY_AUTO_REFRESH, true)) + startAutoRefresh(); + else + stopAutoRefresh(); + showTemplateImage(); } + @Override + protected void onPause() { + super.onPause(); + stopAutoRefresh(); + } + @Override protected void onDestroy() { super.onDestroy(); + stopAutoRefresh(); netClient.getQueue().add(new NetEvent(NetEvent.Type.TYPE_DISCONNECT)); } @@ -118,10 +141,14 @@ public class CanvasActivity extends AppCompatActivity implements View.OnSystemUi } // refresh methods - public void refreshBackground(MenuItem item) { + public void refreshBackground() { netClient.getQueue().add(new NetEvent(Type.TYPE_MOTION, (short) 0, (short) 0, (short) 0, -1, false)); } + public void refreshBackground(MenuItem item) { + refreshBackground(); + } + // full-screen methods public void switchFullScreen(MenuItem item) { @@ -160,17 +187,11 @@ public class CanvasActivity extends AppCompatActivity implements View.OnSystemUi public void showTemplateImage() { ImageView template = (ImageView)findViewById(R.id.canvas_template); template.setVisibility(View.VISIBLE); - String picturePath = preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null); - if (picturePath != null) { - try { - Drawable d = Drawable.createFromPath(picturePath); - template.setImageDrawable(d); - //Bitmap bm = BitmapFactory.decodeFile(picturePath); - //template.setImageBitmap(bm); - Log.i("drawn", picturePath); - } catch (Exception e) { - Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); - } + try { + Drawable d = Drawable.createFromPath(SCREEN_PATH); + template.setImageDrawable(d); + } catch (Exception e) { + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } } diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java index fffd108..f934e98 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java @@ -31,7 +31,6 @@ public class CanvasView extends View implements SharedPreferences.OnSharedPrefer // setup - public CanvasView(Context context, AttributeSet attributeSet) { super(context, attributeSet); @@ -40,7 +39,6 @@ public class CanvasView extends View implements SharedPreferences.OnSharedPrefer settings = PreferenceManager.getDefaultSharedPreferences(context); settings.registerOnSharedPreferenceChangeListener(this); - setBackground(); setInputMethods(); inRangeStatus = InRangeStatus.OutOfRange; } @@ -52,27 +50,14 @@ public class CanvasView extends View implements SharedPreferences.OnSharedPrefer // settings - - protected void setBackground() { - if (settings.getBoolean(SettingsActivity.KEY_DARK_CANVAS, false)) - setBackgroundColor(Color.BLACK); - //else - //setBackgroundResource(R.drawable.bg_grid_pattern); //<-- Add this as option? - } - protected void setInputMethods() { acceptStylusOnly = settings.getBoolean(SettingsActivity.KEY_PREF_STYLUS_ONLY, false); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - switch (key) { - case SettingsActivity.KEY_PREF_STYLUS_ONLY: - setInputMethods(); - break; - case SettingsActivity.KEY_DARK_CANVAS: - setBackground(); - break; + if (key.equals(SettingsActivity.KEY_PREF_STYLUS_ONLY)) { + setInputMethods(); } } diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkServer.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkServer.java index 759f534..046a7f0 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkServer.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/NetworkServer.java @@ -23,34 +23,34 @@ public class NetworkServer implements Runnable { public void run() { try { DatagramSocket socket = new DatagramSocket(GFXTABLET_PORT); + int packets = 0; SparseArray buffer = new SparseArray<>(); // Init has to be done twice because the first call will be set on the server with 0.0.0.0 // but we need the ip of the client. CanvasActivity.get().sendMotionStopSignal(); CanvasActivity.get().sendMotionStopSignal(); + CanvasActivity.get().refreshBackground(); while (true) { byte[] buf = new byte[60030]; DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); int n = buf[60029]; - //Log.i("receive:", String.valueOf(n)); + Log.i("receive:", String.valueOf(n)); if (n != 0){ buffer.put(n, buf); } else if (buffer.size() > 0 ) { try { - String path = CanvasActivity.get().getCacheDir() + "/dsektop.png"; - Log.i("buffer:", String.valueOf(buf[0])); + String path = CanvasActivity.SCREEN_PATH; boolean parts = buffer.size() == (int) buf[0]; for (int i=0; i < buf[0]; i++) { if (parts) { - //Log.i("keyAt " + i, String.valueOf(buffer.keyAt(i))); parts = buffer.keyAt(i) == i+1; } } if (!parts) { buffer.clear(); - CanvasActivity.get().sendMotionStopSignal(); + CanvasActivity.get().refreshBackground(); Log.i("Image Problem", "tying to refetch the screenshot"); continue; } @@ -62,13 +62,6 @@ public class NetworkServer implements Runnable { } fos.flush(); fos.close(); - File file = new File(path); - long size = file.length(); - //Log.i("file-path", path); - //Log.i("file-size", String.valueOf(size)); - preferences.edit().remove(SettingsActivity.KEY_TEMPLATE_IMAGE).apply(); - preferences.edit().putString(SettingsActivity.KEY_TEMPLATE_IMAGE, path).apply(); - //Log.i("file-path-current", preferences.getString(SettingsActivity.KEY_TEMPLATE_IMAGE, null)); CanvasActivity.get().runOnUiThread(new Runnable() { @Override public void run() { diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java index d81257b..491c69c 100644 --- a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java +++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java @@ -8,10 +8,9 @@ public class SettingsActivity extends AppCompatActivity { public static final String KEY_PREF_HOST = "host_preference", KEY_PREF_STYLUS_ONLY = "stylus_only_preference", - KEY_DARK_CANVAS = "dark_canvas_preference", KEY_KEEP_DISPLAY_ACTIVE = "keep_display_active_preference", - KEY_TEMPLATE_IMAGE = "key_template_image"; - + KEY_AUTO_REFRESH = "auto_refresh_preference"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-hdpi/ic_action_picture.png deleted file mode 100644 index 00216eab58720ce35d13377ebfc5417ceee25ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!EX7WqAsj$Z!;#Vf4nJ zFn$4H#?8ze6M=$~C9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lHF&x> zhE&XXd&@dQBv7L5;rAVJN>VN&A}VnX-7KPu#ip%PN?JOVBdQ`>H(4K z%g5Y!T4JVXM7RrBOCJncW7i#Nxaekm+POJ%Z{Gc%S)6umW_kLwlW!V|&sjddlfZS2 z!Si{;KDn$J=Ut z(YlaHtdmMaBUFA*%#;4$bm?r!=cPfF3Z922&139uT$}yx3R9ZO-St)Hrf30m@le43{15(y&<9-q_Ze9*?wMR-RmA(ci+9V;NudYq z5&|!&G%UHW&o_eg-G!f*Y#DSscEw(d`gdtby=hzH^hwJaL^s`T*=xD|E|bj^ljvvN z`zNchHob9J-WaU9eZODXPPtWCj=tO>t%V7$mu_m6UF&aTC}UiIYdcfm@f+(KADmx% zAm@zVFUt%0f#r9b1vI+YjVctHp~MlptJa>MmH+qLw9pFRc<6oR+uj8)=hwaMn&-%V zyI;BL<~gP2ZZ<2YZx%@jKUC9B6tmSb+bxgt@ZEQPFT?XW#piY|`^B1LzHj65-?rhv P1k2#*>gTe~DWM4fCu>No diff --git a/app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-mdpi/ic_action_picture.png deleted file mode 100644 index 5c994c622a10b3a9c41d4ba7beb10a97161b1416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq z7=1yQareRayFfw764!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=2edd%8G= zWHi2=u`yf3QNsOx#)XpQN1V8Mladvbx_ZN=ZM5QeqVF;JoZ5tX#f0R^YD>gLdZvEU z%FGe*oF%esVu;x?PL|J?T!bE$l|Q?)duMay(=+DA`^|MWe{ftFAd&5~-tjBnhk_H4 zvuBJ*o4-bMDHUk09L*p&yU5eI6hIf zCH~c9x!+}1?-rL3xEMXcl1!d(TszODPUZ`r%b{Y=d@|MZyGUnxIO z{vgu#u6OBSySPn``|pc4>YaTn-Qb$wy?1WWffau{4nJ zFwF*G#@ShEn}C9nC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l8+f`n zhE&XXd)K$aH&N#J$M?wwOZV(QT^+d~WzmKYVQ!m_I(2Od*fe7)@5HHVJT$p)YH)8l zD9|-YDRaZ7Nn1B19ekBu*w1l&PVxE5clBw1>`Z4{KezjSzvg}IyPf6BtP|28;F{^m zQwJxVWAy&qW0Yp&s~M|P{ozMf_jl%O?YQUlpVyu`__)Y7@u`KwhE>rQ-rF(COU+0& ziRScq_2pD4GtaUqeAi-~* zq$)Vh{C<0Tb>s6%*Gj6_X~Y6Gni+7+VXC?%vyGubDYN)G8~2s143oB9yj4^-&7#KY zL%^kdYn*!-ZZdm#P3mLrZ}=&??iP2<^b(WvDay{*7>-7sV}79XcKe+AmyCLzR>~_c z9oO12Gkxxo>`7r)VpnV4Wb(Mh#Pjj9&hoy=2SPoCt>&ceTXOmU_XCCxUYF*vJzKT* zBg4^Y#tzx1BQHF-)ZVarl3MtT)Fi{x)(<%B4iH_3FvQn=@qk8=?t;CcLyHH{aZI9^;A5c=YhfpaWlUbofJ$6ZZoal%2;tRPk#Cp^_QFl!VzIf zd+QQBE**R3rlbF7?*cwu_IX}W-ybu18mq=K#4$x{uiHN1T6TXUTe{BDcj>M!v$$=h zZIO>)o%7&*v~T3z13w>y{@6I>(si~pnQIw*3~SXdTl223lz1_Di}}(o`yOunZxFS8 z!JS_X(XR;LC@N!KuevtBDv@0y-*D~s zEmBW$#C_2o*}ao(_V>wf+L`Z7c+42&l|MVKSm(2t2r$)Lz1uYH4}blB%bv{Abus1# zrad}s^+Z<#lCDDkPrm1rkhCoFSeL%$(*BFiGiHK8ug`r(@s^L*mFBL049s8*p00i_ I>zopr09FK;LI3~& diff --git a/app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png b/app-android/app/src/main/res/drawable-xxhdpi/ic_action_picture.png deleted file mode 100644 index b81237fba3824337dadc1742d558042d55319235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1314 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cu@pObhHwBu4M$1`kk47*5n0T@ z!2AM)8MjskWdj8zOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kpdbt-_yl0 zq+-t7yJuI2l*%0c`2FPaH_H;8CWW~13$V4$O8Byc%PT`LNv)-uL%eYpSLcFu-yK^P zv^oZ`sNGtn-rTjxL|f;Uh^xR?^(`J5Uo#8UCKT)`|8wrl%))!?pYDDBug?D2zM1!D z8mGTw^_--Fgc_DvIZV<$@KSM&>*LaGnX`7jQkc%0tU4=}ZHW+bP$%QcBMl*&Dvmt< z&-Taik!4Aubi>tH{YC3lqA%Syj$NOBP1W+=^YYK%4UUy_2SZdRIcOOwOqH16#p9uh zWC&e^^*S3S-I@QyW76tfai`bJeAO_?#Pb{Dd?xFLV9#~$D?wH>TJ-cir*NZv2uT=^jv+~8V)=YY` zaidO7o3F3KUg0OnTcWRBV*PW%=t04xs_x|e!Fa>$LBAeTocAZMNohZ{ zFCSr_l44%KwPU5hnYagMRlJ|s1~JdP(J*O^Pmzelkwe?o{CvY?=d&q^BY9=I63}TA z%TC|2d$LfT#m>9v?1bZUBZb8SCfOdie&DR~tR&+CBhOTC8IMUjRnDvLERQMfJAH&@ zN{Z_w}$cwZ-X7N_) zfy<Yih3(1isg9F$-sk%7XV^XS z|Hi$&-)eU|uFv(IqBpHYb6%t_SKE$lXc=x9NatkgYbdG2TA$LnGNZg`uaYPl8YSY&S&;r;GS7O zbMo^jZcV~xziJ*OL*J@5HldfMI18hPg{liHoATix~cm;bB& zTw%kw#(&e=%vtuwY`!=B-o?tcWoyQsb7sE5|GYQaF@v%;JXf}TjJpxP<$qc9<)`!4 ji7OzL5Gt9Q{&1&knfW@EBOni0o-ug3`njxgN@xNAIGIB? diff --git a/app-android/app/src/main/res/drawable/bg_grid.png b/app-android/app/src/main/res/drawable/bg_grid.png deleted file mode 100644 index 03e0b257b2582f0a86aa4e2ce3f26f934030c081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9wUgGKN%6^|sT*#1F_sITJKq1-8kcblJ{M_8syb>Unfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lA9`EVm7!q+fIbngonK_o1X9)fE;bG=+lQnqN5XjzRm2ib| zF`vXOz8RLq%lMg@n{}tCaT^3h%)hO)k$>`22CbF`E@tM#bH9A~qRTAQzF2n=LR0C1 b3FQn7JnsY++*_w019F3>tDnm{r-UW|qR&R@ diff --git a/app-android/app/src/main/res/drawable/bg_grid_pattern.xml b/app-android/app/src/main/res/drawable/bg_grid_pattern.xml deleted file mode 100644 index 5719a5a..0000000 --- a/app-android/app/src/main/res/drawable/bg_grid_pattern.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/app-android/app/src/main/res/layout/activity_canvas.xml b/app-android/app/src/main/res/layout/activity_canvas.xml index f3e85ee..2387a5a 100644 --- a/app-android/app/src/main/res/layout/activity_canvas.xml +++ b/app-android/app/src/main/res/layout/activity_canvas.xml @@ -6,7 +6,7 @@ diff --git a/app-android/app/src/main/res/menu/set_template_image.xml b/app-android/app/src/main/res/menu/set_template_image.xml deleted file mode 100644 index 8b10198..0000000 --- a/app-android/app/src/main/res/menu/set_template_image.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app-android/app/src/main/res/values/strings.xml b/app-android/app/src/main/res/values/strings.xml index 7b35d63..8793ae5 100644 --- a/app-android/app/src/main/res/values/strings.xml +++ b/app-android/app/src/main/res/values/strings.xml @@ -1,15 +1,9 @@ - GfxTablet Settings - About / Help - Donate Full-screen mode - Set template image - Clear template image - Select another image No valid recipient host defined. Please configure in \"Settings / Recipient host\". @@ -18,11 +12,9 @@ Sense stylus only Only stylus input will be processed Finger and stylus input will be processed - Use dark canvas - Black canvas will be used (covers template image) - White/transparent gridded canvas will be used Keep display active Display won\'t turn off while GfxTablet is active Display will turn off according to system settings - + It will refresh every 5 seconds. + Auto refresh diff --git a/app-android/app/src/main/res/values/styles.xml b/app-android/app/src/main/res/values/styles.xml index f5b07d0..cc7fb85 100644 --- a/app-android/app/src/main/res/values/styles.xml +++ b/app-android/app/src/main/res/values/styles.xml @@ -1,9 +1,6 @@ - - - \ No newline at end of file diff --git a/app-android/app/src/main/res/xml/preferences.xml b/app-android/app/src/main/res/xml/preferences.xml index a5b2e74..cd0803e 100644 --- a/app-android/app/src/main/res/xml/preferences.xml +++ b/app-android/app/src/main/res/xml/preferences.xml @@ -16,20 +16,16 @@ android:title="@string/preferences_keep_display_active" android:summaryOn="@string/preferences_keep_display_active_on" android:summaryOff="@string/preferences_keep_display_active_off" /> - - - + android:key="auto_refresh_preference" + android:summary="@string/auto_reload_summary" + android:title="@string/auto_reload_title" />