]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blobdiff - QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java
Add click, success and error sounds
[hornmich/skoda-qr-demo.git] / QRScanner / glass / src / main / java / cz / cvut / fel / dce / qrscanner / PreviewActivity.java
index 7ba8fcd9b5d5c1e9c4b652488b1d8cce084ea632..a8aafbf4ad4107ffc620eb5ab20afd8dea788b1d 100644 (file)
@@ -1,10 +1,13 @@
 package cz.cvut.fel.dce.qrscanner;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.media.AudioManager;
 import android.net.Uri;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -13,11 +16,15 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewTreeObserver;
 import android.widget.ImageView;
+import android.widget.RelativeLayout;
 import android.widget.Toast;
 
+import com.google.android.glass.media.Sounds;
+
 import java.io.File;
 
 import cz.cvut.fel.dce.qrscanner.mupdf.MuPDFCore;
+import cz.cvut.fel.dce.qrscanner.pdfviewer.PdfPageView;
 import cz.cvut.fel.dce.qrscanner.pdfviewer.PdfViewActivity;
 
 
@@ -33,15 +40,20 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob
        public static final String SKODA_COMP_MANUFACT_GUIDE = "Werkstatt_Einleitung.pdf";
 
        private ImageView mPreviewImg;
+       private RelativeLayout mProgressContainer;
        private ViewTreeObserver mPreviewImgObserver;
        private String mComponentId;
        private String mComponentRootPath;
+       private PdfPageView mPdfView;
+       private boolean mPdfLoaded;
 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_preview);
+               mPdfLoaded = false;
                mPreviewImg = (ImageView) findViewById(R.id.imgComponent);
+               mProgressContainer = (RelativeLayout) findViewById(R.id.progress_container);
 
                if (mPreviewImg != null) {
                        mPreviewImg.setMaxWidth(640);
@@ -66,6 +78,8 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob
                        if (!rootPath.isDirectory()) {
                                Toast toast = Toast.makeText(getApplicationContext(), "Component not found", Toast.LENGTH_LONG);
                                toast.show();
+                               AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+                               audio.playSoundEffect(Sounds.ERROR);
                                finish();
                        }
                }
@@ -93,24 +107,24 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob
 
        @Override
        public void onGlobalLayout() {
+               if (mPdfLoaded) {
+                       Log.d(TAG, "PDF file already loaded.");
+                       return;
+               }
                try {
                        String picturePath = mComponentRootPath + SKODA_COMP_PICTURE_NAME;
                        Log.i(TAG, "Path to component files: " + picturePath);
+                       mPdfView = new PdfPageView(getApplicationContext(), picturePath);
+                       mPdfView.setPage(0);
+                       new LoadPageTask().execute();
+
+                       mPdfLoaded = true;
 
-                       MuPDFCore core = new MuPDFCore(getApplicationContext(), picturePath);
-                       Log.d(TAG, "numpages: "+ core.countPages());
-                       MuPDFCore.Cookie cookie = core.new Cookie();
-                       int pageW = (int)core.getPageSize(0).x;
-                       int pageH = (int)core.getPageSize(0).y;
-                       Log.d(TAG, "page size: " + pageW + ", " + pageH);
-                       Bitmap.Config conf = Bitmap.Config.ARGB_8888;
-                       Bitmap previewBitmap = Bitmap.createBitmap(pageW, pageH, conf);
-                       core.drawPage(previewBitmap, 0, pageW, pageH, 0, 0, pageW, pageH, cookie);
-                       mPreviewImg.setImageBitmap(previewBitmap);
-                       mPreviewImg.invalidate();
                } catch (Exception e) {
                        Toast toast = Toast.makeText(getApplicationContext(), "Component preview could not be loaded.", Toast.LENGTH_LONG);
                        toast.show();
+                       AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+                       audio.playSoundEffect(Sounds.ERROR);
                        e.printStackTrace();
                }
        }
@@ -144,6 +158,8 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
+                       AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+                       audio.playSoundEffect(Sounds.TAP);
                        openOptionsMenu();
                        return true;
                }
@@ -181,4 +197,32 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob
                        return super.onOptionsItemSelected(item);
                }
        }
+
+       private class LoadPageTask extends AsyncTask<Void, Void, Void> {
+
+               @Override
+               protected Void doInBackground(Void[] objects) {
+                       mPdfView.loadPage();
+                       return null;
+               }
+
+               @Override
+               protected void onPreExecute() {
+                       super.onPreExecute();
+                       Log.d(TAG, "Starting loading of the PDF page asynchronously.");
+                       mProgressContainer.setVisibility(View.VISIBLE);
+               }
+
+               @Override
+               protected void onPostExecute(Void aVoid) {
+                       super.onPostExecute(aVoid);
+                       mProgressContainer.setVisibility(View.INVISIBLE);
+                       mPreviewImg.setMinimumWidth(640);
+                       mPreviewImg.setMinimumHeight(360);
+                       mPreviewImg.setImageBitmap(mPdfView.getPageBitmap());
+                       mPreviewImg.invalidate();
+                       Log.d(TAG, "PDF page loaded.");
+               }
+       }
+
 }