Coder Social home page Coder Social logo

openbikesharing's People

Contributors

adriaaah avatar badlop avatar benoitrion avatar bparmentier avatar canerbasaran avatar comradekingu avatar debyos avatar dfacoet avatar eskerda avatar eugenia-russell avatar fabmazz avatar frazzmark avatar gensitu avatar jsmakaayb avatar milotype avatar naofum avatar nathanbnm avatar nautilusx avatar omaraglan avatar pataquets avatar santossi avatar sarojdhakal avatar sebras avatar thesebas avatar trendspotter avatar vistaus avatar weblate avatar xendez avatar xmgz avatar yarons 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

Watchers

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

openbikesharing's Issues

Develop a widget

A widget with the number of slots/available bikes for pre-selected stations would be great, as it would allow one to quickly get the information.

error 'Location not found'

my logcat caught an error 'Location not found' in MapActivity. It seems an error will be thrown when open a map page of a bike station.

Configure widget refresh interval

Currently the refresh interval is set to 30 minutes. This should be customizable and should also depend on the type of connection (Wi-Fi/mobile network).

New provider in Paris

Hi,

The velib provider in Paris changed on January, 1st. It seems OpenBikeSharing is only fetching stations from the previous provider (JCDevaux)) but not the new one. There are some remaining stations from the old provider but all stations should move to the new one in a couple of months.

An official opendata endpoint is available from https://opendata.paris.fr/explore/dataset/velib-disponibilite-en-temps-reel/

It would be awesome to have them in OBS. Let me know if needed, I can help translate the doc if needed. But I can't do much Android coding :/

Thanks!

Call-A-Bike networks data retrieval error

All Call-A-Bike networks, for example Berlin or Munich, are not working with version 1.7.2. When selected, trying to refresh the stations lists results in a toast message saying "Error retrieving data".

colour stations on map according to bike availbility/free parking

To visually filter out more easily the stations on the map when looking for a bike or a parking space, it would be very nice to have the bike logos that represent the stations have a colour code.

For example (just an idea, clearly):
red: the station has no free bikes, no free spaces (ie: the station is out of order, basically)
green: the station has free bikes, free spaces
grey: the station has free bikes, no spaces (can happen even when the station is not actually full of bikes)
brown: the station has no free bikes, but has free spaces

I realise these colours are probably not the best, especially the grey and brown ones.

Another option is to use the bike logo in two-halves, ie: front wheel of the bike represents bike availability, back wheel represents free spaces.
Green front wheel, red back wheel: bikes available, no free spaces.
etc.

