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;
private TextView mCurrentPageNumber;
private TextView mLastPageNumber;
private TextView mViewerStateText;
+ private TextView mZoomValue;
private ViewTreeObserver mPreviewImgObserver;
private String mFilePath;
private PdfPageView mPdfView;
mCurrentPageNumber = (TextView) findViewById(R.id.page_number);
mLastPageNumber = (TextView) findViewById(R.id.total_pages_num);
mViewerStateText = (TextView) findViewById(R.id.pdf_viewer_state);
+ mZoomValue = (TextView) findViewById(R.id.zoom_value);
mViewStates = ViewStates.SCROLLING;
mProgressContainer = (RelativeLayout) findViewById(R.id.progress_container);
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);
- mPdfView.zoom(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)));
+ }
+
private class LoadPageTask extends AsyncTask<Void, Void, Void> {
@Override
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.");
}
}