Giter Club home page Giter Club logo

forecastie's Introduction

Hello there 👋

I'm Tomáš Martykán

Welcome to my Github! I am a software developer and student from Brno, Czech republic. I mostly work on mobile development. Here you can see some personal projects I've built in the past. Currently I am interested in studying augmented reality and artificial intelligence.

Languages and Tools

  • Android, Kotlin, Jetpack, RxJava, Retrofit, Dagger
  • React Native, Xamarin
  • Swift (macOS/iOS)
  • Web: React (Next.js, Gatsby), Angular, Hugo
  • Backend: Node.js, Golang, PostgreSQL, Redis, Docker

forecastie's People

Contributors

abika avatar aresiel avatar arucard21 avatar baesi avatar beriain avatar carminemassarelli avatar chancevermilion avatar di72nn avatar fantel avatar fridodeluxe avatar friederbluemle avatar githubuser232 avatar icasdri avatar igor-cali avatar linkid avatar martykan avatar naofum avatar nevyn-hira avatar robinpaulson avatar ryankinnard avatar simseungmin avatar sotpapathe avatar spiritcroc avatar splitowo avatar twikedk avatar uxcam-mobile avatar vmazoyer avatar vvoland avatar yonniii avatar zoff99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

forecastie's Issues

Support multiple locations

I love the simplicity of the app! However, for many users it might be useful to easily access/see the weather for multiple locations (e.g. when traveling, living in multiple places etc)

two ideas for UI design

  • list of recently viewed cities in search dialog
  • slide in side menu OR separate screen with list of saved locations

open to suggestions and willing to work on this feature

Screenshots from Google Weather app on Android 6.0.1
saved location as 'autocomplete' for search input
saved location as 'autocomplete' for search input

allow user to easily add searched location to list
allow user to easily add searched location to list

Feature Request: Smaller 2x1 widget

Hi,
This is the best weather app for Android I found, but the widget is too big for me. I would like a 2x1 (or 4x1) widget like the weather panel in CMs cLock.
Thanks

Make widget show multiple days

I'd like to overview a few days on a widget if it's big enough.
Also, indeed the layout needs a work on it. And clicking on a widget usually makes the app to show up.
Thanks!

Add mm for rain forecast

I think that the data about mm would be very interesting. I have lived in cities where despite it said it was going to rain, you knew that if it wasn´t something higher than 0.5 mm it was very improbable.

Dependency on Google Play Services for Location

A dependency on the proprietary Google Play Services seems to have been introduced by 32ef745 in #40 for resolving coarse location. I wonder if it is possible to resolve location without these services, as introducing such a dependency has a couple important consequences, especially considering Forecastie is aiming to be a FOSS app:

  1. Users of fully-free (or otherwise Google-free) roms would be unable to use our app.
  2. We might get kicked from F-Droid (or F-Droid would have to maintain a separate branch with the proprietary services stripped out).

We may also look into configurable solutions, such as a setting to configure location provider, or as a stop-gap, a setting that guards against importing or creating the proprietary GoogleAPIClient (using dynamic import measures or otherwise). If desirable, I will spend some time looking into this.

Widget has partial functionality

I'm running on a Moto E (Cyanogenmod 13.0, Android 6.0.1 equivalent), and I only get the icon that shows the weather condition outside (cloudy, stormy, clear, etc.) but no other data. It's not an issue of the app getting the data, because when I open the app proper all the info is right there, I just don't know why the widget isn't

Screenshot here.

-0,0°C

it would be better if it only says 0°C

Widget not tap-able

But when I tab on the widget nothing happen, nice would be when it open's the app.
Maybe it just doesn't work on my device ( Motorola Razr I x86, CM 11, Android 4.4.4)

forecastie crashed on start

Hi. When in phone don't have internet not at all, it run application cause crash.

If app download in data early on 3 days it nice to have if these daty later offline

Crash when updating and rotating screen

I've observed that if the phone is rotated (causing the layout to change) while the weather information is updating there is a chance that the application will crash. The following is the stack trace from the crash:

