|
1 | 1 | package com.coderbunker.kioskapp; |
2 | 2 |
|
| 3 | +import android.Manifest; |
3 | 4 | import android.app.Activity; |
4 | 5 | import android.app.Dialog; |
5 | 6 | import android.content.Context; |
|
29 | 30 | import com.coderbunker.kioskapp.facerecognition.FaceDetectionListener; |
30 | 31 | import com.coderbunker.kioskapp.lib.HOTP; |
31 | 32 | import com.coderbunker.kioskapp.lib.TOTP; |
| 33 | +import com.gun0912.tedpermission.PermissionListener; |
| 34 | +import com.gun0912.tedpermission.TedPermission; |
32 | 35 |
|
33 | 36 | import java.util.ArrayList; |
34 | 37 | import java.util.Arrays; |
@@ -141,10 +144,11 @@ public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError e |
141 | 144 | handler.proceed(); //Ignore SSL certificate error |
142 | 145 | } |
143 | 146 | }); |
| 147 | + |
144 | 148 | webView.getSettings().setJavaScriptEnabled(true); |
145 | 149 | webView.getSettings().setAppCacheEnabled(true); |
146 | | - webView.getSettings().setAppCacheMaxSize(5000 * 1000 * 1000); |
147 | | - webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); |
| 150 | + webView.getSettings().setAppCacheMaxSize(200 * 1024 * 1024); |
| 151 | + webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); |
148 | 152 | webView.getSettings().setMediaPlaybackRequiresUserGesture(false); |
149 | 153 | webView.loadUrl(URL); |
150 | 154 |
|
@@ -207,22 +211,42 @@ public void run() { |
207 | 211 |
|
208 | 212 |
|
209 | 213 | if (checkCameraHardware(this)) { |
210 | | - mCamera = getCameraInstance(); |
211 | | - if (mCamera != null) { |
212 | 214 |
|
213 | | - FaceDetectionListener faceDetectionListener = new FaceDetectionListener(); |
214 | | - faceDetectionListener.addObserver(this); |
215 | | - mCamera.setFaceDetectionListener(faceDetectionListener); |
| 215 | + PermissionListener permissionlistener = new PermissionListener() { |
| 216 | + @Override |
| 217 | + public void onPermissionGranted() { |
| 218 | + try{ |
| 219 | + mCamera.unlock(); |
| 220 | + }catch (Exception e){ |
| 221 | + |
| 222 | + } |
| 223 | + mCamera = getCameraInstance(); |
| 224 | + if (mCamera != null) { |
216 | 225 |
|
217 | | - mCameraPreview = new CameraPreview(this, mCamera); |
| 226 | + FaceDetectionListener faceDetectionListener = new FaceDetectionListener(); |
| 227 | + faceDetectionListener.addObserver(KioskActivity.this); |
| 228 | + mCamera.setFaceDetectionListener(faceDetectionListener); |
218 | 229 |
|
219 | | - FrameLayout preview = findViewById(R.id.camera_preview); |
220 | | - preview.addView(mCameraPreview); |
| 230 | + mCameraPreview = new CameraPreview(context, mCamera); |
221 | 231 |
|
222 | | - mCamera.startPreview(); |
223 | | - } else { |
| 232 | + FrameLayout preview = findViewById(R.id.camera_preview); |
| 233 | + preview.addView(mCameraPreview); |
224 | 234 |
|
225 | | - } |
| 235 | + mCamera.startPreview(); |
| 236 | + Toast.makeText(context, "Face recognition started", Toast.LENGTH_LONG).show(); |
| 237 | + } else { |
| 238 | + Toast.makeText(context, "Due a camera issue the face recognition can not be started.", Toast.LENGTH_LONG).show(); |
| 239 | + } |
| 240 | + } |
| 241 | + |
| 242 | + @Override |
| 243 | + public void onPermissionDenied(ArrayList<String> deniedPermissions) { |
| 244 | + Toast.makeText(context, "Face recognition not active due denied permissions.", Toast.LENGTH_SHORT).show(); |
| 245 | + } |
| 246 | + |
| 247 | + }; |
| 248 | + |
| 249 | + TedPermission.with(context).setPermissionListener(permissionlistener).setPermissions(Manifest.permission.CAMERA).check(); |
226 | 250 | } |
227 | 251 |
|
228 | 252 |
|
@@ -465,31 +489,12 @@ protected void onPause() { |
465 | 489 | super.onPause(); |
466 | 490 | } |
467 | 491 |
|
468 | | - private long last_detected = 0; |
469 | | - private long face_current_counter = 0; |
470 | | - private long face_counter = 0; |
471 | | - |
472 | 492 | @Override |
473 | 493 | public void update(Observable o, Object arg) { |
474 | 494 | if (o instanceof FaceDetectionListener) { |
475 | | - Camera.Face face = ((Camera.Face) arg); |
476 | | - |
477 | | - face_detection_score.setText("Score:" + face.score); |
478 | | - |
479 | | - if (face.score >= 85) { |
480 | | - face_current_counter++; |
481 | | - } else { |
482 | | - face_current_counter = 0; |
483 | | - } |
484 | | - |
485 | | - if (face_current_counter >= 5 && last_detected < System.currentTimeMillis() + 45000) { |
486 | | - face_counter++; |
487 | | - last_detected = System.currentTimeMillis(); |
488 | | - face_current_counter = -5000; |
489 | | - } |
490 | | - |
491 | | - face_counter_view.setText("Viewers: " + face_counter); |
492 | | - |
| 495 | + Camera.Face[] faces = ((Camera.Face[]) arg); |
| 496 | + //face_detection_score.setText("Faces:" + faces.length); |
| 497 | + face_counter_view.setText("Current faces: " + faces.length); |
493 | 498 | } |
494 | 499 | } |
495 | 500 | } |
0 commit comments