Last suggestion (I'm on a roll!), the colours could also be a gradient according to the number of free bikes on total number of bikes, and/or free spaces on total number of spaces.
Probably not very relevant info, but still a possibility.

Hope this helps!

Warn user if data is older than some period

Sometimes it happens I see there are available bikes, but then I see that the last update is 24 hours old. This confuses me.

The app should at least warn me or autoupdate the bike data.

Keep zoom on map while rotating the screen

Is it possible? i noticed today that after rotating the screen the map starts to re-draw in the default position and zoom level. Can they be kept after the rotation?

Configurable Citybikes api URL

Since https://github.com/eskerda/PyBikes looks like is stale, no pull request responses for more than month and biking season is "almost over" I can't wait any longer for merging my pull requests (added 11 Polish bike networks), maybe that's good idea to allow customize API url in app settings. I'm ready to fork and setup own API server (with new networks added) but don't want to fork and maintain this app :).

Swipe down to refresh

This would eliminate one button from the upper bar and I think that swipe to refresh is pretty self-explaining nowadays.

Make star and paper bin available in favourites view

For example:

  • Long press a station in the list of all stations: Star appears in upper bar so that you can add it to the favourites list.
  • Long press a station in the favourites list: Paper bin appears in the upper bar so that you can delete it from the list.

Group favorite by folders/tags

A nice feature would be to group favorite station by folders/tags : one folder with favorite station near home, one near work, …

Problems about JSONDownloadTask

The inner class JSONDownloadTask defined in

  1. be.brunoparmentier.openbikesharing.app.activities.BikeNetworksListActivity
  2. be.brunoparmentier.openbikesharing.app.activities.StationsListActivity
    holds strong reference to the Activity which can lead to memory leak.
    I think we should change JSONDownloadTask to an static class or outter class.

Besides, the instance of JSONDownloadTask is not cancelled, which can lead to result loss. I think the instance of JSONDownloadTask should be cancelled before the Activity is destroyed.

Favorites disappearing

When I launch the app, sometimes on the startup data refresh the favorites disappear. This has happened twice to me already, I'm using cyanogenmod 13 (Android 6.0.1).
Does anyone has the same issue?

Use an external platform to manage translations

It will be easier for non-developers to contribute translations if using an external platform.

Weblate seems interesting. It is free software and does offer hosting solution for FOSS projects (sent them a request a week ago, but still no answer though).

Favorite view : also show nearby/all stations

When viewing a favorite (the "map" view), it would be great to also see the stations near that favorite (or maybe all the stations).
The rationale behind this is, when I'm going to a favorite and the station is full, I would like to have a quick way of determining fallback stations.

(oh, and by the way, thanks for this app, I use it almost daily)

Misuse of AsyncTask

According to our research, there are misuses about the following AsyncTask class:
( tkj.android.homecontrol.mythmote. GestureBuilderActivity.BikeNetworksListActivity)

//……
new JSONDownloadTask().execute(apiUrl);
//……
private class JSONDownloadTask extends AsyncTask<String, Void, String>

The problems are:

  1. It is inner class. It holds strong reference to the GUI element of Activity( BikeNetworksListActivity ), which can lead to memory leak when the Activity is destroyed and the AsyncTask did not finish.
  2. Its instances are not cancelled before the Activity is destroyed, which can lead to the wrong invocation of onPostExecute.
  3. Its instance should be cancelled before the Activity is destroyed. But in the doInBackground method there are for or while loops without the call of isCancelled() . These loops may not be able to terminate when the task is cancelled. This will cause waste of resources or even flashback.

I think we can make following changes to fix the misuse problems:

  1. I think the GUI-related fields should be wrapped into WeakReference. Take
    private final BikeNetworksListActivity _context as example, it can be changed to private final WeakReference<BikeNetworksListActivity> _context.
  2. Define JSONDownloadTask instance as a field instead of a local. Invoke cancel() in the onDestroy() method of Activities or Fragments.
  3. Every loop should check the status of AsyncTask to break the loop.
while(condition1){
     if(isCancelled()){
          break;
     }
     //blablabla…
     while(condition2){
         if(isCancelled()){
              break;
         }
         //blablabla…
     }
}

These are my suggestions above, thank you.

If the device has been rotated in the welcome interface, the all stations list cannot be displayed

Describe the bug
If the device has been rotated in the welcome interface, the all stations list cannot be displayed

To Reproduce
Steps to reproduce the behavior:

  1. Install OpenBikeSharing and open app
  2. rotate the screen
  3. Click on "OK"
  4. Chose any network (Albacete (ES) for me)
  5. Click on "ALL STATIONS"
  6. Prompt "NO STATION"

Expected behavior
Should show the station list

Smartphone (please complete the following information):

  • Device: Galaxy A6s
  • OS: Android 7.1.2
  • Version: 1.10.0

Additional context
Add any other context about the problem here.
ezgif com-video-to-gif (14)

New logo design for the project

Hello! I want to contribute on your project with making logo design. What do you think about it? It can be logotype . If you interested we can talk about design choices. I am waiting your feedback! 😀

Best Regards,
Arslan Şahin
Graphics Designer

Cannot compile after fork

I forked the repository and tried to compile the app. After a few failed attempts because of the missing android-support, I was finally able to compile it, but when I ran it in the emulator it crashed.
Seems like it's trying to resume an app on first run, which is obviously not possible.
Here are the adb logs

06-05 06:27:29.366    2011-2011/be.brunoparmentier.openbikesharing.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: be.brunoparmentier.openbikesharing.app, PID: 2011
    java.lang.RuntimeException: Unable to resume activity {be.brunoparmentier.openbikesharing.app/be.brunoparmentier.openbikesharing.app.activities.StationsListActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2774)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at be.brunoparmentier.openbikesharing.app.activities.StationsListActivity.onResume(StationsListActivity.java:179)
            at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
            at android.app.Activity.performResume(Activity.java:5310)
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2764)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

Use mavenCentral for sl4j

sl4j seems to be available via mavenCentral as 'org.slf4j:slf4j-simple:1.7.7' and 'org.slf4j:slf4j-api:1.7.7' -- why not use these?