V/WindowManager(  747): Adding window Window{274759ee u0 cz.martykan.forecastie/cz.martykan.forecastie.MainActivity} at 16 of 24 (before Window{327b04b5 u0 cz.martykan.forecastie/cz.martykan.forecastie.MainActivity})
D/AndroidRuntime(16138): Shutting down VM
E/AndroidRuntime(16138): FATAL EXCEPTION: main
E/AndroidRuntime(16138): Process: cz.martykan.forecastie, PID: 16138
E/AndroidRuntime(16138): java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{161404fa V.E..... R......D 0,0-1166,348} not attached to window manager
E/AndroidRuntime(16138):    at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:396)
E/AndroidRuntime(16138):    at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:322)
E/AndroidRuntime(16138):    at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116)
E/AndroidRuntime(16138):    at android.app.Dialog.dismissDialog(Dialog.java:341)
E/AndroidRuntime(16138):    at android.app.Dialog.dismiss(Dialog.java:324)
E/AndroidRuntime(16138):    at cz.martykan.forecastie.MainActivity$GenericRequestTask.onPostExecute(MainActivity.java:804)
E/AndroidRuntime(16138):    at cz.martykan.forecastie.MainActivity$GenericRequestTask.onPostExecute(MainActivity.java:712)
E/AndroidRuntime(16138):    at android.os.AsyncTask.finish(AsyncTask.java:636)
E/AndroidRuntime(16138):    at android.os.AsyncTask.access$500(AsyncTask.java:177)
E/AndroidRuntime(16138):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
E/AndroidRuntime(16138):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(16138):    at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(16138):    at android.app.ActivityThread.main(ActivityThread.java:5291)
E/AndroidRuntime(16138):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(16138):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(16138):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
E/AndroidRuntime(16138):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
W/ActivityManager(  747):   Force finishing activity 1 cz.martykan.forecastie/.MainActivity

This was observed on a Nexus 5 running Android 5.1.1

Widget stops getting updated

After some time, the widget stops getting updated. This might be because I walk around and lose internet connection at some point, but I don't know the exact cause. The end result is that the time widget gets stuck on an old time, and starting the app gives the following crash log:

08-14 23:42:18.216 31144 31144 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.activities.MainActivity.updateTodayWeatherUI(MainActivity.java:414)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.activities.MainActivity.access$200(MainActivity.java:77)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.activities.MainActivity$TodayWeatherTask.updateMainUI(MainActivity.java:830)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.tasks.GenericRequestTask.onPostExecute(GenericRequestTask.java:131)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.activities.MainActivity$TodayWeatherTask.onPostExecute(MainActivity.java:812)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at cz.martykan.forecastie.activities.MainActivity$TodayWeatherTask.onPostExecute(MainActivity.java:799)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.os.AsyncTask.finish(AsyncTask.java:651)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.os.AsyncTask.-wrap1(AsyncTask.java)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:148)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5461)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
08-14 23:42:18.216 31144 31144 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-14 23:42:18.220  1897  5625 W ActivityManager:   Force finishing activity cz.martykan.forecastie/.activities.MainActivity

Edit: This issue might be related to #112.

Crash when adding Widget

I just got this crash on a fresh install. Steps to reproduce:

  1. Install Forecastie
  2. Do not start Forecastie
  3. Add widget to homescreen
FATAL EXCEPTION: main
Process: cz.martykan.forecastie, PID: 13594
Theme: themes:{}
java.lang.RuntimeException: Unable to start receiver cz.martykan.forecastie.widgets.TimeWidgetProvider: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2766)
    at android.app.ActivityThread.-wrap14(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5461)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
    at android.graphics.Canvas.drawText(Canvas.java:1656)
    at cz.martykan.forecastie.widgets.AbstractWidgetProvider.getWeatherIcon(AbstractWidgetProvider.java:41)
    at cz.martykan.forecastie.widgets.TimeWidgetProvider.onUpdate(TimeWidgetProvider.java:57)
    at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:66)
    at cz.martykan.forecastie.widgets.TimeWidgetProvider.onReceive(TimeWidgetProvider.java:72)
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2759)
    at android.app.ActivityThread.-wrap14(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5461) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

More frequent Releases

The last release has been almost two months ago. In that time, there have been lots of fixes and improvements according to git log.

It would be cool if you could do releases more frequently, maybe somewhere between every week and every month.

A Changelog would be nice :)

Could you make a simple Changelog just to keep us updated about the changes from a release to another?

Thanks

act as a weather provider for Android 6

Android 6 supports weather provider plugins. Right now there aren't any on F-droid and it looks like Yahoo has been removed from CM. It'd be great if this functionality could be provided by forecastie.

[FR] Differentiate days on later tab

Separate the days with a separate material cards, or slightly shade the days backgrounds different shades. The days get progressively darker, or alternate between two shades.

Error parsing JSON

Recently updated Forecastie to v0.7.
Ever since I'm getting "Error parsing JSON".
I'm running CM13.1 (Android 6.0.1) on Oppo Find 7.

