Skip to content

Commit

Permalink
adjust for Galaxy Watch 4:
Browse files Browse the repository at this point in the history
* ignore unimplemented SettingsClient.checkLocationSettings.
* make main activity layout denser.
  • Loading branch information
nichtverstehen committed Dec 5, 2022
1 parent 5d50829 commit a73ed25
Show file tree
Hide file tree
Showing 21 changed files with 185 additions and 82 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
build/
dist/
captures/
.idea/
1 change: 1 addition & 0 deletions AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@

<application
android:allowBackup="false"
android:debuggable="true"
android:appComponentFactory="androidx.core.app.CoreComponentFactory"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
Expand Down
34 changes: 34 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# To build you will need:
# * Android SDK with platform-tools and build-tools installed:
ANDROID_SDK=/opt/android-sdk
# * apktool (brew install apktool)
APKTOOL=apktool
# * (optional) android-xml-formatter for re-formatting new disassemblies.
# Get from https://github.com/ByteHamster/android-xml-formatter/
FORMATTER=~/Downloads/android-xml-formatter.jar

PLATFORM_TOOLS=${ANDROID_SDK}/platform-tools
BUILD_TOOLS=$(shell find ${ANDROID_SDK}/build-tools -depth 1 | sort -r | head -n1)

KEYSTORE=~/.android/debug.keystore
KEYSTORE_KEY=androiddebugkey
KEYSTORE_PASS=pass:android

.PHONY: format

all: dist/com.fairtiq.android.apk

dist/com.fairtiq.android-unsigned.apk: $(wildcard res/**/* smali*/**/* *)
${APKTOOL} b --use-aapt2 . -o dist/com.fairtiq.android-unsigned.apk

dist/com.fairtiq.android.apk: dist/com.fairtiq.android-unsigned.apk
${BUILD_TOOLS}/zipalign -f -p 4 dist/com.fairtiq.android-unsigned.apk dist/com.fairtiq.android.apk
${BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE} --ks-key-alias ${KEYSTORE_KEY} --ks-pass ${KEYSTORE_PASS} \
./dist/com.fairtiq.android.apk

install: dist/com.fairtiq.android.apk
# for some reason streaming makes the app lose data occasionally
${PLATFORM_TOOLS}/adb install -r -d -g --no-streaming dist/com.fairtiq.android.apk

format:
java -jar ${FORMATTER} AndroidManifest.xml `find res/layout* -name \*.xml`
15 changes: 10 additions & 5 deletions res/drawable/toggle_thumb.xml
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Toggle component sizes itself to the graphic (see JourneyToggle.smali).
We scale it down in half.
It weirdly depends on intrinsic width, otherwise aspect ration breaks.
So we add to outerThumb dimensions what we subtract from outerThumb insets. -->
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/shadowThumb" android:left="0.0dip" android:bottom="0.0dip">
<shape android:shape="oval">
<size android:height="88.0dip" android:width="88.0dip" />
<size android:height="44.0dip" android:width="44.0dip" />
<solid android:color="@color/thumb_shadow" />
</shape>
</item>
<item android:id="@id/outerThumb" android:left="0.0dip" android:bottom="2.0dip">
<shape android:shape="oval">
<size android:height="88.0dip" android:width="88.0dip" />
<size android:height="44.0dip" android:width="44.0dip" />
<solid android:color="@color/grey_1" />
</shape>
</item>
<item android:id="@id/innerThumb" android:left="9.0dip" android:top="9.0dip" android:right="9.0dip" android:bottom="9.0dip">
<item android:id="@id/innerThumb" android:left="4.0dip" android:top="4.0dip" android:right="4.0dip" android:bottom="4.0dip">
<shape android:shape="oval">
<size android:height="88.0dip" android:width="88.0dip" />
<size android:height="54.0dip" android:width="54.0dip" />
<solid android:color="@color/grayscale_100" />
</shape>
</item>
<item android:left="0.0dip" android:bottom="0.0dip">
<shape android:shape="oval">
<size android:height="88.0dip" android:width="88.0dip" />
<size android:height="44.0dip" android:width="44.0dip" />
<gradient android:startColor="#0ee5e5e5" android:endColor="#0effffff" android:angle="90.0" />
</shape>
</item>
Expand Down
9 changes: 5 additions & 4 deletions res/drawable/toggle_track.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- toggle component sizes itself to the graphic: scale the original in half -->
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/outerTrack" android:left="0.0dip" android:bottom="0.0dip">
<shape android:shape="rectangle">
<size android:height="100.0dip" />
<size android:height="50.0dip" />
<solid android:color="@color/color_eef0f5" />
<corners android:radius="200.0dip" />
<corners android:radius="100.0dip" />
</shape>
</item>
<item android:id="@id/innerTrack" android:left="9.0dip" android:top="9.0dip" android:right="9.0dip" android:bottom="9.0dip">
<shape android:shape="rectangle">
<size android:height="88.0dip" />
<size android:height="44.0dip" />
<gradient android:startColor="#00ffffff" android:endColor="#ffffffff" android:useLevel="false" android:angle="0.0" android:type="linear" android:centerY="0.5" android:centerColor="#16ffffff" android:rotation="-180.0" />
<corners android:radius="200.0dip" />
<corners android:radius="100.0dip" />
</shape>
</item>
</layer-list>
9 changes: 6 additions & 3 deletions res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@
android:tag="layout/activity_main_0"
android:fitsSystemWindows="true">