Is this still actively developed?

Hi there,

I'm hochi from the next-companion project which is also available via F-Droid. We'd like to depend on your app for the map and station finding process. Is this thing still active or are we better off if we're simply forking it?

For us, the standard tiles were not working (tested on two devices). I know there's #51 for this.

Target Android API level 25

OpenBikeSharing is currently targeting API 22. We should consider moving to API 25.

This implies switching to the new runtime permissions model.

make it easier to donate via bitcoin in the app itself

It could be handy to have a link in the about menu (or a donate item in the settings menu) to make easy bitcoin donations. Something that would automatically open the installed wallet, ideally.

Right now, one has to go to your website, copy the bitcoin address and then paste it in the wallet of choice.
Making it easier would diminish the friction to make donations ;)

Aggregate Trento (IT) networks or add the ability to open more networks at once

First time user here, sorry if it's already been asked (I couldn't find any info on that).
In the city where I live (Trento, Italy) there is a bike sharing network that works across few towns (Trento, Lavis, San Michele All'adige, Mezzolombardo, Mezzocorona) that are listed as separate networks (e.motion for Trento and Bicincittà for the others).

I think they should be listed as a single network because I can pick/park a bike in any station of these towns.

Regardless, it could be a good thing to be able to select multiple networks, even if they don't talk to each other (i.e. if I'm commuting by bus/train between two towns that have different bike sharing networks but I use both of them locally).

Keep up the good work!

Error retrieving data

Haven't checked OpenBikeSharing for some weeks now and it worked like a charm before.
But now I get "Error retrieving data" when I try to update the list of all stations or go to settings "Choose a network".

However, the data from Mapnik is received as expected in the app.

I am using version 1.9.2.

Choose main tab

I think it should be a good idea to let the user choose which tab to open on start. Like, I don't have any GPS, so the nearby tab is useless, I would like to see the favorites first.

Free Floating Bike Shares

In Vienna we have two new free floating systems (ofo, obike). Please add those because it's a great enhancement of available bikes.

When the app can't locate the current location due to the lack of permission, a wrong prompt will be given

Describe the bug
When the app can't locate the current location due to the lack of permission, a wrong prompt will be given.

To Reproduce
Steps to reproduce the behavior:

  1. install openbikesharing and open app
  2. click the map icon in the upper right corner
  3. click the positioning icon in the upper right corner
  4. prompt "location not found"

Expected behavior
Location permission should be requested.

Smartphone (please complete the following information):

  • Device: HUAWEI nova 5 pro
  • OS: HarmonyOS 2.0.0
  • Version: 1.10.0

Additional context
Add any other context about the problem here.
ezgif com-gif-maker (3)

Allow tabs re-ordering

Instead of choosing a default tab (as done in commit cabb5db), we could let the user re-order them (and, why not, remove/add tabs).

The way I see it now is by adding a list in the settings with "drag-and-droppable" items.

Mapnik tiles are blank

A few weeks ago, the Mapnik background tiles started showing up blank. I preferred Mapnik over the other two map layer choices because they also have problems. The OpenCycleMap view is stamped with API Key Required, and the OSMPublicTransport map shows only the public transportation lines without any other features.

See below for current examples of all three map layers in downtown Vancouver, British Columbia, Canada.

Mapnik OpenCycleMap OSMPublicTransport
Mapnik view OpenCycleMap view OSMPublicTransport view

Hard to read maps (Mapnik)

The maps are extremely hard to read, which makes it sometimes really hard to properly orient oneself and navigate to the next station - Therefore, if possible, I think one would need to...

  • increase the description texts (like street names, etc.)
  • allow for a higher zoom level (the example below is the highest zoom available)

Example:
screenshot

Use material design to match design of other Android apps

Functionality wise I think the app is fine, but I think it could benefit greatly from using Material Design.

Matching the design of other Android apps will make it easier to use, especially for new users. It's also simply prettier and I think aesthetics is an important factor for users when they decide to try / keep using an app.

I'm happy to help with this if there is interest. I have front-end experience though not for apps. Would be a nice project to learn though.

Regular & electric bike

Here in Paris we have now 2 types of velib. One is electric and the other one is a regular one.
On the OpenBikeSharing app we just have the number of bikes available at the station, we don't know the type of bike available.

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.