1212import android .hardware .Camera ;
1313import android .net .http .SslError ;
1414import android .os .Bundle ;
15+ import android .support .annotation .Nullable ;
1516import android .view .KeyEvent ;
1617import android .view .MotionEvent ;
1718import android .view .View ;
1819import android .view .Window ;
1920import android .view .WindowManager ;
2021import android .webkit .SslErrorHandler ;
22+ import android .webkit .WebResourceRequest ;
23+ import android .webkit .WebResourceResponse ;
2124import android .webkit .WebSettings ;
2225import android .webkit .WebView ;
2326import android .webkit .WebViewClient ;
2932import com .coderbunker .kioskapp .facerecognition .CameraPreview ;
3033import com .coderbunker .kioskapp .facerecognition .FaceDetectionListener ;
3134import com .coderbunker .kioskapp .lib .HOTP ;
35+ import com .coderbunker .kioskapp .lib .SaveAndLoad ;
3236import com .coderbunker .kioskapp .lib .TOTP ;
37+ import com .coderbunker .kioskapp .lib .URLRequest ;
3338import com .gun0912 .tedpermission .PermissionListener ;
3439import com .gun0912 .tedpermission .TedPermission ;
3540
41+ import java .net .MalformedURLException ;
42+ import java .net .URL ;
3643import java .util .ArrayList ;
3744import java .util .Arrays ;
3845import java .util .List ;
@@ -48,7 +55,7 @@ public class KioskActivity extends Activity implements Observer {
4855 private WebView webView ;
4956 private TextView face_detection_score , face_counter_view ;
5057 private static String password = "1234" ;
51- private static String URL = "" ;
58+ private static String url = "" ;
5259
5360 private final List blockedKeys = new ArrayList (Arrays .asList (KeyEvent .KEYCODE_VOLUME_DOWN ,
5461 KeyEvent .KEYCODE_VOLUME_UP , KeyEvent .KEYCODE_BACK , KeyEvent .KEYCODE_HOME , KeyEvent .KEYCODE_POWER , KeyEvent .KEYCODE_APP_SWITCH ));
@@ -96,7 +103,7 @@ protected void onCreate(Bundle savedInstanceState) {
96103 prefs = this .getSharedPreferences (
97104 "com.coderbunker.kioskapp" , Context .MODE_PRIVATE );
98105
99- URL = prefs .getString ("url" , "https://coderbunker.github.io/kiosk-web/" );
106+ url = prefs .getString ("url" , "https://coderbunker.github.io/kiosk-web/" );
100107 String otp = prefs .getString ("otp" , null );
101108
102109 if (otp == null ) {
@@ -130,6 +137,31 @@ public void run() {
130137 timerLock .schedule (lock , 5000 );
131138 }
132139
140+ @ Nullable
141+ @ Override
142+ public WebResourceResponse shouldInterceptRequest (WebView view , WebResourceRequest request ) {
143+ System .out .println ("Test: " + request .getUrl ().toString ());
144+
145+ try {
146+ if (request .getUrl ().toString ().contains (".mp4" ) || request .getUrl ().toString ().contains (".wav" )) {
147+ String [] url_parts = request .getUrl ().toString ().split ("/" );
148+ String file_name = url_parts [url_parts .length - 1 ];
149+
150+ if (SaveAndLoad .readFromFile (file_name , KioskActivity .this ).equals ("" )) {
151+ String response = URLRequest .requestURL (new URL (request .getUrl ().toString ()), "GET" , "" );
152+
153+ SaveAndLoad .writeToFile (file_name , response , KioskActivity .this );
154+ }
155+ return new WebResourceResponse (SaveAndLoad .getMimeType (request .getUrl ().toString ()), "UTF-8" , SaveAndLoad .readFromFileAndReturnInputStream (file_name , KioskActivity .this ));
156+
157+ }
158+ } catch (MalformedURLException e ) {
159+ e .printStackTrace ();
160+ }
161+
162+ return super .shouldInterceptRequest (view , request );
163+ }
164+
133165 @ Override
134166 public boolean shouldOverrideUrlLoading (WebView view , String url ) {
135167 if (url .contains (url )) {
@@ -150,9 +182,9 @@ public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError e
150182 webView .getSettings ().setAppCacheMaxSize (200 * 1024 * 1024 );
151183 webView .getSettings ().setCacheMode (WebSettings .LOAD_DEFAULT );
152184 webView .getSettings ().setMediaPlaybackRequiresUserGesture (false );
153- webView .loadUrl (URL );
185+ webView .loadUrl (url );
154186
155- Toast .makeText (this , "Loading " + URL , Toast .LENGTH_SHORT ).show ();
187+ Toast .makeText (this , "Loading " + url , Toast .LENGTH_SHORT ).show ();
156188
157189 //Touch events for password
158190 webView .setOnClickListener (new View .OnClickListener () {
@@ -215,14 +247,13 @@ public void run() {
215247 PermissionListener permissionlistener = new PermissionListener () {
216248 @ Override
217249 public void onPermissionGranted () {
218- try {
250+ try {
219251 mCamera .unlock ();
220- }catch (Exception e ){
252+ } catch (Exception e ) {
221253
222254 }
223255 mCamera = getCameraInstance ();
224256 if (mCamera != null ) {
225-
226257 FaceDetectionListener faceDetectionListener = new FaceDetectionListener ();
227258 faceDetectionListener .addObserver (KioskActivity .this );
228259 mCamera .setFaceDetectionListener (faceDetectionListener );
0 commit comments