Skip to content

Commit

Permalink
Merge branch 'release/v2.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
7LPdWcaW committed Jan 30, 2019
2 parents 26868eb + 8d463f7 commit 1496e72
Show file tree
Hide file tree
Showing 142 changed files with 4,839 additions and 795 deletions.
37 changes: 28 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

Welcome to grow tracker. This app was created to help record data about growing plants in order to monitor the growing conditions to help make the plants grow better, and identify potential issues during the grow process.

[Latest APK: (MD5) 83771de33b2f23c5157996e68abd8532 v2.3.2](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.3.2/v2.3.2-production.apk)
[Latest APK: (MD5) 45ed03e8b120c6be233a30e743f61e92 v2.4](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.4/v2.4-production.apk)

[Latest APK (Discrete): (MD5) aade560ad850ca6c6996cfa8524dbecb v2.3.2](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.3.2/v2.3.2-discrete.apk)
[Latest APK (Discrete): (MD5) e154652199c8598c2457f5b606237e1b v2.4](https://github.com/7LPdWcaW/GrowTracker-Android/releases/download/v2.4/v2.4-discrete.apk)

You can follow development, post questions, or grow logs in the [Subreddit](https://reddit.com/r/growutils)

# Installation

Expand All @@ -20,8 +22,14 @@ On documentation on creating addons, please see [ADDONS.md](ADDONS.md)
2. Download the APK from [here](https://github.com/7LPdWcaW/GrowTracker-Android/releases)
3. Click on downloaded app and install

# Updating

You can either elect to update manually, or get notified on releases by installing the [Update plugin](https://github.com/7LPdWcaW/GrowUpdater-Android/releases)

**For updates, do not uninstall first, you will lose your existing plant data**

# Screenshots

[![install](screenshots/install-thumb.png)](screenshots/install.png)
[![plant list](screenshots/1-thumb.png)](screenshots/1.png)
[![discrete plant list](screenshots/1b-thumb.png)](screenshots/1b.png)
Expand All @@ -40,19 +48,20 @@ On documentation on creating addons, please see [ADDONS.md](ADDONS.md)
[![action options](screenshots/10-thumb.png)](screenshots/10.png)
[![settings](screenshots/11-thumb.png)](screenshots/11.png)
[![measurements](screenshots/12-thumb.png)](screenshots/12.png)
[![schedules](screenshots/13-thumb.png)](screenshots/13.png)
[![schedule details](screenshots/14-thumb.png)](screenshots/14.png)
[![schedule date](screenshots/15-thumb.png)](screenshots/15.png)

# About the app

The app uses a simple JSON structure to store all the data about the plants that can be found in `/sdcard/Android/data/me.anon.grow/files/plants.json`. All photos taken in the app are stored in `/sdcard/DCIM/GrowTracker/` in the corresponding plant id folder. `NOTE`: Photos will **not** show in any gallery app and will only be accessible through GrowTracker, or other **file** browser apps such as `ESFile Explorer`

The structure is very simple. Note: date timestamps are all unix timestamps from 1/1/1970 in milliseconds. All objects in arrays are in date order, where index 0 is the oldest and index (size - 1) is the newest.

## Prerequisites

Lombok is required for this project before you are able to compile. You can install it by going to `preferences->plugins->browse repositories->lombok plugin`

### Plant object

- Plant date in milliseconds

```
{
"id": <String>,
Expand Down Expand Up @@ -86,7 +95,9 @@ Temperature measured in ºC

### Action object (water)

Temperature measured in ºC
- Temperature measured in ºC
- Amount measured in ml
- Date is milliseconds

Water action for waterings

Expand All @@ -99,12 +110,14 @@ Water action for waterings
"amount": <Double>,
"date": 1431268453111,
"type": "Water",
"temp": <Integer>
"temp": <Double>
}
```

### Additive object - used for nutrients

- Amount is measured in ml

```
{
"description": <String>,
Expand All @@ -118,6 +131,8 @@ Action can be one of,

`FIM`, `FLUSH`, `FOLIAR_FEED`, `LST`, `LOLLIPOP`, `PESTICIDE_APPLICATION`, `TOP`, `TRANSPLANTED`, `TRIM`

- Date in milliseconds

```
{
"action": <Action>,
Expand All @@ -128,6 +143,8 @@ Action can be one of,

### Stage change

- Date in milliseconds

```
{
"newStage": <Plant Stage>,
Expand All @@ -138,6 +155,8 @@ Action can be one of,

### Note

- Date in milliseconds

```
{
"notes": <String>,
Expand All @@ -158,7 +177,7 @@ You can decrypt your files using your passphrase either by writing a script that

# License

Copyright 2014-2018 7LPdWcaW
Copyright 2014-2019 7LPdWcaW

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
63 changes: 39 additions & 24 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,49 +1,59 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

repositories {
maven { url 'https://dl.bintray.com/kennyc1012/maven' }
maven { url 'https://dl.bintray.com/kennyc1012/maven' }
mavenCentral()
}

android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
compileSdkVersion 28
buildToolsVersion "28.0.3"

defaultConfig {
applicationId "me.anon.grow"
minSdkVersion 17
targetSdkVersion 27
versionCode 16
versionName "2.3.2"
targetSdkVersion 28
versionCode 19
versionName "2.4"

javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}

vectorDrawables.useSupportLibrary = true
}

lintOptions {
abortOnError false
}

flavorDimensions "type"
flavorDimensions "default"

productFlavors {
production {
dimension "default"
buildConfigField "Boolean", "DISCRETE", "false"

manifestPlaceholders = [
"appType": "original"
"appType": "original"
]

resValue "string", "app_name", "GrowTracker"

dimension "type"
}

discrete {
dimension "default"
buildConfigField "Boolean", "DISCRETE", "true"

manifestPlaceholders = [
"appType": "discrete"
"appType": "discrete"
]

resValue "string", "app_name", "Tracker"

dimension "type"
}
}

Expand All @@ -56,22 +66,27 @@ android {
}

dependencies {
annotationProcessor 'org.projectlombok:lombok:1.16.20'
compileOnly 'org.projectlombok:lombok:1.16.20'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:exifinterface:27.1.1"
implementation 'com.android.support:support-compat:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation "com.android.support:exifinterface:28.0.0"

implementation 'com.esotericsoftware:kryo:3.0.3'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup:otto:1.3.8'
implementation 'com.kennyc:snackbar:2.0.2'
implementation 'com.github.PhilJay:MPAndroidChart:v2.1.0'
implementation 'com.github.PhilJay:MPAndroidChart:v2.1.6'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'
implementation 'net.lingala.zip4j:zip4j:1.3.2'
implementation 'com.google.android:flexbox:1.0.0'

api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

androidExtensions {
experimental = true
}
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
<activity android:name=".SettingsActivity" />
<activity android:name=".fragment.ImageLightboxDialog" android:theme="@style/fullscreen" android:windowSoftInputMode="stateHidden|adjustResize" />
<activity android:name=".PlantDetailsActivity" android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".FeedingScheduleActivity" android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".FeedingScheduleDetailsActivity" android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".ScheduleDateDetailsActivity" android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".RequestActivity" android:windowSoftInputMode="stateAlwaysHidden" android:theme="@style/Theme.Transparent" android:exported="true">
<intent-filter>
<action android:name="me.anon.grow.ACTION_REQUEST_PLANTS" />
Expand Down
Loading

0 comments on commit 1496e72

Please sign in to comment.