01-28 10:00:21.936 15435-15488/? W/System.err: java.io.FileNotFoundException: http://api.openweathermap.org/data/2.5/weather?q=London&lang=en&appid=2de143494c0b295cca9337e1e96b00e0
01-28 10:00:21.936 15435-15488/? W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
01-28 10:00:21.936 15435-15488/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetWeatherTask.doInBackground(MainActivity.java:487)
01-28 10:00:21.936 15435-15488/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetWeatherTask.doInBackground(MainActivity.java:465)
01-28 10:00:21.936 15435-15488/? W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
01-28 10:00:21.936 15435-15488/? W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-28 10:00:21.936 15435-15488/? W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
01-28 10:00:21.936 15435-15488/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
01-28 10:00:21.936 15435-15488/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
01-28 10:00:21.936 15435-15488/? W/System.err:     at java.lang.Thread.run(Thread.java:818)
01-28 10:00:21.940 254-254/? E/Region: Region::boolean_operation(op=7) invalid Rect={0,955,92,720}
01-28 10:00:21.940 254-254/? E/Region: Region::boolean_operation(op=7) invalid Rect={1423,955,1624,720}
01-28 10:00:21.958 15435-15435/? W/System.err: org.json.JSONException: End of input at character 0 of 
01-28 10:00:21.958 15435-15435/? W/System.err:     at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
01-28 10:00:21.958 15435-15435/? W/System.err:     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
01-28 10:00:21.958 15435-15435/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:156)
01-28 10:00:21.958 15435-15435/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:173)
01-28 10:00:21.958 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity.parseTodayJson(MainActivity.java:271)
01-28 10:00:21.958 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity.access$200(MainActivity.java:48)
01-28 10:00:21.958 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetWeatherTask.onPostExecute(MainActivity.java:511)
01-28 10:00:21.958 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetWeatherTask.onPostExecute(MainActivity.java:465)
01-28 10:00:21.958 15435-15435/? W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:651)
01-28 10:00:21.958 15435-15435/? W/System.err:     at android.os.AsyncTask.-wrap1(AsyncTask.java)
01-28 10:00:21.958 15435-15435/? W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
01-28 10:00:21.958 15435-15435/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
01-28 10:00:21.958 15435-15435/? W/System.err:     at android.os.Looper.loop(Looper.java:148)
01-28 10:00:21.959 15435-15435/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5466)
01-28 10:00:21.959 15435-15435/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
01-28 10:00:21.959 15435-15435/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-28 10:00:21.959 15435-15435/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-28 10:00:22.116 15435-15488/? W/System.err: java.io.FileNotFoundException: http://api.openweathermap.org/data/2.5/forecast?q=London&lang=en&mode=json&appid=2de143494c0b295cca9337e1e96b00e0
01-28 10:00:22.116 15435-15488/? W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
01-28 10:00:22.116 15435-15488/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetLongTermWeatherTask.doInBackground(MainActivity.java:537)
01-28 10:00:22.116 15435-15488/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetLongTermWeatherTask.doInBackground(MainActivity.java:515)
01-28 10:00:22.116 15435-15488/? W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
01-28 10:00:22.116 15435-15488/? W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-28 10:00:22.117 15435-15488/? W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
01-28 10:00:22.117 15435-15488/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
01-28 10:00:22.117 15435-15488/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
01-28 10:00:22.117 15435-15488/? W/System.err:     at java.lang.Thread.run(Thread.java:818)
01-28 10:00:22.151 15435-15435/? W/System.err: org.json.JSONException: End of input at character 0 of 
01-28 10:00:22.151 15435-15435/? W/System.err:     at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
01-28 10:00:22.151 15435-15435/? W/System.err:     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
01-28 10:00:22.151 15435-15435/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:156)
01-28 10:00:22.151 15435-15435/? W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:173)
01-28 10:00:22.151 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity.parseLongTermJson(MainActivity.java:353)
01-28 10:00:22.151 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetLongTermWeatherTask.onPostExecute(MainActivity.java:561)
01-28 10:00:22.151 15435-15435/? W/System.err:     at cz.martykan.forecastie.MainActivity$GetLongTermWeatherTask.onPostExecute(MainActivity.java:515)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:651)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.os.AsyncTask.-wrap1(AsyncTask.java)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.os.Looper.loop(Looper.java:148)
01-28 10:00:22.151 15435-15435/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5466)
01-28 10:00:22.151 15435-15435/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
01-28 10:00:22.151 15435-15435/? W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-28 10:00:22.151 15435-15435/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-28 10:00:22.293 2644-13165/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 107]: Checking http://connectivitycheck.gstatic.com/generate_204 on three.co.uk, connectivitycheck.gstatic.com=216.58.213.174
01-28 10:00:22.296 2644-13165/? D/NetworkMonitor/NetworkAgentInfo [MOBILE (LTE) - 107]: Proba

