From 910e4cd3f374d05a35c7e268a9624ed601436b8b Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Wed, 2 Dec 2015 00:15:21 -0800 Subject: [PATCH 1/2] Bangarang, we've got three-finger-tap applications! --- .../positionmock/PositionMockActivity.java | 10 +++++-- .../positionmock/TouchableMapFragment.java | 23 +++++++++++++++ .../positionmock/TouchableWrapper.java | 28 +++++++++++++++++++ app/src/main/res/layout/map.xml | 2 +- 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/ca/mitchhentges/positionmock/TouchableMapFragment.java create mode 100644 app/src/main/java/ca/mitchhentges/positionmock/TouchableWrapper.java diff --git a/app/src/main/java/ca/mitchhentges/positionmock/PositionMockActivity.java b/app/src/main/java/ca/mitchhentges/positionmock/PositionMockActivity.java index 40bc257..77738b2 100644 --- a/app/src/main/java/ca/mitchhentges/positionmock/PositionMockActivity.java +++ b/app/src/main/java/ca/mitchhentges/positionmock/PositionMockActivity.java @@ -11,9 +11,11 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.MotionEvent; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.model.GroundOverlayOptions; /** * Created by Mitch @@ -91,8 +93,7 @@ public boolean onCreateOptionsMenu(Menu menu) { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.apply: - titleBarAnimator.animateTitleBar(); - map.applyTarget(currentLocation); + applyMockLocation(); return true; default: return super.onOptionsItemSelected(item); @@ -103,4 +104,9 @@ public boolean onOptionsItemSelected(MenuItem item) { public void onMapReady(GoogleMap googleMap) { map.setGoogleMap(googleMap); } + + public void applyMockLocation() { + titleBarAnimator.animateTitleBar(); + map.applyTarget(currentLocation); + } } diff --git a/app/src/main/java/ca/mitchhentges/positionmock/TouchableMapFragment.java b/app/src/main/java/ca/mitchhentges/positionmock/TouchableMapFragment.java new file mode 100644 index 0000000..064db2d --- /dev/null +++ b/app/src/main/java/ca/mitchhentges/positionmock/TouchableMapFragment.java @@ -0,0 +1,23 @@ +package ca.mitchhentges.positionmock; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import com.google.android.gms.maps.MapFragment; + +/** + * @author cacti + * @since 12/2/2015 + */ +public class TouchableMapFragment extends MapFragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = super.onCreateView(inflater, container, savedInstanceState); + + TouchableWrapper touchableWrapper = new TouchableWrapper((PositionMockActivity) getActivity()); + touchableWrapper.addView(view); + + return touchableWrapper; + } +} diff --git a/app/src/main/java/ca/mitchhentges/positionmock/TouchableWrapper.java b/app/src/main/java/ca/mitchhentges/positionmock/TouchableWrapper.java new file mode 100644 index 0000000..9963ec4 --- /dev/null +++ b/app/src/main/java/ca/mitchhentges/positionmock/TouchableWrapper.java @@ -0,0 +1,28 @@ +package ca.mitchhentges.positionmock; + +import android.view.MotionEvent; +import android.widget.FrameLayout; + +/** + * @author cacti + * @since 12/2/2015 + */ +public class TouchableWrapper extends FrameLayout { + + private final PositionMockActivity activity; + + public TouchableWrapper(PositionMockActivity activity) { + super(activity); + this.activity = activity; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + int action = event.getAction(); + if ((action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN + && event.getPointerCount() == 3) { + activity.applyMockLocation(); + } + return super.onInterceptTouchEvent(event); + } +} diff --git a/app/src/main/res/layout/map.xml b/app/src/main/res/layout/map.xml index 69abb60..c6a94f8 100644 --- a/app/src/main/res/layout/map.xml +++ b/app/src/main/res/layout/map.xml @@ -7,7 +7,7 @@ + android:name="ca.mitchhentges.positionmock.TouchableMapFragment" /> Date: Wed, 2 Dec 2015 00:17:23 -0800 Subject: [PATCH 2/2] Update docs --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 03fd552..4820386 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,13 @@ # Position Mock [![Build Status](https://travis-ci.org/mitchhentges/position-mock.svg?branch=master)](https://travis-ci.org/mitchhentges/position-mock) Mocks a static location on the Android platform. -Built using Gradle, because it's the default Android build tool supported by Android Studio + +## How to use + +1. Use standard Google Maps motions to drag map around until black dot in centre corresponds to location that you'd +like to "mock to" +2. Either hit the `APPLY` button or do a three-finger-tap to apply the mocked location +3. Once the title bar flashes green, the position has been mocked ## Building