import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
+import android.media.AudioManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.widget.TextView;
import android.widget.Toast;
+import com.google.android.glass.media.Sounds;
+
import java.io.File;
import cz.cvut.fel.dce.qrscanner.R;
Log.i(TAG, "Path to component files: " + picturePath);
mPdfView = new PdfPageView(getApplicationContext(), picturePath);
mCurrentPageNumber.setText(Integer.toString(mPdfView.getActualPage()+1));
- mLastPageNumber.setText(Integer.toString(mPdfView.getLastPage()+1));
+ mLastPageNumber.setText(Integer.toString(mPdfView.getLastPage() + 1));
mPdfView.setListener(this);
mPdfView.setPage(0);
new LoadPageTask().execute();
@Override
public boolean onGenericMotionEvent(MotionEvent event) {
- /*
- Zoom ratio gained during one gesture on touchpad
- */
- float dzoom;
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- startX = event.getRawX();
- return false;
- }
- if (event.getAction() == MotionEvent.ACTION_MOVE) {
- dzoom = event.getRawX() - startX;
- Log.d(TAG,"move_action, dzoom: " + dzoom);
- zoomPage(dzoom /1000f);
- startX = event.getRawX();
- return false;
+ if (mViewStates == ViewStates.SCROLLING) {
+ /*
+ Zoom ratio gained during one gesture on touchpad
+ */
+ float dzoom;
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ startX = event.getRawX();
+ return false;
+ }
+ if (event.getAction() == MotionEvent.ACTION_MOVE) {
+ dzoom = event.getRawX() - startX;
+ zoomPage(dzoom / 1000f);
+ startX = event.getRawX();
+ return false;
+ }
}
return super.onGenericMotionEvent(event);
}
+ @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);
+ switchState();
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private void switchState() {
+ if (mViewStates == ViewStates.SCROLLING) {
+ mViewStates = ViewStates.VIEWING;
+ mViewerStateText.setText(getText(R.string.state_viewing));
+ }
+ else {
+ mViewStates = ViewStates.SCROLLING;
+ mViewerStateText.setText(getText(R.string.state_scrolling));
+
+ }
+ }
+
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
float dx = event.values[1]*12;
float dy = event.values[0]*12;
if (mPdfView != null) {
- mPdfView.move(-dx, -dy);
+ if (mViewStates == ViewStates.SCROLLING) {
+ mPdfView.move(-dx, -dy);
+ }
}
}
}
private void zoomPage(float deltaZoom) {
mPdfView.zoom(deltaZoom);
- mZoomValue.setText(Integer.toString(Math.round(mPdfView.getZoomRatio()*100)));
+ mZoomValue.setText(Integer.toString(Math.round(mPdfView.getZoomRatio() * 100)));
}
private class LoadPageTask extends AsyncTask<Void, Void, Void> {
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
mProgressContainer.setVisibility(View.INVISIBLE);
+ switchState();
mPdfImageContainer.addView(mPdfView);
zoomPage(0.0f); // just for update the zoom value indicator
Log.d(TAG, "PDF page loaded.");