Parsing JSON fails after fresh install (NPE on MainActivity line 501)

When you're looking in line 459 (just one example, further examples are also available in the result) there is:
"wind":null,

JSON
`
{
"city":{
"id":2643743,
"name":"London",
"coord":{
"lon":-0.12574,
"lat":51.50853
},
"country":"GB",
"population":0,
"sys":{
"population":0
}
},
"cod":"200",
"message":0.005,
"cnt":34,
"list":[
{
"dt":1466704800,
"main":{
"temp":293.43,
"temp_min":291.568,
"temp_max":293.43,
"pressure":1019.13,
"sea_level":1029.04,
"grnd_level":1019.13,
"humidity":100,
"temp_kf":1.86
},
"weather":[
{
"id":501,
"main":"Rain",
"description":"mäßiger Regen",
"icon":"10d"
}
],
"clouds":{
"all":68
},
"wind":{
"speed":2.21,
"deg":306.504
},
"rain":{
"3h":3.6675
},
"sys":{
"pod":"d"
},
"dt_txt":"2016-06-23 18:00:00"
},
{
"dt":1466715600,
"main":{
"temp":291.08,
"temp_min":289.326,
"temp_max":291.08,
"pressure":1020.25,
"sea_level":1029.96,
"grnd_level":1020.25,
"humidity":89,
"temp_kf":1.76
},
"weather":[
{
"id":501,
"main":"Rain",
"description":"mäßiger Regen",
"icon":"10n"
}
],
"clouds":{
"all":80
},
"wind":{
"speed":4.91,
"deg":270.005
},
"rain":{
"3h":11.07
},
"sys":{
"pod":"n"
},
"dt_txt":"2016-06-23 21:00:00"
},
{
"dt":1466726400,
"main":{
"temp":288.51,
"temp_min":286.858,
"temp_max":288.51,
"pressure":1020.71,
"sea_level":1030.65,
"grnd_level":1020.71,
"humidity":92,
"temp_kf":1.65
},
"weather":[
{
"id":801,
"main":"Clouds",
"description":"ein paar Wolken",
"icon":"02n"
}
],
"clouds":{
"all":12
},
"wind":{
"speed":3.51,
"deg":252.502
},
"rain":{

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-24 00:00:00"
  },
  {  
     "dt":1466737200,
     "main":{  
        "temp":287.34,
        "temp_min":285.794,
        "temp_max":287.34,
        "pressure":1031.27,
        "sea_level":1031.27,
        "grnd_level":1031.27,
        "humidity":94,
        "temp_kf":1.55
     },
     "weather":[  
        {  
           "id":804,
           "main":"Clouds",
           "description":"wolkenbedeckt",
           "icon":"04n"
        }
     ],
     "clouds":{  
        "all":92
     },
     "wind":{  
        "speed":3.26,
        "deg":271.505
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-24 03:00:00"
  },
  {  
     "dt":1466769600,
     "main":{  
        "temp":292.47,
        "temp_min":291.028,
        "temp_max":292.47,
        "pressure":1021.23,
        "sea_level":1031.01,
        "grnd_level":1021.23,
        "humidity":100,
        "temp_kf":1.45
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01d"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":4.76,
        "deg":220.5
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-24 12:00:00"
  },
  {  
     "dt":1466780400,
     "main":{  
        "temp":291.94,
        "temp_min":290.601,
        "temp_max":291.94,
        "pressure":1020.54,
        "sea_level":1030.39,
        "grnd_level":1020.54,
        "humidity":93,
        "temp_kf":1.34
     },
     "weather":[  
        {  
           "id":803,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"04d"
        }
     ],
     "clouds":{  
        "all":68
     },
     "wind":{  
        "speed":6.22,
        "deg":223.002
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-24 15:00:00"
  },
  {  
     "dt":1466791200,
     "main":{  
        "temp":290.2,
        "temp_min":288.962,
        "temp_max":290.2,
        "pressure":1020.59,
        "sea_level":1030.44,
        "grnd_level":1020.59,
        "humidity":88,
        "temp_kf":1.24
     },
     "weather":[  
        {  
           "id":500,
           "main":"Rain",
           "description":"leichter Regen",
           "icon":"10d"
        }
     ],
     "clouds":{  
        "all":64
     },
     "wind":{  
        "speed":5.32,
        "deg":220.501
     },
     "rain":{  
        "3h":0.065
     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-24 18:00:00"
  },
  {  
     "dt":1466802000,
     "main":{  
        "temp":288.41,
        "temp_min":287.273,
        "temp_max":288.41,
        "pressure":1020.91,
        "sea_level":1030.71,
        "grnd_level":1020.91,
        "humidity":0,
        "temp_kf":1.14
     },
     "weather":[  
        {  
           "id":803,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"04n"
        }
     ],
     "clouds":{  
        "all":56
     },
     "wind":{  
        "speed":3.43,
        "deg":253.003
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-24 21:00:00"
  },
  {  
     "dt":1466812800,
     "main":{  
        "temp":285.97,
        "temp_min":284.94,
        "temp_max":285.97,
        "pressure":1020.99,
        "sea_level":1030.93,
        "grnd_level":1020.99,
        "humidity":93,
        "temp_kf":1.03
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"02n"
        }
     ],
     "clouds":{  
        "all":8
     },
     "wind":{  
        "speed":3.22,
        "deg":253.002
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-25 00:00:00"
  },
  {  
     "dt":1466823600,
     "main":{  
        "temp":284.05,
        "temp_min":283.121,
        "temp_max":284.05,
        "pressure":1020.65,
        "sea_level":1030.64,
        "grnd_level":1020.65,
        "humidity":94,
        "temp_kf":0.93
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01n"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":2.66,
        "deg":250.504
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-25 03:00:00"
  },
  {  
     "dt":1466834400,
     "main":{  
        "temp":285.4,
        "temp_min":284.573,
        "temp_max":285.4,
        "pressure":1020.59,
        "sea_level":1030.53,
        "grnd_level":1020.59,
        "humidity":97,
        "temp_kf":0.83
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01d"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":2.71,
        "deg":243.002
     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-25 06:00:00"
  },
  {  
     "dt":1466845200,
     "main":{  
        "temp":289.35,
        "temp_min":288.623,
        "temp_max":289.35,
        "pressure":1020.66,
        "sea_level":1030.54,
        "grnd_level":1020.66,
        "humidity":100,
        "temp_kf":0.72
     },
     "weather":[  
        {  
           "id":801,
           "main":"Clouds",
           "description":"ein paar Wolken",
           "icon":"02d"
        }
     ],
     "clouds":{  
        "all":20
     },
     "wind":{  
        "speed":2.83,
        "deg":244.502
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-25 09:00:00"
  },
  {  
     "dt":1466856000,
     "main":{  
        "temp":290.62,
        "temp_min":289.995,
        "temp_max":290.62,
        "pressure":1020.47,
        "sea_level":1030.32,
        "grnd_level":1020.47,
        "humidity":88,
        "temp_kf":0.62
     },
     "weather":[  
        {  
           "id":803,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"04d"
        }
     ],
     "clouds":{  
        "all":76
     },
     "wind":null,
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-25 12:00:00"
  },
  {  
     "dt":1466866800,
     "main":{  
        "temp":290.62,
        "temp_min":290.103,
        "temp_max":290.62,
        "pressure":1020.21,
        "sea_level":1029.98,
        "grnd_level":1020.21,
        "humidity":82,
        "temp_kf":0.52
     },
     "weather":[  
        {  
           "id":802,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"03d"
        }
     ],
     "clouds":{  
        "all":36
     },
     "wind":null,
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-25 15:00:00"
  },
  {  
     "dt":1466877600,
     "main":{  
        "temp":289.56,
        "temp_min":289.15,
        "temp_max":289.56,
        "pressure":1020.3,
        "sea_level":1030.14,
        "grnd_level":1020.3,
        "humidity":87,
        "temp_kf":0.41
     },
     "weather":[  
        {  
           "id":804,
           "main":"Clouds",
           "description":"wolkenbedeckt",
           "icon":"04d"
        }
     ],
     "clouds":{  
        "all":92
     },
     "wind":{  
        "speed":3.51,
        "deg":277.502
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-25 18:00:00"
  },
  {  
     "dt":1466888400,
     "main":{  
        "temp":287.76,
        "temp_min":287.451,
        "temp_max":287.76,
        "pressure":1021.01,
        "sea_level":1030.95,
        "grnd_level":1021.01,
        "humidity":83,
        "temp_kf":0.31
     },
     "weather":[  
        {  
           "id":802,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"03n"
        }
     ],
     "clouds":{  
        "all":36
     },
     "wind":null,
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-25 21:00:00"
  },
  {  
     "dt":1466899200,
     "main":{  
        "temp":286.41,
        "temp_min":286.207,
        "temp_max":286.41,
        "pressure":1030.93,
        "sea_level":1030.93,
        "grnd_level":1030.93,
        "humidity":88,
        "temp_kf":0.21
     },
     "weather":[  
        {  
           "id":803,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"04n"
        }
     ],
     "clouds":{  
        "all":56
     },
     "wind":{  
        "speed":3.11,
        "deg":274.502
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-26 00:00:00"
  },
  {  
     "dt":1466920800,
     "main":{  
        "temp":286.87,
        "temp_min":286.771,
        "temp_max":286.87,
        "pressure":1021.35,
        "sea_level":1031.33,
        "grnd_level":1021.35,
        "humidity":92,
        "temp_kf":0.1
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"02d"
        }
     ],
     "clouds":{  
        "all":8
     },
     "wind":{  
        "speed":4.71,
        "deg":292.5
     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-26 06:00:00"
  },
  {  
     "dt":1466931600,
     "main":{  
        "temp":289.23,
        "temp_min":289.23,
        "temp_max":289.23,
        "pressure":1031.73,
        "sea_level":1031.73,
        "grnd_level":1031.73,
        "humidity":92,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":802,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"03d"
        }
     ],
     "clouds":{  
        "all":44
     },
     "wind":{  
        "speed":4.67,
        "deg":306.004
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-26 09:00:00"
  },
  {  
     "dt":1466942400,
     "main":{  
        "temp":291.173,
        "temp_min":291.173,
        "temp_max":291.173,
        "pressure":1021.73,
        "sea_level":1031.55,
        "grnd_level":1021.73,
        "humidity":85,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":802,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"03d"
        }
     ],
     "clouds":{  
        "all":32
     },
     "wind":{  
        "speed":4.5,
        "deg":291.001
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-26 12:00:00"
  },
  {  
     "dt":1466953200,
     "main":{  
        "temp":291.611,
        "temp_min":291.611,
        "temp_max":291.611,
        "pressure":1021.33,
        "sea_level":1031.09,
        "grnd_level":1021.33,
        "humidity":75,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01d"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":5.23,
        "deg":276.011
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-26 15:00:00"
  },
  {  
     "dt":1466964000,
     "main":{  
        "temp":290.387,
        "temp_min":290.387,
        "temp_max":290.387,
        "pressure":1021.11,
        "sea_level":1030.92,
        "grnd_level":1021.11,
        "humidity":73,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01d"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":5.01,
        "deg":267.002
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-26 18:00:00"
  },
  {  
     "dt":1466985600,
     "main":{  
        "temp":288.061,
        "temp_min":288.061,
        "temp_max":288.061,
        "pressure":1020.54,
        "sea_level":1030.36,
        "grnd_level":1020.54,
        "humidity":91,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":804,
           "main":"Clouds",
           "description":"wolkenbedeckt",
           "icon":"04n"
        }
     ],
     "clouds":{  
        "all":88
     },
     "wind":{  
        "speed":4.21,
        "deg":241.005
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-27 00:00:00"
  },
  {  
     "dt":1466996400,
     "main":{  
        "temp":287.117,
        "temp_min":287.117,
        "temp_max":287.117,
        "pressure":1019.37,
        "sea_level":1029.29,
        "grnd_level":1019.37,
        "humidity":92,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":803,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"04n"
        }
     ],
     "clouds":{  
        "all":76
     },
     "wind":null,
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-27 03:00:00"
  },
  {  
     "dt":1467007200,
     "main":{  
        "temp":287.666,
        "temp_min":287.666,
        "temp_max":287.666,
        "pressure":1019.31,
        "sea_level":1029.21,
        "grnd_level":1019.31,
        "humidity":92,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":804,
           "main":"Clouds",
           "description":"wolkenbedeckt",
           "icon":"04d"
        }
     ],
     "clouds":{  
        "all":92
     },
     "wind":{  
        "speed":5.16,
        "deg":255
     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-27 06:00:00"
  },
  {  
     "dt":1467018000,
     "main":{  
        "temp":288.087,
        "temp_min":288.087,
        "temp_max":288.087,
        "pressure":1019.15,
        "sea_level":1029.01,
        "grnd_level":1019.15,
        "humidity":100,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":501,
           "main":"Rain",
           "description":"mäßiger Regen",
           "icon":"10d"
        }
     ],
     "clouds":{  
        "all":68
     },
     "wind":{  
        "speed":3.31,
        "deg":271.001
     },
     "rain":{  
        "3h":4.69
     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-27 09:00:00"
  },
  {  
     "dt":1467039600,
     "main":{  
        "temp":293.096,
        "temp_min":293.096,
        "temp_max":293.096,
        "pressure":1021.02,
        "sea_level":1030.8,
        "grnd_level":1021.02,
        "humidity":80,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":802,
           "main":"Clouds",
           "description":"überwiegend bewölkt",
           "icon":"03d"
        }
     ],
     "clouds":{  
        "all":44
     },
     "wind":{  
        "speed":4.83,
        "deg":297.502
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-27 15:00:00"
  },
  {  
     "dt":1467050400,
     "main":{  
        "temp":291.964,
        "temp_min":291.964,
        "temp_max":291.964,
        "pressure":1021.69,
        "sea_level":1031.58,
        "grnd_level":1021.69,
        "humidity":71,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"02d"
        }
     ],
     "clouds":{  
        "all":8
     },
     "wind":{  
        "speed":4.3,
        "deg":313.5
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-27 18:00:00"
  },
  {  
     "dt":1467061200,
     "main":{  
        "temp":288.088,
        "temp_min":288.088,
        "temp_max":288.088,
        "pressure":1023.08,
        "sea_level":1032.96,
        "grnd_level":1023.08,
        "humidity":71,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01n"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":2.76,
        "deg":336.502
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-27 21:00:00"
  },
  {  
     "dt":1467072000,
     "main":{  
        "temp":284.621,
        "temp_min":284.621,
        "temp_max":284.621,
        "pressure":1023.88,
        "sea_level":1033.86,
        "grnd_level":1023.88,
        "humidity":81,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01n"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":2.27,
        "deg":357.5
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-28 00:00:00"
  },
  {  
     "dt":1467082800,
     "main":{  
        "temp":282.415,
        "temp_min":282.415,
        "temp_max":282.415,
        "pressure":1034.09,
        "sea_level":1034.09,
        "grnd_level":1034.09,
        "humidity":89,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01n"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":1.26,
        "deg":334.501
     },
     "rain":{  

     },
     "sys":{  
        "pod":"n"
     },
     "dt_txt":"2016-06-28 03:00:00"
  },
  {  
     "dt":1467093600,
     "main":{  
        "temp":285.535,
        "temp_min":285.535,
        "temp_max":285.535,
        "pressure":1024.39,
        "sea_level":1034.23,
        "grnd_level":1024.39,
        "humidity":84,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"01d"
        }
     ],
     "clouds":{  
        "all":0
     },
     "wind":{  
        "speed":1.32,
        "deg":293.503
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-28 06:00:00"
  },
  {  
     "dt":1467104400,
     "main":{  
        "temp":289.767,
        "temp_min":289.767,
        "temp_max":289.767,
        "pressure":1024.28,
        "sea_level":1034.09,
        "grnd_level":1024.28,
        "humidity":0,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":800,
           "main":"Clear",
           "description":"klarer Himmel",
           "icon":"02d"
        }
     ],
     "clouds":{  
        "all":8
     },
     "wind":{  
        "speed":1.97,
        "deg":182.509
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-28 09:00:00"
  },
  {  
     "dt":1467126000,
     "main":{  
        "temp":290.681,
        "temp_min":290.681,
        "temp_max":290.681,
        "pressure":1022.46,
        "sea_level":1032.22,
        "grnd_level":1022.46,
        "humidity":73,
        "temp_kf":0
     },
     "weather":[  
        {  
           "id":804,
           "main":"Clouds",
           "description":"wolkenbedeckt",
           "icon":"04d"
        }
     ],
     "clouds":{  
        "all":92
     },
     "wind":{  
        "speed":3.96,
        "deg":229.5
     },
     "rain":{  

     },
     "sys":{  
        "pod":"d"
     },
     "dt_txt":"2016-06-28 15:00:00"
  }

]
}
`