<LinearLayout
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:tag="binding_1">

<!-- Overlay the forked transparent toolbar over the content on the main page.
There is just not enough space for everything at once. -->
<include
android:id="@id/toolbar"
layout="@layout/toolbar" />
android:layout_gravity="top"
layout="@layout/toolbar_transparent" />

<androidx.fragment.app.FragmentContainerView
android:id="@id/nav_host"
Expand All @@ -28,7 +31,7 @@
android:clickable="true"
app:defaultNavHost="true" />

</LinearLayout>
</FrameLayout>

<com.google.android.material.navigation.NavigationView
android:id="@id/menuNavigation"
Expand Down
49 changes: 28 additions & 21 deletions res/layout/component_region_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,28 @@
android:background="@android:color/transparent"
android:animateLayoutChanges="true">

<!--
Reorder vertically:
1. Community (partially occluded by watch shape, but doesn't matter).
2. Station
3. Change station.
-->
<TextView
android:id="@id/communityName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:tag="binding_4"
android:singleLine="true"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@id/stationName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
style="@style/RegularGrey" />

<TextView
android:id="@id/stationName"
android:layout_width="wrap_content"
Expand All @@ -19,12 +41,10 @@
android:layout_marginTop="@dimen/spacing_xs"
android:singleLine="true"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@id/communityName"
app:layout_constraintEnd_toStartOf="@id/changeStationContainer"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintBottom_toTopOf="@id/changeStationContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/communityName"
style="@style/H1Dark" />

<FrameLayout
Expand All @@ -33,10 +53,10 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_s"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="@id/stationName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/stationName"
app:layout_constraintTop_toTopOf="parent">
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/stationName">

<TextView
android:id="@id/changeStationButton"
Expand All @@ -59,17 +79,4 @@

</FrameLayout>

<TextView
android:id="@id/communityName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:tag="binding_4"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/stationName"
style="@style/RegularGrey" />

</androidx.constraintlayout.widget.ConstraintLayout>
11 changes: 11 additions & 0 deletions res/layout/component_traveler_settings_legacy.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,14 @@
android:padding="@dimen/spacing_m"
android:animateLayoutChanges="true">

<!--
Not enough space for traveler settings.
Not easy to hide the whole panel at once since its visibility is data-bound.
So we just hide each individual element.
-->
<TextView
android:id="@id/legacyTravelerName"
android:visibility="gone"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:tag="binding_1"
Expand All @@ -23,6 +29,7 @@

<TextView
android:id="@id/paymentProfileBadge"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="binding_2"
Expand All @@ -37,13 +44,15 @@
style="@style/ButtonMedium" />

<androidx.constraintlayout.widget.Barrier
android:visibility="gone"
android:id="@id/barrier"
android:layout_width="wrap_content"
android:layout_height="0.0dip"
app:barrierDirection="bottom"
app:constraint_referenced_ids="legacyTravelerName,paymentProfileBadge" />

<TextView
android:visibility="gone"
android:id="@id/legacyTicketClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Expand All @@ -57,6 +66,7 @@

<TextView
android:id="@id/separator"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="binding_4"
Expand All @@ -71,6 +81,7 @@

<TextView
android:id="@id/legacyTravelerPasses"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="binding_5"
Expand Down
35 changes: 18 additions & 17 deletions res/layout/fragment_ticket.xml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,23 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<!-- Reorder QR-code to the top and decrease margins. -->
<ImageView
android:id="@id/qr_code"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:tag="binding_4"
android:layout_marginTop="20.0dip"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:contentDescription="@string/qrCodeAccessibilityHint"
android:layout_marginStart="20.0dip"
android:layout_marginEnd="20.0dip"
app:layout_constraintBottom_toTopOf="@id/travelAuthorisationText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@id/travelAuthorisationText"
android:layout_width="fill_parent"
Expand All @@ -99,26 +116,10 @@
android:fontFamily="@font/lato_regular"
android:paddingStart="20.0dip"
android:paddingEnd="20.0dip"
app:layout_constraintBottom_toTopOf="@id/qr_code"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ImageView
android:id="@id/qr_code"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:tag="binding_4"
android:layout_marginTop="20.0dip"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:contentDescription="@string/qrCodeAccessibilityHint"
android:layout_marginStart="50.0dip"
android:layout_marginEnd="50.0dip"
app:layout_constraintBottom_toTopOf="@id/ticket_color_block"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/travelAuthorisationText" />
app:layout_constraintTop_toBottomOf="@id/qr_code" />

<TextView
android:id="@id/string_code"
Expand Down
Loading

0 comments on commit a73ed25

Please sign in to comment.