├── .gitignore
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── debug
│ └── output.json
├── proguard-rules.pro
└── src
│ ├── debug
│ └── res
│ │ ├── values-en
│ │ └── strings.xml
│ │ └── values
│ │ └── strings.xml
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── hash-suffix.h.sample
│ │ ├── licenseandroidsupportlibrary.txt
│ │ ├── licenseapachecommons.txt
│ │ ├── licensefbase.txt
│ │ ├── licensegson.txt
│ │ ├── licensejavaxactivation.txt
│ │ ├── licensejersey.txt
│ │ ├── licensejetty.txt
│ │ ├── licenselogback.txt
│ │ ├── licenseokhttp.txt
│ │ ├── licenseosmbonuspack.txt
│ │ ├── licenseosmdroid.txt
│ │ ├── licenserangeseekbar.txt
│ │ ├── licenseslf4japi.txt
│ │ ├── licenseslf4jsimple.txt
│ │ ├── licensesmpandroidchart.txt
│ │ ├── server.cer
│ │ └── simRa_regions.config
│ ├── java
│ │ └── de
│ │ │ └── tuberlin
│ │ │ └── mcc
│ │ │ └── simra
│ │ │ └── app
│ │ │ ├── SimraApplication.java
│ │ │ ├── activities
│ │ │ ├── AboutActivity.java
│ │ │ ├── ContactActivity.java
│ │ │ ├── CreditsActivity.java
│ │ │ ├── FeedbackActivity.java
│ │ │ ├── HistoryActivity.java
│ │ │ ├── LicenseActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── OpenBikeSensorActivity.kt
│ │ │ ├── ProfileActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── ShowRouteActivity.java
│ │ │ ├── SingleRideStatisticsActivity.java
│ │ │ ├── StartActivity.java
│ │ │ ├── StatisticsActivity.java
│ │ │ └── WebActivity.java
│ │ │ ├── annotation
│ │ │ ├── GeoPointWrapper.java
│ │ │ ├── IncidentPopUpActivity.java
│ │ │ ├── MarkerFunct.java
│ │ │ └── MyInfoWindow.java
│ │ │ ├── entities
│ │ │ ├── DataLog.java
│ │ │ ├── DataLogEntry.java
│ │ │ ├── IncidentLog.java
│ │ │ ├── IncidentLogEntry.java
│ │ │ ├── MetaData.java
│ │ │ ├── MetaDataEntry.java
│ │ │ ├── Profile.java
│ │ │ └── Ride.java
│ │ │ ├── services
│ │ │ ├── DebugUploadService.java
│ │ │ ├── RecorderService.java
│ │ │ └── UploadService.java
│ │ │ ├── update
│ │ │ └── VersionUpdater.java
│ │ │ └── util
│ │ │ ├── BaseActivity.java
│ │ │ ├── ConnectionManager.kt
│ │ │ ├── Constants.java
│ │ │ ├── ForegroundServiceNotificationManager.java
│ │ │ ├── IOUtils.java
│ │ │ ├── IncidentBroadcaster.java
│ │ │ ├── LogHelper.java
│ │ │ ├── LoggingExceptionActivity.java
│ │ │ ├── PermissionHelper.java
│ │ │ ├── SharedPref.java
│ │ │ ├── SimRAuthenticator.java
│ │ │ ├── UnitHelper.java
│ │ │ ├── UpdateHelper.java
│ │ │ ├── Utils.java
│ │ │ └── ble
│ │ │ ├── BleExtensions.kt
│ │ │ └── ConnectionEventListener.kt
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ ├── dashboard_icon.png
│ │ │ ├── edit_event_blue.png
│ │ │ ├── edit_event_green.png
│ │ │ ├── edited_event_blue.png
│ │ │ ├── edited_event_green.png
│ │ │ ├── globe_icon.png
│ │ │ ├── ic_route.png
│ │ │ ├── racingflagblack.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── startblack.png
│ │ │ ├── startwhite.png
│ │ │ └── twitter_black.png
│ │ ├── drawable-mdpi
│ │ │ ├── dashboard_icon.png
│ │ │ ├── edit_event_blue.png
│ │ │ ├── edit_event_green.png
│ │ │ ├── edited_event_blue.png
│ │ │ ├── edited_event_green.png
│ │ │ ├── globe_icon.png
│ │ │ ├── ic_route.png
│ │ │ ├── racingflagblack.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── startblack.png
│ │ │ ├── startwhite.png
│ │ │ └── twitter_black.png
│ │ ├── drawable-v24
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── person.png
│ │ ├── drawable-xhdpi
│ │ │ ├── dashboard_icon.png
│ │ │ ├── edit_event_blue.png
│ │ │ ├── edit_event_green.png
│ │ │ ├── edited_event_blue.png
│ │ │ ├── edited_event_green.png
│ │ │ ├── globe_icon.png
│ │ │ ├── ic_route.png
│ │ │ ├── racingflagblack.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── startblack.png
│ │ │ ├── startwhite.png
│ │ │ └── twitter_black.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── dashboard_icon.png
│ │ │ ├── edit_event_blue.png
│ │ │ ├── edit_event_green.png
│ │ │ ├── edited_event_blue.png
│ │ │ ├── edited_event_green.png
│ │ │ ├── globe_icon.png
│ │ │ ├── ic_route.png
│ │ │ ├── racingflagblack.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── startblack.png
│ │ │ ├── startwhite.png
│ │ │ └── twitter_black.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── dashboard_icon.png
│ │ │ ├── edit_event_blue.png
│ │ │ ├── edit_event_green.png
│ │ │ ├── edited_event_blue.png
│ │ │ ├── edited_event_green.png
│ │ │ ├── globe_icon.png
│ │ │ ├── ic_route.png
│ │ │ ├── racingflagblack.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── startblack.png
│ │ │ ├── startwhite.png
│ │ │ └── twitter_black.png
│ │ ├── drawable
│ │ │ ├── border.xml
│ │ │ ├── button_pressed.xml
│ │ │ ├── button_unpressed.xml
│ │ │ ├── cancel_icon_640.png
│ │ │ ├── co2.png
│ │ │ ├── ic_access_time_black_24dp.xml
│ │ │ ├── ic_alt_route_24.xml
│ │ │ ├── ic_arrow_back_black_24dp.xml
│ │ │ ├── ic_arrow_back_blue_24dp.xml
│ │ │ ├── ic_baseline_connect_without_contact_24.xml
│ │ │ ├── ic_baseline_email_24.xml
│ │ │ ├── ic_baseline_feedback_24.xml
│ │ │ ├── ic_baseline_touch_app_24.xml
│ │ │ ├── ic_baseline_web_24.xml
│ │ │ ├── ic_bluetooth.xml
│ │ │ ├── ic_bluetooth_connected.xml
│ │ │ ├── ic_bluetooth_disabled.xml
│ │ │ ├── ic_bluetooth_searching.xml
│ │ │ ├── ic_cancel.xml
│ │ │ ├── ic_cloud_done_black_24dp.xml
│ │ │ ├── ic_co2.xml
│ │ │ ├── ic_content_paste_black_24dp.xml
│ │ │ ├── ic_copyright_black_24dp.xml
│ │ │ ├── ic_directions_car_24.xml
│ │ │ ├── ic_face_black_24dp.xml
│ │ │ ├── ic_file_upload_black_24dp.xml
│ │ │ ├── ic_help_outline_black_24dp.xml
│ │ │ ├── ic_help_outline_blue_24dp.xml
│ │ │ ├── ic_help_outline_white_24dp.xml
│ │ │ ├── ic_info_black_24dp.xml
│ │ │ ├── ic_instagram_logo.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_list_black_24dp.xml
│ │ │ ├── ic_nav_helmet.xml
│ │ │ ├── ic_nav_mcc.xml
│ │ │ ├── ic_phone_android_black_24dp.xml
│ │ │ ├── ic_save.xml
│ │ │ ├── ic_save_black_24dp.xml
│ │ │ ├── ic_security_black_24dp.xml
│ │ │ ├── ic_settings_black_24dp.xml
│ │ │ ├── ic_tachometer.xml
│ │ │ ├── ic_timer_black_24dp.xml
│ │ │ ├── ic_today_black_24dp.xml
│ │ │ ├── ic_traffic_light_red.xml
│ │ │ ├── ic_twitter_logo_blue.xml
│ │ │ ├── ic_undo.xml
│ │ │ ├── mcc_ecdf.PNG
│ │ │ ├── my_center.png
│ │ │ ├── ok_icon_640.png
│ │ │ ├── profile_region_border.xml
│ │ │ ├── racingflag.png
│ │ │ ├── racingflagwhite.png
│ │ │ ├── ripple_effect.xml
│ │ │ ├── rounded_white.xml
│ │ │ ├── route.png
│ │ │ ├── shadow_gradient.xml
│ │ │ ├── simra_logo.png
│ │ │ ├── start.png
│ │ │ ├── startwhite.png
│ │ │ ├── stop.png
│ │ │ ├── tap.png
│ │ │ ├── tap_64.png
│ │ │ ├── tap_blck.png
│ │ │ ├── tap_blck_64.png
│ │ │ ├── traffic_light_in_red_signal.png
│ │ │ ├── tu_logo.png
│ │ │ └── tutorial.gif
│ │ ├── font
│ │ │ ├── assistant_extralight.ttf
│ │ │ └── bungee_shade.xml
│ │ ├── layout
│ │ │ ├── activity_about.xml
│ │ │ ├── activity_contact.xml
│ │ │ ├── activity_credits.xml
│ │ │ ├── activity_feedback.xml
│ │ │ ├── activity_help.xml
│ │ │ ├── activity_history.xml
│ │ │ ├── activity_license.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_openbikesensor.xml
│ │ │ ├── activity_profile.xml
│ │ │ ├── activity_ride_settings.xml
│ │ │ ├── activity_settings.xml
│ │ │ ├── activity_show_route.xml
│ │ │ ├── activity_single_ride_statistics.xml
│ │ │ ├── activity_start.xml
│ │ │ ├── activity_statistics.xml
│ │ │ ├── activity_web.xml
│ │ │ ├── app_bar_main.xml
│ │ │ ├── bonuspack_bubble.xml
│ │ │ ├── checkbox.xml
│ │ │ ├── content_contact.xml
│ │ │ ├── content_credits.xml
│ │ │ ├── content_main.xml
│ │ │ ├── content_profile.xml
│ │ │ ├── content_ride_settings.xml
│ │ │ ├── content_statistics.xml
│ │ │ ├── incident_bubble.xml
│ │ │ ├── incident_popup_layout.xml
│ │ │ ├── incident_popup_layout_uneditable_incident.xml
│ │ │ ├── nav_header_main.xml
│ │ │ ├── new_update_prompt.xml
│ │ │ ├── news_popup.xml
│ │ │ ├── row.xml
│ │ │ ├── row_icons.xml
│ │ │ ├── show_license_dialog.xml
│ │ │ ├── spinner.xml
│ │ │ ├── spinner_item.xml
│ │ │ └── toolbar.xml
│ │ ├── menu
│ │ │ └── menu_main_drawer.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── simra_launcher.xml
│ │ │ └── simra_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── simra_launcher.png
│ │ │ ├── simra_launcher_foreground.png
│ │ │ └── simra_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── simra_launcher.png
│ │ │ ├── simra_launcher_foreground.png
│ │ │ └── simra_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── simra_launcher.png
│ │ │ ├── simra_launcher_foreground.png
│ │ │ └── simra_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── simra_launcher.png
│ │ │ ├── simra_launcher_foreground.png
│ │ │ └── simra_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── simra_launcher.png
│ │ │ ├── simra_launcher_foreground.png
│ │ │ └── simra_launcher_round.png
│ │ ├── values-en
│ │ │ ├── arrays.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── font_certs.xml
│ │ │ ├── preloaded_fonts.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values
│ │ │ ├── arrays.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── font_certs.xml
│ │ │ ├── preloaded_fonts.xml
│ │ │ ├── simra_launcher_background.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ └── simra_launcher-web.png
│ └── qa
│ └── res
│ ├── values-en
│ └── strings.xml
│ └── values
│ └── strings.xml
├── azure-pipelines.yml
├── build.gradle
├── config
├── checkstyle.xml
└── version-updater-import-control.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── metadata
└── android
│ ├── de-DE
│ ├── changelogs
│ │ ├── 58.txt
│ │ └── default.txt
│ ├── full_description.txt
│ ├── images
│ │ ├── featureGraphic.png
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1_de-DE.jpg
│ │ │ ├── 2_de-DE.jpg
│ │ │ ├── 3_de-DE.jpg
│ │ │ ├── 4_de-DE.jpg
│ │ │ ├── 5_de-DE.jpg
│ │ │ └── 6_de-DE.jpg
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
│ └── en-US
│ ├── changelogs
│ ├── 58.txt
│ └── default.txt
│ ├── full_description.txt
│ ├── images
│ ├── featureGraphic.png
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 1_de-DE.jpg
│ │ ├── 2_de-DE.jpg
│ │ ├── 3_de-DE.jpg
│ │ ├── 4_de-DE.jpg
│ │ ├── 5_de-DE.jpg
│ │ └── 6_de-DE.jpg
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | .DS_Store
5 | /build
6 | /captures
7 | .externalNativeBuild
8 | *.ser
9 | hash-suffix.h
10 | *.apk
11 | .idea/*
12 | *.properties
13 | app/qa
14 | app/release
15 | lint-report.html
16 | .project
17 | .settings
18 | .classpath
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SimRa Android App
2 |
3 | [](https://www.codefactor.io/repository/github/simra-project/simra-android)
4 |
5 | This project is part of the SimRa research project which includes the following subprojects:
6 | - [simra-android](https://github.com/simra-project/simra-android/): The SimRa app for Android.
7 | - [simra-ios](https://github.com/simra-project/simra-ios): The SimRa app for iOS.
8 | - [backend](https://github.com/simra-project/backend): The SimRa backend software.
9 | - [dataset](https://github.com/simra-project/dataset): Result data from the SimRa project.
10 | - [screenshots](https://github.com/simra-project/screenshots): Screenshots of both the iOS and Android app.
11 | - [SimRa-Visualization](https://github.com/simra-project/SimRa-Visualization): Web application for visualizing the dataset.
12 |
13 | In this project, we collect – with a strong focus on data protection and privacy – data on such near crashes to identify when and where bicyclists are especially at risk. We also aim to identify the main routes of bicycle traffic in Berlin. To obtain such data, we have developed a smartphone app that uses GPS information to track routes of bicyclists and the built-in acceleration sensors to pre-categorize near crashes. After their trip, users are asked to annotate and upload the collected data, pseudonymized per trip.
14 | For more information see [our website](https://www.digital-future.berlin/en/research/projects/simra/).
15 |
16 | ## Instructions
17 |
18 | The suffix used in the `clientHash` to protect the upload is not part of the source code.
19 | To compile the project:
20 |
21 | - copy the file `Hash-Suffix.h.sample` to `Hash-Suffix.h`
22 | - replace the sample suffix `mcc_simra` with the suffix provided from the backend operator
23 | - compile
24 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'kotlin-android'
3 | id 'com.android.application'
4 | id 'org.jetbrains.kotlin.android'
5 | }
6 |
7 | def ENV_VARIABLE_PREFIX = "SIMRA_"
8 | def API_ENDPOINT = "API_ENDPOINT"
9 | def API_VERSION = "API_VERSION"
10 |
11 | android {
12 | compileSdkVersion 34
13 | defaultConfig {
14 | applicationId "de.tuberlin.mcc.simra.app"
15 | minSdkVersion 23
16 | targetSdkVersion 34
17 | versionCode 100
18 | versionName "100.0"
19 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
20 |
21 | // defining the build date
22 | buildConfigField "long", "BUILD_DATE", System.currentTimeMillis() + "L"
23 |
24 | // Load `local.properties` (from root) for development configuration
25 | Properties properties = new Properties()
26 | if (project.rootProject.file('local.properties').exists()) {
27 | properties.load(project.rootProject.file('local.properties').newDataInputStream())
28 | }
29 |
30 |
31 | buildConfigField "String", API_ENDPOINT, properties.getProperty(API_ENDPOINT) ?: "\"https://vm2.mcc.tu-berlin.de:8082/\""
32 | buildConfigField "String", API_VERSION, properties.getProperty(API_VERSION) ?: "\"13/\""
33 |
34 | }
35 | buildTypes {
36 |
37 | release {
38 | minifyEnabled false
39 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
40 |
41 | // Allow loading the configuration Settings from environment variables
42 | def VAR_API_ENDPOINT = System.getenv(ENV_VARIABLE_PREFIX + API_ENDPOINT)
43 | if (VAR_API_ENDPOINT != null) {
44 | buildConfigField "String", API_ENDPOINT, "\"" + VAR_API_ENDPOINT + "\""
45 | }
46 | def VAR_API_VERSION = System.getenv(ENV_VARIABLE_PREFIX + API_VERSION)
47 | if (VAR_API_VERSION != null) {
48 | buildConfigField "String", API_VERSION, "\"" + VAR_API_VERSION + "\""
49 | }
50 | }
51 | qa {
52 | initWith buildTypes.release
53 | }
54 | }
55 | buildFeatures {
56 | viewBinding = true
57 | }
58 | compileOptions {
59 | sourceCompatibility = '17'
60 | targetCompatibility = '17'
61 | sourceCompatibility JavaVersion.VERSION_17
62 | targetCompatibility JavaVersion.VERSION_17
63 | }
64 | namespace 'de.tuberlin.mcc.simra.app'
65 | }
66 |
67 | dependencies {
68 | implementation fileTree(include: ['*.jar'], dir: 'libs')
69 | implementation 'androidx.appcompat:appcompat:1.3.0'
70 | implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
71 |
72 | implementation "androidx.lifecycle:lifecycle-service:2.3.1"
73 | implementation 'androidx.legacy:legacy-support-v4:1.0.0'
74 | implementation 'com.google.android.material:material:1.4.0'
75 | api 'org.osmdroid:osmdroid-android:6.1.10'
76 | api 'com.github.MKergall:osmbonuspack:6.7.0'
77 | implementation 'com.github.Jay-Goo:RangeSeekBar:v2.0.4'
78 | implementation 'com.github.PhilJay:MPAndroidChart:v2.2.4'
79 | implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17'
80 |
81 | // RingBuffer
82 | implementation 'org.apache.commons:commons-collections4:4.4'
83 | implementation 'androidx.core:core-ktx:1.10.1'
84 |
85 | // Tests
86 | testImplementation 'junit:junit:4.13'
87 | testImplementation "org.assertj:assertj-core:3.16.1"
88 |
89 | // "Backporting" Java 8 streams for Android < 24
90 | implementation 'net.sourceforge.streamsupport:android-retrostreams:1.7.2'
91 |
92 | // Kotlin
93 | implementation 'androidx.core:core-ktx:1.10.1'
94 | implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.21"
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/app/debug/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":49,"versionName":"49.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug"},"path":"app-debug.apk","properties":{}}]
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/debug/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | SimRa
4 |
5 |
--------------------------------------------------------------------------------
/app/src/debug/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | SimRa
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/assets/hash-suffix.h.sample:
--------------------------------------------------------------------------------
1 | mcc_simra
2 |
--------------------------------------------------------------------------------
/app/src/main/assets/licenselogback.txt:
--------------------------------------------------------------------------------
1 | Logback: the reliable, generic, fast and flexible logging framework. Copyright (C) 1999-2017, QOS.ch.
2 | All rights reserved. This program and the accompanying materials are dual-licensed under either the
3 | terms of the Eclipse Public License v1.0 as published by the Eclipse Foundation or (per the
4 | licensee's choosing) under the terms of the GNU Lesser General Public License version 2.1 as
5 | published by the Free Software Foundation.
--------------------------------------------------------------------------------
/app/src/main/assets/licenseokhttp.txt:
--------------------------------------------------------------------------------
1 | Copyright 2016 Square, Inc.
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
--------------------------------------------------------------------------------
/app/src/main/assets/licenseslf4japi.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2004-2017 QOS.ch All rights reserved. Permission is hereby granted,
2 | free of charge, to any person obtaining a copy of this software and associated documentation
3 | files (the "Software"), to deal in the Software without restriction, including without
4 | limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
5 | sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
6 | subject to the following conditions: The above copyright notice and this permission notice shall
7 | be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED
8 | "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
9 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
11 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/app/src/main/assets/licenseslf4jsimple.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2004-2017 QOS.ch All rights reserved. Permission is hereby granted,
2 | free of charge, to any person obtaining a copy of this software and associated documentation
3 | files (the "Software"), to deal in the Software without restriction, including without
4 | limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
5 | sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
6 | subject to the following conditions: The above copyright notice and this permission notice shall
7 | be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED
8 | "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
9 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
11 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/app/src/main/assets/server.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/assets/server.cer
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/SimraApplication.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app;
2 |
3 | import android.app.Application;
4 |
5 | /**
6 | * Simra Main Application Class.
7 | */
8 | public class SimraApplication extends Application {
9 | public void onCreate() {
10 | super.onCreate();
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/activities/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.activities;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.LayoutInflater;
6 | import android.widget.ArrayAdapter;
7 | import android.widget.Toast;
8 |
9 | import androidx.appcompat.widget.Toolbar;
10 |
11 | import de.tuberlin.mcc.simra.app.R;
12 | import de.tuberlin.mcc.simra.app.databinding.ActivityAboutBinding;
13 | import de.tuberlin.mcc.simra.app.util.BaseActivity;
14 |
15 | /**
16 | * About Activity displaying information about licenses and privacy policies.
17 | */
18 | public class AboutActivity extends BaseActivity {
19 |
20 | /**
21 | * Layout Binding.
22 | */
23 | ActivityAboutBinding binding;
24 |
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 |
29 | binding = ActivityAboutBinding.inflate(LayoutInflater.from(this));
30 | setContentView(binding.getRoot());
31 |
32 | Toolbar toolbar = findViewById(R.id.toolbar);
33 | setSupportActionBar(toolbar);
34 | getSupportActionBar().setDisplayShowTitleEnabled(false);
35 | toolbar.setTitle("");
36 | toolbar.setSubtitle("");
37 | binding.toolbar.toolbarTitle.setText(R.string.title_activity_about_simra);
38 |
39 | binding.toolbar.backButton.setOnClickListener(v -> finish());
40 |
41 | String[] items = getResources().getStringArray(R.array.aboutSimraItems);
42 | binding.listView.setAdapter(new ArrayAdapter<>(AboutActivity.this,
43 | android.R.layout.simple_list_item_1, items));
44 | binding.listView.setOnItemClickListener((parent, view, position, id) -> {
45 | Intent intent = null;
46 | switch (position) {
47 | case 0:
48 | intent = new Intent(AboutActivity.this, WebActivity.class);
49 | intent.putExtra("URL", getString(R.string.link_simra_Page));
50 | break;
51 | case 1:
52 | intent = new Intent(AboutActivity.this, WebActivity.class);
53 | intent.putExtra("URL", getString(R.string.privacyLink));
54 |
55 | break;
56 | case 2:
57 | intent = new Intent(AboutActivity.this, LicenseActivity.class);
58 | break;
59 | case 3:
60 | intent = new Intent(AboutActivity.this, CreditsActivity.class);
61 | break;
62 | default:
63 | Toast.makeText(AboutActivity.this, R.string.notReady, Toast.LENGTH_SHORT).show();
64 | }
65 | if (intent != null) {
66 | startActivity(intent);
67 | }
68 |
69 |
70 | });
71 |
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/activities/CreditsActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.activities;
2 |
3 | import android.os.Bundle;
4 | import android.view.LayoutInflater;
5 |
6 | import androidx.appcompat.app.AppCompatActivity;
7 |
8 | import de.tuberlin.mcc.simra.app.R;
9 | import de.tuberlin.mcc.simra.app.databinding.ActivityCreditsBinding;
10 |
11 | public class CreditsActivity extends AppCompatActivity {
12 |
13 | /**
14 | * Layout Binding.
15 | */
16 | ActivityCreditsBinding binding;
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 |
22 | binding = ActivityCreditsBinding.inflate(LayoutInflater.from(this));
23 | setContentView(binding.getRoot());
24 |
25 | setSupportActionBar(binding.toolbar.toolbar);
26 | getSupportActionBar().setDisplayShowTitleEnabled(false);
27 | binding.toolbar.toolbar.setTitle("");
28 | binding.toolbar.toolbar.setSubtitle("");
29 | binding.toolbar.toolbarTitle.setText(R.string.title_activity_credits);
30 |
31 | binding.toolbar.backButton.setOnClickListener(v -> finish());
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/activities/FeedbackActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.activities;
2 |
3 | import android.content.Intent;
4 | import android.net.Uri;
5 | import android.os.Bundle;
6 | import android.view.LayoutInflater;
7 | import android.widget.ArrayAdapter;
8 | import android.widget.Toast;
9 |
10 | import androidx.appcompat.app.AppCompatActivity;
11 | import androidx.appcompat.widget.Toolbar;
12 | import de.tuberlin.mcc.simra.app.BuildConfig;
13 | import de.tuberlin.mcc.simra.app.R;
14 | import de.tuberlin.mcc.simra.app.databinding.ActivityFeedbackBinding;
15 |
16 | public class FeedbackActivity extends AppCompatActivity {
17 |
18 | /**
19 | * Layout Binding.
20 | */
21 | ActivityFeedbackBinding binding;
22 |
23 | @Override
24 | protected void onCreate(Bundle savedInstanceState) {
25 | super.onCreate(savedInstanceState);
26 | //setContentView(R.layout.activity_feedback);
27 |
28 |
29 | binding = ActivityFeedbackBinding.inflate(LayoutInflater.from(this));
30 | setContentView(binding.getRoot());
31 |
32 |
33 | Toolbar toolbar = findViewById(R.id.toolbar);
34 | setSupportActionBar(toolbar);
35 | getSupportActionBar().setDisplayShowTitleEnabled(false);
36 | toolbar.setTitle("");
37 | toolbar.setSubtitle("");
38 | binding.toolbar.toolbarTitle.setText(R.string.title_activity_about_simra);
39 |
40 | binding.toolbar.backButton.setOnClickListener(v -> finish());
41 |
42 | String[] items = getResources().getStringArray(R.array.ContactItems);
43 | binding.listView.setAdapter(new ArrayAdapter<>(de.tuberlin.mcc.simra.app.activities.FeedbackActivity.this,
44 | android.R.layout.simple_list_item_1, items));
45 | binding.listView.setOnItemClickListener((parent, view, position, id) -> {
46 | Intent intent = null;
47 | switch (position) {
48 | case 0:
49 | intent = new Intent(FeedbackActivity.this, WebActivity.class);
50 | intent.putExtra("URL", getString(R.string.link_simra_Page));
51 | break;
52 | case 1:
53 | intent = new Intent(Intent.ACTION_SEND);
54 | intent.setType("message/rfc822");
55 | intent.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.feedbackReceiver)});
56 | intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.feedbackHeader));
57 | intent.putExtra(Intent.EXTRA_TEXT, (getString(R.string.feedbackReceiver)) + System.lineSeparator()
58 | + "App Version: " + BuildConfig.VERSION_CODE + System.lineSeparator() + "Android Version: ");
59 | try {
60 | startActivity(Intent.createChooser(intent, "Send mail..."));
61 | } catch (android.content.ActivityNotFoundException ex) {
62 | Toast.makeText(FeedbackActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
63 | }
64 | break;
65 | case 2:
66 | intent = new Intent(Intent.ACTION_VIEW);
67 | //intent = new Intent(SocialMediaActivity.this, WebActivity.class);
68 | intent.setData(Uri.parse(getString(R.string.link_to_twitter)));
69 | startActivity(intent);
70 | break;
71 | case 3:
72 | intent = new Intent(Intent.ACTION_VIEW);
73 | //intent = new Intent(SocialMediaActivity.this, WebActivity.class);
74 | intent.setData(Uri.parse(getString(R.string.link_to_instagram)));
75 | startActivity(intent);
76 | break;
77 | default:
78 | Toast.makeText(FeedbackActivity.this, R.string.notReady, Toast.LENGTH_SHORT).show();
79 | }
80 | if (intent != null) {
81 | startActivity(intent);
82 | }
83 |
84 |
85 | });
86 |
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/activities/WebActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.activities;
2 |
3 | import android.os.Bundle;
4 | import android.webkit.WebView;
5 |
6 | import de.tuberlin.mcc.simra.app.R;
7 | import de.tuberlin.mcc.simra.app.util.BaseActivity;
8 |
9 | public class WebActivity extends BaseActivity {
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | setContentView(R.layout.activity_web);
15 | WebView myWebView = new WebView(getBaseContext());
16 | setContentView(myWebView);
17 | String URL = getString(R.string.link_mcc_Page);
18 | URL = getIntent().getStringExtra("URL");
19 | myWebView.loadUrl(URL);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/annotation/GeoPointWrapper.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.annotation;
2 |
3 | import org.osmdroid.util.GeoPoint;
4 |
5 | import de.tuberlin.mcc.simra.app.entities.DataLogEntry;
6 |
7 | // This class wraps two GeoPoints and their distance (difference between their summed
8 | // lats & lons).
9 | // => PURPOSE: ensure that when users add incidents manually, they cannot include locations
10 | // which where not a part of the route in question.
11 | // So every manually added location gets replaced by the closest location included
12 | // in the route.
13 |
14 | public class GeoPointWrapper {
15 |
16 | public GeoPoint wrappedGeoPoint;
17 |
18 | public GeoPoint referencePoint;
19 |
20 | public double distToReference;
21 | public DataLogEntry dataLogEntry;
22 |
23 | public GeoPointWrapper(GeoPoint wrappedGeoPoint, GeoPoint referenceGeoPoint, DataLogEntry dataLogEntry) {
24 | this.wrappedGeoPoint = wrappedGeoPoint;
25 | this.referencePoint = referenceGeoPoint;
26 | this.dataLogEntry = dataLogEntry;
27 | this.distToReference = calcDistToReference();
28 | }
29 |
30 | public double calcDistToReference() {
31 |
32 | long earthRadiusKm = 6371;
33 |
34 | double dLat = Math.toRadians(referencePoint.getLatitude()
35 | - wrappedGeoPoint.getLatitude());
36 |
37 | double dLon = Math.toRadians(referencePoint.getLongitude()
38 | - wrappedGeoPoint.getLongitude());
39 |
40 | double lat1 = Math.toRadians(wrappedGeoPoint.getLatitude());
41 | double lat2 = Math.toRadians(referencePoint.getLatitude());
42 |
43 | double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
44 | Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
45 | double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
46 |
47 | return earthRadiusKm * c;
48 |
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/annotation/MyInfoWindow.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.annotation;
2 |
3 | import android.text.format.DateUtils;
4 | import android.view.View;
5 | import android.widget.LinearLayout;
6 | import android.widget.TextView;
7 |
8 | import org.osmdroid.views.MapView;
9 | import org.osmdroid.views.overlay.infowindow.InfoWindow;
10 |
11 | import de.tuberlin.mcc.simra.app.R;
12 | import de.tuberlin.mcc.simra.app.activities.ShowRouteActivity;
13 | import de.tuberlin.mcc.simra.app.entities.IncidentLogEntry;
14 |
15 | public class MyInfoWindow extends InfoWindow {
16 | private ShowRouteActivity motherActivity;
17 | private int state;
18 | private IncidentLogEntry incidentLogEntry;
19 |
20 |
21 | public MyInfoWindow(int layoutResId, MapView mapView, ShowRouteActivity motherActivity,
22 | int state, IncidentLogEntry incidentLogEntry) {
23 |
24 | super(layoutResId, mapView);
25 | this.motherActivity = motherActivity;
26 | this.incidentLogEntry = incidentLogEntry;
27 | this.state = state;
28 | }
29 |
30 | public void onClose() {
31 | }
32 |
33 | public void onOpen(Object item) {
34 | LinearLayout layout = mView.findViewById(R.id.bubble_layout);
35 | TextView txtTitle = mView.findViewById(R.id.bubble_title);
36 | TextView txtDescription = mView.findViewById(R.id.bubble_description);
37 |
38 | txtTitle.setText(motherActivity.getString(R.string.incidentDetected));
39 | long millis = this.incidentLogEntry.timestamp;
40 | String time = "";
41 | if (millis > 1337) {
42 | time = DateUtils.formatDateTime(motherActivity, millis, DateUtils.FORMAT_SHOW_TIME);
43 | }
44 |
45 | txtDescription.setText(time);
46 |
47 | layout.setOnClickListener((View v) -> {
48 | IncidentPopUpActivity.startIncidentPopUpActivity(incidentLogEntry, state, motherActivity);
49 | close();
50 | });
51 | }
52 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/entities/MetaDataEntry.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.entities;
2 |
3 | public class MetaDataEntry {
4 | public Integer rideId;
5 | public Long startTime;
6 | public Long endTime;
7 | public Integer state;
8 | public Integer numberOfIncidents;
9 | public Long waitedTime;
10 | public Long distance;
11 | public Integer numberOfScaryIncidents;
12 | public Integer region;
13 |
14 | public MetaDataEntry(Integer rideId, Long startTime, Long endTime, Integer state, Integer numberOfIncidents, Long waitedTime, Long distance, Integer numberOfScaryIncidents, Integer region) {
15 | this.rideId = rideId;
16 | this.startTime = startTime;
17 | this.endTime = endTime;
18 | this.state = state != null ? state : MetaData.STATE.JUST_RECORDED;
19 | this.numberOfIncidents = numberOfIncidents != null ? numberOfIncidents : 0;
20 | this.waitedTime = waitedTime != null ? waitedTime : 0;
21 | this.distance = distance != null ? distance : 0;
22 | this.numberOfScaryIncidents = numberOfScaryIncidents != null ? numberOfScaryIncidents : 0;
23 | this.region = region != null ? region : 0;
24 | }
25 |
26 | public static MetaDataEntry parseEntryFromLine(String string) {
27 | String[] dataLogLine = string.split(",", -1);
28 | return new MetaDataEntry(
29 | Integer.parseInt(dataLogLine[0]),
30 | Long.parseLong(dataLogLine[1]),
31 | Long.parseLong(dataLogLine[2]),
32 | Integer.parseInt(dataLogLine[3]),
33 | Integer.parseInt(dataLogLine[4]),
34 | Long.parseLong(dataLogLine[5]),
35 | Long.parseLong(dataLogLine[6]),
36 | Integer.parseInt(dataLogLine[7]),
37 | Integer.parseInt(dataLogLine[8])
38 | );
39 | }
40 |
41 |
42 | /**
43 | * Stringifies the MetaDataEntry Object to a CSV Log Line
44 | *
45 | * @return Log Line without new line separator
46 | */
47 | public String stringifyMetaDataEntry() {
48 | return rideId + "," + startTime + "," + endTime + "," + state + "," + numberOfIncidents + "," + waitedTime + "," + distance + "," + numberOfScaryIncidents + "," + region;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/entities/Ride.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.entities;
2 |
3 | /**
4 | * A Ride contains both the Log Entries, as well as the incidents and settings associated with it.
5 | */
6 | public class Ride {
7 | public int rideID;
8 | public int bike;
9 | public int child;
10 | public int trailer;
11 | public int pLoc;
12 |
13 | public Ride(int rideID, int bike, int child, int trailer, int pLoc) {
14 | this.rideID = rideID;
15 | this.bike = bike;
16 | this.child = child;
17 | this.trailer = trailer;
18 | this.pLoc = pLoc;
19 | }
20 |
21 | public static void saveRide() {
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.os.Bundle;
4 |
5 | import androidx.appcompat.app.AppCompatActivity;
6 |
7 | import de.tuberlin.mcc.simra.app.BuildConfig;
8 |
9 | public abstract class BaseActivity extends AppCompatActivity {
10 |
11 | @Override
12 | protected void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 | if (BuildConfig.DEBUG) {
15 | return;
16 | }
17 | new LoggingExceptionActivity(BaseActivity.this);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/Constants.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | public class Constants {
4 |
5 | public static final int ZOOM_LEVEL = 19;
6 |
7 | // Accelerometer data gets recorded 50 times per second (every 20 millisecs).
8 | public static final int ACCELEROMETER_FREQUENCY = 20;
9 |
10 | /**
11 | * Step size for accelerometer moving average
12 | */
13 | public static final int MVG_AVG_STEP = 5;
14 |
15 | /**
16 | * GPS-Trace: one recording every 3 secs = every 3000 millisecs.
17 | */
18 | public static final int GPS_FREQUENCY = 3000;
19 |
20 | /**
21 | * Every GPS fix has to be at least this accurate to be taken into account.
22 | */
23 | public static final double GPS_ACCURACY_THRESHOLD = 30.0;
24 |
25 | public static final String PROFILE_HEADER = "birth,gender,region,experience,numberOfRides,duration,numberOfIncidents,waitedTime,distance,co2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,behaviour,numberOfScary" + System.lineSeparator();
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/ForegroundServiceNotificationManager.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.app.Notification;
4 | import android.app.NotificationChannel;
5 | import android.app.NotificationManager;
6 | import android.app.PendingIntent;
7 | import android.content.Context;
8 | import android.content.Intent;
9 | import android.os.Build;
10 |
11 | import androidx.core.app.NotificationCompat;
12 | import androidx.core.app.NotificationManagerCompat;
13 |
14 | import de.tuberlin.mcc.simra.app.R;
15 | import de.tuberlin.mcc.simra.app.activities.MainActivity;
16 |
17 | public class ForegroundServiceNotificationManager {
18 |
19 | private static final int NOTIFICATION_ID = 1094;
20 | private static final String CHANNEL_ID = "ForegroundServiceNotificationChannel";
21 |
22 | public static Notification createOrUpdateNotification(Context ctx, String title, String text) {
23 | NotificationManagerCompat notificationManager = NotificationManagerCompat.from(ctx);
24 | Intent mainActivityIntent = new Intent(ctx, MainActivity.class);
25 | mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
26 |
27 | PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 0, mainActivityIntent, PendingIntent.FLAG_IMMUTABLE);
28 |
29 | // From API 26+ onwards a NotificationChannel has to be created
30 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
31 | NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Ride Information", NotificationManager.IMPORTANCE_LOW);
32 | channel.setDescription("SimRa Channel");
33 | notificationManager.createNotificationChannel(channel);
34 | }
35 |
36 | // Set the intent that will fire when the user taps the notification
37 | Notification notification = new NotificationCompat.Builder(ctx, CHANNEL_ID)
38 | .setSmallIcon(R.drawable.simra_logo)
39 | .setContentTitle(title)
40 | .setContentText(text)
41 | .setPriority(NotificationCompat.PRIORITY_LOW)
42 | // Set the intent that will fire when the user taps the notification
43 | .setContentIntent(pendingIntent)
44 | .addAction(R.drawable.ic_bluetooth, ctx.getResources().getString(R.string.foregroundNotificationButtonBack),
45 | pendingIntent)
46 | .build();
47 | notificationManager.notify(NOTIFICATION_ID, notification);
48 |
49 | return notification;
50 | }
51 |
52 | public static int getNotificationId() {
53 | return NOTIFICATION_ID;
54 | }
55 |
56 | public static void cancelNotification(Context ctx) {
57 | NotificationManagerCompat notificationManager = NotificationManagerCompat.from(ctx);
58 | notificationManager.cancel(NOTIFICATION_ID);
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/IncidentBroadcaster.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 |
4 | import android.content.BroadcastReceiver;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.IntentFilter;
8 |
9 | import androidx.localbroadcastmanager.content.LocalBroadcastManager;
10 |
11 | import de.tuberlin.mcc.simra.app.entities.IncidentLogEntry;
12 |
13 |
14 | public class IncidentBroadcaster {
15 |
16 | private static final String MANUAL_INCIDENT = "de.tuberlin.mcc.simra.app.incidentbroadcaster.manualincident";
17 | private static final String EXTRA_INCIDENT_TYPE = "EXTRA_INCIDENT_TYPE";
18 |
19 | public static void broadcastIncident(Context ctx, int type) {
20 | Intent intent = new Intent(ctx, IncidentBroadcaster.class);
21 | intent.setAction(MANUAL_INCIDENT);
22 | intent.putExtra(EXTRA_INCIDENT_TYPE, type);
23 | LocalBroadcastManager.getInstance(ctx).sendBroadcast(intent);
24 | }
25 |
26 | public static BroadcastReceiver receiveIncidents(Context ctx, IncidentCallbacks callbacks) {
27 | BroadcastReceiver receiver = new BroadcastReceiver() {
28 | @Override
29 | public void onReceive(Context context, Intent intent) {
30 | callbacks.onManualIncident(intent.getIntExtra(EXTRA_INCIDENT_TYPE, IncidentLogEntry.INCIDENT_TYPE.NOTHING));
31 | }
32 | };
33 | LocalBroadcastManager.getInstance(ctx).registerReceiver(receiver, new IntentFilter(MANUAL_INCIDENT));
34 | return receiver;
35 | }
36 |
37 | public abstract static class IncidentCallbacks {
38 | public void onManualIncident(int incidentType) {
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/LogHelper.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.util.Log;
6 |
7 | import java.io.BufferedReader;
8 | import java.io.FileInputStream;
9 | import java.io.IOException;
10 | import java.io.InputStreamReader;
11 | import java.util.Arrays;
12 |
13 | /**
14 | * Log Helper Methods for easier debugging
15 | */
16 | public class LogHelper {
17 |
18 | private static final String TAG = "LogHelper";
19 |
20 | public static void showKeyPrefs(Context context) {
21 | SharedPreferences keyPrefs = context.getApplicationContext()
22 | .getSharedPreferences("keyPrefs", Context.MODE_PRIVATE);
23 | Log.d(TAG, "===========================V=keyPrefs=V===========================");
24 | Object[] keyPrefsArray = keyPrefs.getAll().entrySet().toArray();
25 | for (Object keyPrefsEntry : keyPrefsArray) {
26 | Log.d(TAG, keyPrefsEntry + "");
27 | }
28 | Log.d(TAG, "===========================Λ=keyPrefs=Λ===========================");
29 | }
30 |
31 | public static void showDataDirectory(Context context) {
32 | Log.d(TAG, "===========================V=Directory=V===========================");
33 | String[] fileList = context.fileList();
34 | for (String fileName : fileList) {
35 | Log.d(TAG, fileName);
36 | }
37 | Log.d(TAG, "===========================Λ=Directory=Λ===========================");
38 | }
39 |
40 | public static void showMetadata(Context context) {
41 | Log.d(TAG, "===========================V=metaData=V===========================");
42 | try (BufferedReader metaDataReader = new BufferedReader(new InputStreamReader(new FileInputStream(IOUtils.Files.getMetaDataFile(context))))) {
43 | String metaDataLine;
44 | // loop through the metaData.csv lines
45 | while ((metaDataLine = metaDataReader.readLine()) != null) {
46 | Log.d(TAG, metaDataLine);
47 | }
48 | } catch (IOException e) {
49 | Log.e(TAG, "Exception in showMetadata(): " + e.getMessage());
50 | Log.e(TAG, Arrays.toString(e.getStackTrace()));
51 | e.printStackTrace();
52 | }
53 | Log.d(TAG, "===========================Λ=metaData=Λ===========================");
54 | }
55 |
56 | public static void showStatistics(Context context) {
57 | SharedPreferences profilePrefs = context.getApplicationContext()
58 | .getSharedPreferences("Profile", Context.MODE_PRIVATE);
59 | Log.d(TAG, "===========================V=Statistics=V===========================");
60 | Log.d(TAG, "numberOfRides: " + profilePrefs.getInt("NumberOfRides", -1));
61 | Log.d(TAG, "Distance: " + profilePrefs.getLong("Distance", -1) + "m");
62 | Log.d(TAG, "Co2: " + profilePrefs.getLong("Co2", -1) + "g");
63 | Log.d(TAG, "Duration: " + profilePrefs.getLong("Duration", -1) + "ms");
64 | Log.d(TAG, "WaitedTime: " + profilePrefs.getLong("WaitedTime", -1) + "s");
65 | Log.d(TAG, "NumberOfIncidents: " + profilePrefs.getInt("NumberOfIncidents", -1));
66 | Log.d(TAG, "NumberOfScary: " + profilePrefs.getInt("NumberOfScary", -1));
67 | String[] buckets = new String[24];
68 | for (int i = 0; i < buckets.length; i++) {
69 | buckets[i] = i + ": " + profilePrefs.getFloat(String.valueOf(i), -1.0f);
70 | }
71 | Log.d(TAG, "timeBuckets: " + Arrays.toString(buckets));
72 | Log.d(TAG, "===========================Λ=Statistics=Λ===========================");
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/LoggingExceptionActivity.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.app.AlarmManager;
4 | import android.app.PendingIntent;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.SharedPreferences;
8 | import android.os.Build;
9 | import android.util.Log;
10 |
11 | import androidx.appcompat.app.AppCompatActivity;
12 |
13 | import java.io.File;
14 | import java.util.Date;
15 |
16 | import de.tuberlin.mcc.simra.app.BuildConfig;
17 | import de.tuberlin.mcc.simra.app.activities.StartActivity;
18 |
19 | import static de.tuberlin.mcc.simra.app.util.Utils.overwriteFile;
20 |
21 | public class LoggingExceptionActivity extends AppCompatActivity implements Thread.UncaughtExceptionHandler {
22 |
23 | private final static String TAG = LoggingExceptionActivity.class.getSimpleName() + "_LOG";
24 | private final Context context;
25 |
26 |
27 | public LoggingExceptionActivity(Context context) {
28 | this.attachBaseContext(context);
29 | this.context = context;
30 | // we should store the current exception handler -- to invoke it for all not handled exceptions ...
31 | Thread.UncaughtExceptionHandler rootHandler = Thread.getDefaultUncaughtExceptionHandler();
32 | // we replace the exception handler now with us -- we will properly dispatch the exceptions ...
33 | Thread.setDefaultUncaughtExceptionHandler(this);
34 | }
35 |
36 | @Override
37 | public void uncaughtException(final Thread thread, final Throwable ex) {
38 | try {
39 | Log.d(TAG, "called for " + ex.getClass());
40 | // assume we would write each error in one file ...
41 |
42 | // log this exception ...
43 |
44 | StringBuilder stackTrace = new StringBuilder();
45 | for (int i = 0; i < ex.getStackTrace().length; i++) {
46 | stackTrace.append(ex.getStackTrace()[i]).append("\n");
47 | }
48 | String causeTrace = "";
49 | if (ex.getCause() != null) {
50 | for (int i = 0; i < ex.getCause().getStackTrace().length; i++) {
51 | stackTrace.append(ex.getCause().getStackTrace()[i]).append("\n");
52 | }
53 | }
54 | String fileInfoLine = BuildConfig.VERSION_CODE + "#1" + System.lineSeparator();
55 |
56 | String errorReport =
57 | "System Timestamp: " + System.currentTimeMillis() + "\n" +
58 | "Build.VERSION.RELEASE: " + Build.VERSION.RELEASE + "\n" +
59 | "Build.DEVICE: " + Build.DEVICE + "\n" +
60 | "Build.MODEL: " + Build.MODEL + "\n" +
61 | "Build.PRODUCT: " + Build.PRODUCT + "\n" +
62 | "App Version: " + BuildConfig.VERSION_CODE + "\n" +
63 | "Exception in: " + context.getClass().getName()
64 | + " " + ex.getClass().getName() + "\n" +
65 | ex.getMessage() + "\n" +
66 | "stackTrace: " + stackTrace + "\n" +
67 | "causeTrace: " + causeTrace + "\n";
68 |
69 | overwriteFile((fileInfoLine + errorReport), new File(IOUtils.Directories.getBaseFolderPath(this) + "CRASH_REPORT" + new Date().toString() + ".txt"));
70 |
71 | SharedPreferences sharedPrefs = getApplicationContext()
72 | .getSharedPreferences("simraPrefs", Context.MODE_PRIVATE);
73 |
74 | SharedPreferences.Editor editor = sharedPrefs.edit();
75 |
76 | editor.putBoolean("NEW-UNSENT-ERROR", true);
77 | editor.commit();
78 |
79 | // Toast.makeText(this, R.string.crash_error,Toast.LENGTH_LONG).show();
80 |
81 | System.exit(0);
82 | // restartApp();
83 |
84 | } catch (Exception e) {
85 | Log.e(TAG, "Exception Logger failed!", e);
86 | }
87 |
88 | }
89 |
90 | private void restartApp() {
91 | Intent intent = new Intent(getApplicationContext(), StartActivity.class);
92 | int mPendingIntentId = 1337;
93 | PendingIntent mPendingIntent = PendingIntent.getActivity(getApplicationContext(), mPendingIntentId, intent, PendingIntent.FLAG_IMMUTABLE);
94 | AlarmManager mgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
95 | mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
96 | System.exit(0);
97 | }
98 | }
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/SimRAuthenticator.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.content.Context;
4 |
5 | import java.io.BufferedInputStream;
6 | import java.io.ByteArrayOutputStream;
7 | import java.io.IOException;
8 | import java.io.InputStream;
9 | import java.text.SimpleDateFormat;
10 | import java.util.Date;
11 |
12 | public class SimRAuthenticator {
13 | public static final SimpleDateFormat DATE_PATTERN_SHORT = new SimpleDateFormat("dd.MM.yyyy");
14 |
15 | public static String getClientHash(Context context) {
16 | Date dateToday = new Date();
17 | String hashSuffix = "";
18 | try {
19 | InputStream hashInput = new BufferedInputStream(context.getResources().getAssets().open("hash-suffix.h"));
20 | ByteArrayOutputStream result = new ByteArrayOutputStream();
21 | byte[] buffer = new byte[1024];
22 | int length;
23 | while ((length = hashInput.read(buffer)) != -1) {
24 | result.write(buffer, 0, length);
25 | }
26 | // StandardCharsets.UTF_8.name() > JDK 7
27 | hashSuffix = result.toString("UTF-8");
28 | } catch (IOException e) {
29 | e.printStackTrace();
30 | }
31 |
32 | return Integer.toHexString((DATE_PATTERN_SHORT.format(dateToday) + hashSuffix).hashCode());
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/UnitHelper.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 |
3 | import android.content.Context;
4 |
5 | import java.util.Collections;
6 | import java.util.Map;
7 | import java.util.concurrent.ConcurrentHashMap;
8 |
9 | import de.tuberlin.mcc.simra.app.R;
10 |
11 | public class UnitHelper {
12 | public static String getShortTranslationForUnit(DISTANCE unit, Context context) {
13 | switch (unit) {
14 | case IMPERIAL:
15 | return context.getString(R.string.feet_short);
16 | default:
17 | return context.getString(R.string.meter_short);
18 | }
19 | }
20 |
21 | public static long convertMeterToFeet(int meter) {
22 | return Math.round(meter * 3.28);
23 | }
24 |
25 | public static long convertFeetToMeter(int feet) {
26 | return Math.round(feet / 3.28);
27 | }
28 |
29 | public enum DISTANCE {
30 | /**
31 | * Metric System using meter and cm
32 | */
33 | METRIC("m"),
34 | /**
35 | * Imperial System using miles and inches
36 | */
37 | IMPERIAL("ft");
38 |
39 | private static final Map ENUM_MAP;
40 |
41 | static {
42 | // Build an immutable map of String name to enum pairs. (for faster access)
43 | Map map = new ConcurrentHashMap<>();
44 | for (DISTANCE instance : DISTANCE.values()) {
45 | map.put(instance.getName(), instance);
46 | }
47 | ENUM_MAP = Collections.unmodifiableMap(map);
48 | }
49 |
50 | private String name;
51 |
52 | DISTANCE(String unit_name) {
53 | name = unit_name;
54 | }
55 |
56 |
57 | public static DISTANCE parseFromString(String name) {
58 | return ENUM_MAP.get(name);
59 | }
60 |
61 | public String getName() {
62 | return this.name;
63 | }
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/UpdateHelper.java:
--------------------------------------------------------------------------------
1 | package de.tuberlin.mcc.simra.app.util;
2 | import android.content.Context;
3 | import de.tuberlin.mcc.simra.app.BuildConfig;
4 | import de.tuberlin.mcc.simra.app.update.VersionUpdater;
5 |
6 | public class UpdateHelper {
7 |
8 | /**
9 | * Migrate Shared Prefs Data from previous Versions to the current
10 | *
11 | * @param context
12 | */
13 | public static void migrate(Context context) {
14 | int lastAppVersion = SharedPref.lookUpIntSharedPrefs("App-Version", -1, "simraPrefs", context);
15 | VersionUpdater.updateToV27(context, lastAppVersion);
16 | VersionUpdater.updateToV30(context, lastAppVersion);
17 | VersionUpdater.updateToV31(context, lastAppVersion);
18 | VersionUpdater.updateToV32(context, lastAppVersion);
19 | VersionUpdater.updateToV39(context, lastAppVersion);
20 | VersionUpdater.updateToV50(context, lastAppVersion);
21 | VersionUpdater.updateToV52(context, lastAppVersion);
22 | VersionUpdater.updateToV58(context, lastAppVersion);
23 | SharedPref.writeIntToSharedPrefs("App-Version", BuildConfig.VERSION_CODE, "simraPrefs", context);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/ble/BleExtensions.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019 Punch Through Design LLC
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package de.tuberlin.mcc.simra.app.util.ble
18 |
19 | import android.bluetooth.BluetoothGatt
20 | import android.bluetooth.BluetoothGattCharacteristic
21 | import android.bluetooth.BluetoothGattDescriptor
22 | import android.util.Log
23 | import de.tuberlin.mcc.simra.app.util.ConnectionManager.CCCD_UUID
24 | import java.util.Locale
25 | import java.util.UUID
26 |
27 | /** UUID of the Client Characteristic Configuration Descriptor (0x2902). */
28 | private const val TAG = "BleExtensions_LOG"
29 |
30 | // BluetoothGatt
31 |
32 | fun BluetoothGatt.findCharacteristic(uuid: UUID): BluetoothGattCharacteristic? {
33 | services?.forEach { service ->
34 | service.characteristics?.firstOrNull { characteristic ->
35 | characteristic.uuid == uuid
36 | }?.let { matchingCharacteristic ->
37 | return matchingCharacteristic
38 | }
39 | }
40 | return null
41 | }
42 |
43 | fun BluetoothGatt.findDescriptor(uuid: UUID): BluetoothGattDescriptor? {
44 | services?.forEach { service ->
45 | service.characteristics.forEach { characteristic ->
46 | characteristic.descriptors?.firstOrNull { descriptor ->
47 | descriptor.uuid == uuid
48 | }?.let { matchingDescriptor ->
49 | return matchingDescriptor
50 | }
51 | }
52 | }
53 | return null
54 | }
55 |
56 | // BluetoothGattCharacteristic
57 |
58 | fun BluetoothGattCharacteristic.isReadable(): Boolean =
59 | containsProperty(BluetoothGattCharacteristic.PROPERTY_READ)
60 |
61 | fun BluetoothGattCharacteristic.isWritable(): Boolean =
62 | containsProperty(BluetoothGattCharacteristic.PROPERTY_WRITE)
63 |
64 | fun BluetoothGattCharacteristic.isWritableWithoutResponse(): Boolean =
65 | containsProperty(BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)
66 |
67 | fun BluetoothGattCharacteristic.isNotifiable(): Boolean =
68 | containsProperty(BluetoothGattCharacteristic.PROPERTY_NOTIFY)
69 |
70 | fun BluetoothGattCharacteristic.containsProperty(property: Int): Boolean =
71 | properties and property != 0
72 |
73 | // BluetoothGattDescriptor
74 |
75 | fun BluetoothGattDescriptor.isReadable(): Boolean =
76 | containsPermission(BluetoothGattDescriptor.PERMISSION_READ)
77 |
78 | fun BluetoothGattDescriptor.isWritable(): Boolean =
79 | containsPermission(BluetoothGattDescriptor.PERMISSION_WRITE)
80 |
81 | fun BluetoothGattDescriptor.containsPermission(permission: Int): Boolean =
82 | permissions and permission != 0
83 |
84 | /**
85 | * Convenience extension function that returns true if this [BluetoothGattDescriptor]
86 | * is a Client Characteristic Configuration Descriptor.
87 | */
88 | fun BluetoothGattDescriptor.isCccd() =
89 | uuid.toString().uppercase(Locale.ROOT) == CCCD_UUID.toString() .uppercase(Locale.ROOT)
--------------------------------------------------------------------------------
/app/src/main/java/de/tuberlin/mcc/simra/app/util/ble/ConnectionEventListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019 Punch Through Design LLC
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package de.tuberlin.mcc.simra.app.util.ble
17 |
18 | import android.bluetooth.BluetoothDevice
19 | import android.bluetooth.BluetoothGatt
20 | import android.bluetooth.BluetoothGattCharacteristic
21 | import android.bluetooth.BluetoothGattDescriptor
22 | import de.tuberlin.mcc.simra.app.util.ConnectionManager
23 |
24 | /** A listener containing callback methods to be registered with [ConnectionManager].*/
25 | open class ConnectionEventListener {
26 | open var onConnectionSetupComplete: ((BluetoothGatt) -> Unit)? = null
27 | open var onScanStart:((Boolean) -> Unit)? = null
28 | open var onScanStop:((Boolean) -> Unit)? = null
29 | open var onDisconnect: ((BluetoothDevice) -> Unit)? = null
30 | open var onDescriptorRead: ((BluetoothDevice, BluetoothGattDescriptor) -> Unit)? = null
31 | open var onDescriptorWrite: ((BluetoothDevice, BluetoothGattDescriptor) -> Unit)? = null
32 | open var onCharacteristicChanged: ((BluetoothDevice, BluetoothGattCharacteristic) -> Unit)? = null
33 | open var onCharacteristicRead: ((BluetoothDevice, BluetoothGattCharacteristic) -> Unit)? = null
34 | open var onNotificationsEnabled: ((BluetoothDevice, BluetoothGattCharacteristic) -> Unit)? = null
35 | open var onNotificationsDisabled: ((BluetoothDevice, BluetoothGattCharacteristic) -> Unit)? = null
36 | open var onDeviceFound:((BluetoothDevice) -> Unit)? = null
37 | open var onSensorDistanceNotification:((ConnectionManager.Measurement) -> Unit)? = null
38 | open var onClosePassNotification:((ConnectionManager.Measurement) -> Unit)? = null
39 | open var onTimeRead:((Int) -> Unit)? = null
40 | open var onConnectionFailed: ((BluetoothDevice) -> Unit)? = null
41 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dashboard_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/dashboard_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/edit_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/edit_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/edit_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/edit_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/edited_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/edited_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/edited_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/edited_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/globe_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/globe_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/ic_route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/racingflagblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/racingflagblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/startblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/startblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/twitter_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-hdpi/twitter_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/dashboard_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/dashboard_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/edit_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/edit_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/edit_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/edit_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/edited_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/edited_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/edited_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/edited_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/globe_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/globe_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/ic_route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/racingflagblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/racingflagblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/startblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/startblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/twitter_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-mdpi/twitter_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/person.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-v24/person.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/dashboard_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/dashboard_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/edit_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/edit_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/edit_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/edit_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/edited_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/edited_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/edited_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/edited_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/globe_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/globe_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/ic_route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/racingflagblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/racingflagblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/startblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/startblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/twitter_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xhdpi/twitter_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/dashboard_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/dashboard_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/edit_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/edit_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/edit_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/edit_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/edited_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/edited_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/edited_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/edited_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/globe_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/globe_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/ic_route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/racingflagblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/racingflagblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/startblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/startblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/twitter_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxhdpi/twitter_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/dashboard_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/dashboard_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/edit_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/edit_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/edit_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/edit_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/edited_event_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/edited_event_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/edited_event_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/edited_event_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/globe_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/globe_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/ic_route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/racingflagblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/racingflagblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/startblack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/startblack.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/twitter_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable-xxxhdpi/twitter_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/border.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | -
6 |
7 |
8 |
9 |
12 |
13 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_unpressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/cancel_icon_640.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/cancel_icon_640.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/co2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/co2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_access_time_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_alt_route_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_back_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_back_blue_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_connect_without_contact_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_email_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_feedback_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_touch_app_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_web_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bluetooth.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bluetooth_connected.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bluetooth_disabled.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bluetooth_searching.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cancel.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cloud_done_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_co2.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_content_paste_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_copyright_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_directions_car_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_face_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_file_upload_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help_outline_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help_outline_blue_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_help_outline_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_info_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_instagram_logo.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_list_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_nav_mcc.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_phone_android_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_save.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_save_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_security_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tachometer.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_timer_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_today_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_traffic_light_red.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twitter_logo_blue.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_undo.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/mcc_ecdf.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/mcc_ecdf.PNG
--------------------------------------------------------------------------------
/app/src/main/res/drawable/my_center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/my_center.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ok_icon_640.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/ok_icon_640.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/profile_region_border.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/racingflag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/racingflag.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/racingflagwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/racingflagwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_effect.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | -
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/route.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_gradient.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/simra_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/simra_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/start.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/startwhite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/startwhite.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/stop.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tap.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tap_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tap_64.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tap_blck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tap_blck.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tap_blck_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tap_blck_64.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/traffic_light_in_red_signal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/traffic_light_in_red_signal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tu_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tu_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tutorial.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/drawable/tutorial.gif
--------------------------------------------------------------------------------
/app/src/main/res/font/assistant_extralight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/font/assistant_extralight.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/bungee_shade.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_about.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_contact.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_credits.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_feedback.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_help.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
13 |
14 |
22 |
23 |
32 |
33 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
17 |
18 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_openbikesensor.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
13 |
14 |
20 |
21 |
28 |
29 |
35 |
36 |
37 |
43 |
44 |
52 |
53 |
62 |
63 |
64 |
71 |
72 |
77 |
78 |
82 |
83 |
86 |
87 |
92 |
93 |
98 |
99 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_profile.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ride_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
19 |
20 |
27 |
28 |
31 |
32 |
39 |
40 |
43 |
44 |
51 |
52 |
53 |
59 |
60 |
63 |
64 |
70 |
71 |
77 |
78 |
81 |
82 |
88 |
89 |
92 |
93 |
99 |
100 |
103 |
107 |
110 |
117 |
118 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_start.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
25 |
26 |
33 |
34 |
35 |
46 |
47 |
59 |
60 |
61 |
73 |
74 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_statistics.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_web.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/bonuspack_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
21 |
22 |
26 |
27 |
36 |
37 |
45 |
46 |
47 |
55 |
56 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/checkbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_contact.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
18 |
19 |
29 |
30 |
40 |
41 |
51 |
52 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
23 |
24 |
32 |
33 |
41 |
42 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_ride_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/incident_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
20 |
21 |
25 |
26 |
35 |
36 |
37 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/nav_header_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
23 |
24 |
30 |
31 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/new_update_prompt.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
14 |
21 |
26 |
31 |
36 |
37 |
38 |
39 |
40 |
46 |
54 |
62 |
71 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/news_popup.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
56 |
57 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/show_license_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
14 |
21 |
24 |
34 |
42 |
43 |
44 |
45 |
46 |
52 |
59 |
60 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/spinner.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/spinner_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
20 |
21 |
31 |
32 |
40 |
41 |
42 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
11 |
15 |
19 |
23 |
27 |
31 |
36 |
40 |
44 |
48 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/simra_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/simra_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/simra_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-hdpi/simra_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/simra_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-hdpi/simra_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/simra_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-hdpi/simra_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/simra_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-mdpi/simra_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/simra_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-mdpi/simra_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/simra_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-mdpi/simra_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/simra_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xhdpi/simra_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/simra_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xhdpi/simra_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/simra_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xhdpi/simra_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/simra_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxhdpi/simra_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/simra_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxhdpi/simra_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/simra_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxhdpi/simra_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/simra_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxxhdpi/simra_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/simra_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxxhdpi/simra_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/simra_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/res/mipmap-xxxhdpi/simra_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values-en/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/incidentType1
5 | - @string/incidentType2
6 | - @string/incidentType3
7 | - @string/incidentType4
8 | - @string/incidentType5
9 | - @string/incidentType6
10 | - @string/incidentType7
11 | - @string/incidentType8
12 | - @string/incidentType9
13 |
14 |
15 | - @string/locationType1
16 | - @string/locationType2
17 | - @string/locationType3
18 | - @string/locationType4
19 | - @string/locationType5
20 | - @string/locationType6
21 | - @string/locationType7
22 |
23 |
24 | - @string/pleaseChoose
25 | - post 2004
26 | - 2000–2004
27 | - 1995–1999
28 | - 1990–1994
29 | - 1985–1989
30 | - 1980–1984
31 | - 1975–1979
32 | - 1970–1974
33 | - 1965–1969
34 | - 1960–1964
35 | - 1955–1959
36 | - 1950–1954
37 | - pre 1950
38 |
39 |
40 | - @string/pleaseChoose
41 | - @string/male
42 | - @string/female
43 | - @string/otherGender
44 |
45 |
46 | - @string/pleaseChoose
47 | - @string/experienceMoreThen10
48 | - @string/experience5to10
49 | - @string/experience2to4
50 | - @string/experienceLessThen2
51 |
52 |
105 |
106 | - @string/pleaseChoose
107 | - @string/cityBike
108 | - @string/roadRacingBike
109 | - @string/eBike
110 | - @string/recumbentBicycle
111 | - @string/freightBicycle
112 | - @string/tandemBike
113 | - @string/mountainBike
114 | - @string/other
115 |
116 |
117 | - SimRa Project Website
118 | - Privacy Policy Statement
119 | - Third Party Licenses
120 | - Graphics References
121 |
122 |
123 | - SimRa Project Website
124 | - Feedback
125 | - Twitter
126 | - Instagram
127 |
128 |
129 |
--------------------------------------------------------------------------------
/app/src/main/res/values-en/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #041035
4 | #303f9f
5 | #FF4081
6 | #4db6ac
7 | #546e7a
8 | #4db6ac
9 | #4db6ac
10 | #FFFFFF
11 | #e6e6e6
12 | #a6a6a6
13 | #000000
14 | #bd000000
15 | #041035
16 | #092477
17 |
18 | #ffbf00
19 | #ff3300
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/values-en/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 8dp
6 | 176dp
7 | 16dp
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values-en/font_certs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @array/com_google_android_gms_fonts_certs_dev
5 | - @array/com_google_android_gms_fonts_certs_prod
6 |
7 |
8 | -
9 | MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
10 |
11 |
12 |
13 | -
14 | MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values-en/preloaded_fonts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @font/bungee_shade
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @string/incidentType1
5 | - @string/incidentType2
6 | - @string/incidentType3
7 | - @string/incidentType4
8 | - @string/incidentType5
9 | - @string/incidentType6
10 | - @string/incidentType7
11 | - @string/incidentType8
12 | - @string/incidentType9
13 |
14 |
15 | - @string/locationType1
16 | - @string/locationType2
17 | - @string/locationType3
18 | - @string/locationType4
19 | - @string/locationType5
20 | - @string/locationType6
21 | - @string/other
22 |
23 |
24 | - @string/pleaseChoose
25 | - nach 2004
26 | - 2000–2004
27 | - 1995–1999
28 | - 1990–1994
29 | - 1985–1989
30 | - 1980–1984
31 | - 1975–1979
32 | - 1970–1974
33 | - 1965–1969
34 | - 1960–1964
35 | - 1955–1959
36 | - 1950–1954
37 | - vor 1950
38 |
39 |
40 | - @string/pleaseChoose
41 | - @string/male
42 | - @string/female
43 | - @string/otherGender
44 |
45 |
46 | - @string/pleaseChoose
47 | - @string/experienceMoreThen10
48 | - @string/experience5to10
49 | - @string/experience2to4
50 | - @string/experienceLessThen2
51 |
52 |
53 | - @string/pleaseChoose
54 | - @string/cityBike
55 | - @string/roadRacingBike
56 | - @string/eBike
57 | - @string/recumbentBicycle
58 | - @string/freightBicycle
59 | - @string/tandemBike
60 | - @string/mountainBike
61 | - @string/other
62 |
63 |
64 | - SimRa-Projektseite
65 | - Datenschutzerklärung
66 | - Drittanbieter-Lizenzen
67 | - Grafikreferenzen
68 |
69 |
70 | - SimRa-Projektseite
71 | - Feedback
72 | - Twitter
73 | - Instagram
74 |
75 |
76 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #041035
4 | #303f9f
5 | #FF4081
6 | #4db6ac
7 | #546e7a
8 | #4db6ac
9 | #4db6ac
10 | #FFFFFF
11 | #e6e6e6
12 | #a6a6a6
13 | #000000
14 | #bd000000
15 | #041035
16 | #092477
17 |
18 | #ffbf00
19 | #ff3300
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 8dp
6 | 176dp
7 | 16dp
8 | 56dp
9 | 66dp
10 | 180dp
11 | 16dp
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/font_certs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @array/com_google_android_gms_fonts_certs_dev
5 | - @array/com_google_android_gms_fonts_certs_prod
6 |
7 |
8 | -
9 | MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
10 |
11 |
12 |
13 | -
14 | MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/preloaded_fonts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - @font/bungee_shade
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/simra_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #86A0CD
4 |
--------------------------------------------------------------------------------
/app/src/main/simra_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/app/src/main/simra_launcher-web.png
--------------------------------------------------------------------------------
/app/src/qa/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SimRa QA
5 |
6 |
--------------------------------------------------------------------------------
/app/src/qa/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SimRa QA
5 |
6 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext.kotlin_version = '1.10.1'
5 |
6 |
7 | repositories {
8 | google()
9 | mavenCentral()
10 | maven { url 'https://jitpack.io' }
11 | }
12 | dependencies {
13 | classpath 'com.android.tools.build:gradle:8.0.2'
14 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21"
15 |
16 | // NOTE: Do not place your application dependencies here; they belong
17 | // in the individual module build.gradle files
18 | }
19 | }
20 |
21 | allprojects {
22 | repositories {
23 | google()
24 | mavenCentral()
25 | maven { url "https://jitpack.io" }
26 | }
27 | }
28 |
29 |
30 | task clean(type: Delete) {
31 | delete rootProject.buildDir
32 | }
--------------------------------------------------------------------------------
/config/checkstyle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/config/version-updater-import-control.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | android.useAndroidX=true
11 | android.enableJetifier=true
12 | android.defaults.buildfeatures.buildconfig=true
13 | android.nonTransitiveRClass=false
14 | android.nonFinalResIds=false
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 27 16:51:41 CET 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/metadata/android/de-DE/changelogs/58.txt:
--------------------------------------------------------------------------------
1 | Folgende Regionen wurden freigeschaltet: Leipzig, Wuppertal/Solingen/Remscheid und Düsseldorf
--------------------------------------------------------------------------------
/metadata/android/de-DE/changelogs/default.txt:
--------------------------------------------------------------------------------
1 | Diese Update behebt Bugs und verbessert die App.
--------------------------------------------------------------------------------
/metadata/android/de-DE/full_description.txt:
--------------------------------------------------------------------------------
1 | Wir bitten Huawei-Nutzer, SimRa als Ausnahme bei der Akkuverwaltung hinzuzufügen. Mehr Infos in der Anleitung in SimRa! Wie andere Metropolen weltweit versucht Berlin seit einiger Zeit im Sinne eines modernen, urbanen Verkehrskonzeptes, den Radverkehr zu fördern und auszubauen. Umfragen zeigen jedoch, dass insbesondere das (berechtigte) Gefühl mangelnder Sicherheit viele Menschen davon abhält, vom Auto auf das Fahrrad umzusteigen. Gleichzeitig ist es sehr schwierig, einen Überblick über Gefahrenpunkte in der Stadt oder die Häufung bestimmter Gefährdungen zu bekommen, da Unfallstatistiken keine „Beinahe-Unfälle“ erfassen und Fahrräder im Gegensatz zu Autos typischerweise nicht mit Sensoren ausgestattet sind, die solche Daten für eine Zweitverwertung liefern könnten. Im Projekt SimRa sammeln wir – auf datenschutzkompatible Art und Weise – Daten darüber, wo es in der Stadt für Radfahrende zu Gefahrenhäufungen kommt, welcher Art diese sind, ob diese zeitlich oder lokal gehäuft auftreten und wo sich die Hauptverkehrsflüsse auf dem Rad bewegen. Hierfür wird im Projekt eine Smartphone-App entwickelt, die mittels GPS-Daten Fahrtrouten aufzeichnet und dabei Beschleunigungssensoren zum Detektieren von Gefahrensituationen nutzt – bspw. plötzliches Bremsen, Ausweichen oder gar einen Sturz. Im Anschluss an die Fahrt werden Radfahrende gebeten, diese detektierten Gefahrensituationen zu kategorisieren und zu annotieren, etwaige nicht detektierte Gefahrensituationen zu ergänzen und einen Upload auf die Projektserver frei zu geben. Um den Teilnehmenden zu jedem Zeitpunkt volle Kontrolle über ihre Daten zu geben, werden alle Daten zunächst nur lokal in der App erfasst. Erst im Anschluss an die Fahrt können Teilnehmende die erfassten Daten einsehen und komplett anonymisiert zum Upload freigeben. Mit Hilfe dieser Daten wird es möglich, einen umfassenden Überblick über Radverkehr in Berlin sowie dabei auftretende Gefahrensituationen zu gewinnen. Zusätzlich können ungünstige Verkehrsflüsse oder Ampelschaltungen erkannt und optimiert werden, sodass die Fahrradnutzung mittelfristig attraktiver und sicherer wird. Die im Projekt gewonnenen Daten werden gemeinsam mit Partnern aus anderen Fachbereichen wie bspw. Stadt- und Regionalplanung aber auch unter Einbeziehung interessierter Bürger ausgewertet, um mit Hilfe der Berliner Senatsverwaltung für Umwelt, Verkehr und Klimaschutz nachhaltige Veränderungen zu erreichen.
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/featureGraphic.png
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/icon.png
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/1_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/1_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/2_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/2_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/3_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/3_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/4_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/4_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/5_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/5_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/images/phoneScreenshots/6_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/images/phoneScreenshots/6_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/de-DE/short_description.txt:
--------------------------------------------------------------------------------
1 | App um Fahrradfahren sicherer zu machen.
--------------------------------------------------------------------------------
/metadata/android/de-DE/title.txt:
--------------------------------------------------------------------------------
1 | SimRa - Sicherheit im Radverkehr
--------------------------------------------------------------------------------
/metadata/android/de-DE/video.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/de-DE/video.txt
--------------------------------------------------------------------------------
/metadata/android/en-US/changelogs/58.txt:
--------------------------------------------------------------------------------
1 | Following regions are now available: Leipzig, Wuppertal/Solingen/Remscheid und Düsseldorf
--------------------------------------------------------------------------------
/metadata/android/en-US/changelogs/default.txt:
--------------------------------------------------------------------------------
1 | This update fixes bug and increases the usability.
--------------------------------------------------------------------------------
/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | Comparable to other major cities worldwide, Berlin aims to reduce traffic emissions. Foremost mechanism for this is to increase the share of bicycle traffic. However, polls show that a lack of safety and fear of accidents keeps people from using their bikes more frequently. Furthermore, it also quite hard from a city planning perspective to get a good overview of location, time, frequency, and kind of hazards in bicycle traffic since official accident statistics only cover crashes but do not provide information on near crashes. In this project, we collect – with a strong focus on data protection and privacy – data on such near crashes to identify when and where bicyclists are especially at risk. We also aim to identify the main routes of bicycle traffic in Berlin. To obtain such data, we have developed the SimRa app that uses GPS information to track routes of bicyclists and the built-in acceleration sensors to pre-categorize near crashes. After their trip, users are asked to annotate and upload the collected data in a fully anonymous way. The collected data offers detailed insights into bicycle traffic in Berlin (and other cities) and hazardous situations to public administrators and other interested entities so that the number of near crashes (and hence also crashes) can be reduced. The data can also be used to optimize traffic flows to make bicycle traffic more attractive. For the evaluation of data, we plan to cooperate with interdisciplinary partners such as city planning, interested citizens, but also the Berlin Senate Department for the Environment, Transport and Climate Protection.
--------------------------------------------------------------------------------
/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/1_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/1_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/2_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/2_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/3_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/3_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/4_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/4_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/5_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/5_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/6_de-DE.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/images/phoneScreenshots/6_de-DE.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | App for Tracking Bicycle Safety.
--------------------------------------------------------------------------------
/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | SimRa - Safety in Bicycle Traffic
--------------------------------------------------------------------------------
/metadata/android/en-US/video.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simra-project/simra-android/911097f28f10687c081dcbf0f593fa93ef28f191/metadata/android/en-US/video.txt
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------