Widget improvements

Hey,
The app is very nice, yesterday I tried also the widget. For me I can use it only as 4x3 widget to see the full informations and then I have a lot of empty space inside the widget. Is it possible to improve the font size and line gap for use as 4x2 or make the text scrollable?

http://tinyurl.com/jr4wynj

Edit: replaced link

Feature Request: % Chance of Rain

It would be helpful to see a % chance of rain on the forecasts. An extremely low possibility of rain on other apps/services will still just show 'rain' on Forecastie

Custom Refresh Intervals

It would be great to be able to select a background refresh interval. For example, 15min, 30min, 1h, 4hr, 12hr, 24hr. Thanks for the great app!

Detect Location does not work

Versions:

  • Android: CM 12.1-20160329-Nigtly for Xperia Z3 Compact
  • Kernel: 3.4.0
  • Forcastie: 0.9.1 insalled via f-droid

I have the Privacy Guard activated.
The app doesn't ask for permission to use the Location.
Even after allow access to the location, the app doesn't apper in the lis of apps, which used the location.
Side note, instead of gapps I'm using microG apps. https://microg.org
But I think, that it is not related to microG, because to me it seems, that the app doesn't try to use the location.

sunrise and sunset

Hi,
could you please consider to add sunrise and sunset time to the main screen?

Thanks for your app
Luca

Feature request: indicate last update in widget

Since I don't have a data plan on my mobile phone it is normally not online unless I'm somewhere with WIFI access (home, work, friends). That means that I cannot tell for sure when was the last time that forecastie had the opportunity to update its weather information. If I want to go sure that it's updated, I hit the small update button (round arrow) on the widget. However, the only indication that the information has been updated is if the information shown changes, which can be hard to tell if the changes are slight ("It says 4.2 degrees now, but was it 4.3 before or did it not change at all???").

Hence it would be nice if the widget should either show a time stamp that indicates when the information has been updated the last time or at least some indicator that an update is currently performed and when it has finished – something like the update arrow rotating while the update is in progress.

Inches for snow

The app shows "Snow (1.6 mm)". I wish it would show "Snow (0.1 in)" [inches]

I see options to change every unit (temperature, barometer, wind speed), except the unit for the amount of snow.

(By the way, I love the app!)

Translations needed

We have some new strings for v0.4 and we need to translate them. These are a bit more complicated, so Google Translate won't be enough. We need them in Spanish, Basque (@beriain could help), Japanese (@naofum), French, Italian, Dutch, Russian. It's better to have them before release, than after release, where everything changes anyway.

<string name="setting_imperialDate">Use imperial date format</string>
<string name="setting_imperialDate_description">12/31/2001 instead of 31.12.2001</string>
<string name="setting_showDay">Show day of the week</string>
<string name="setting_speedUnits">Speed units</string>
<string name="setting_tempUnits">Temperature units</string>
<string name="setting_pressureUnits">Pressure units</string>

I know we won't get it in all languages, but let's try to get as much as possible.

Compact view

This is a feature request for a compact view so that you can see a full day (or more) at a time on the screen.

If this is not the direction you want to take the app, feel free to close.

Always current location

Hi!
Please add an option to get the current location with every refresh. And please add more refresh rates (2 and 6 hours for example).

Use integer values for temperatures

I don't think people really care about sub-integer temperatures. I mean, 17°C and 17.4°C is essentially the same temperature to me. Moreover, reporting temperature of a 3 hour period with 0.1°C accuracy is not really meaningful since the temperature will surely fluctuate during this time and through the region.

Rounding all temperatures to integer values instead removes some clutter from the app, making it more useful when you want to very quickly check the weather.

At the end, this is my personal taste. Feel free to close this issue. I am already very thankful for this beautiful and useful app that you have made.

Crash at start parsing json

This morning the Forcastie app v1.0 from F-Droid was unable to run, perhaps due to unexpected data arriving from OpenWeatherMap.

Here is the exception which brought down the app:

E/AndroidRuntime(17172): FATAL EXCEPTION: AsyncTask #4
E/AndroidRuntime(17172): Process: cz.martykan.forecastie, PID: 17172
E/AndroidRuntime(17172): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(17172):    at android.os.AsyncTask$3.done(AsyncTask.java:304)
E/AndroidRuntime(17172):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(17172):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(17172):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(17172):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(17172):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(17172):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(17172):    at java.lang.Thread.run(Thread.java:818)
E/AndroidRuntime(17172): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference
E/AndroidRuntime(17172):    at cz.martykan.forecastie.MainActivity.parseLongTermJson(MainActivity.java:475)
E/AndroidRuntime(17172):    at cz.martykan.forecastie.MainActivity$LongTermWeatherTask.parseResponse(MainActivity.java:898)
E/AndroidRuntime(17172):    at cz.martykan.forecastie.MainActivity$GenericRequestTask.doInBackground(MainActivity.java:790)
E/AndroidRuntime(17172):    at cz.martykan.forecastie.MainActivity$GenericRequestTask.doInBackground(MainActivity.java:712)
E/AndroidRuntime(17172):    at android.os.AsyncTask$2.call(AsyncTask.java:292)
E/AndroidRuntime(17172):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(17172):    ... 4 more

Crash on first refresh

The application crashes if you try to refresh for the first time without network connectivity.

Refreshes after the first run do display the 'No network connection' snackbar successfully if there's no network.

Running CM13 on OnePlus One with the F-Droid 0.9.1 version.

F-Droid update

Hi,
Please update the source code to 1.0 to let F-Droid team build the latest version.
Thanks again for this great app.

Maps are very slow

I implemented a weather map feature, but the OpenWeatherMap tiles are loading very slowly, it can take up to a minute to load. Does anyone know if this is a limitation of the free service, or are their servers under big load now?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.