Git Product home page Git Product logo

inaturalistandroid's Introduction

iNaturalistAndroid https://github.com/inaturalist/iNaturalistAndroid/actions

iNaturalistAndroid is an Android app for iNaturalist.org. If you'd like to contribute code, please check out Contributing Code to iNaturalist for general guidelines. If you'd like to contribute translations, please provide them through our Crowdin project (look for the strings.xml file to work on the Android app).

Setup

  1. Make sure you have the latest Android Studio
  2. Download the iNaturalist source code and extract to a directory of your choosing
  3. Go to iNaturalist/src/main/res/values and copy config.example.xml to config.xml (and change its values to match your GMaps, FB, etc. keys)
  4. Go to iNaturalist/ and copy google-services.example.json to google-services.json. This contains stub values that will allow the app to build but won't connect to Firebase or other Google Services.
  5. From Android Studio: File -> Open -> Choose the root directory of the downloaded source code
  6. Download and install Android NDK
  7. Make sure ANDROID_NDK_HOME environment variable points to the NDK root path.
  8. If on Mac: Make sure the above env variable is passed to Android Studio's gradle system: https://stackoverflow.com/a/30128305/1233767
  9. Clean & build

inaturalistandroid's People

Contributors

axenuli avatar budowski avatar carrieseltzer avatar daniel-mietchen avatar ellis-berry avatar hamiltont avatar jarst avatar jwidness avatar kueda avatar loarie avatar poslovitch avatar reosarevok avatar urk 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

inaturalistandroid's Issues

Username/email signin bug on Android

On the iNat iOS app, the Username field on sign-in can accept either username or email.

On the iNat Android app, the Username field accepts email and appears to use it to properly login, but something is different. For example the Settings page reads 'Signed in as [email protected]' rather than 'Signed in as loarie' and the Syncing/refreshing doesn't work.

I suspect, the app is erroneously populating the username with the email somewhere

This is the turned out to be pbrastow's mystery 'the app is broken' bug. Seems like it is definitely a high priority to fix as it may be effecting a lot of other people.

replace "leave" button with loading / refresh button on project

To match the iOS app, replace the "Leave" button on the project page with a button that shows a loading spinner when the checklist is loading, and a reload icon otherwise. On iOS it looks like

img_4813

Tapping the reload icon should refresh the list from the server.

make flurry optional

You should need to install Flurry to get the app to build, so if possible, let's make it optional.

Searches should be global on Projects and Guides tabs

Clicking Search on the Projects and Guides tab should be global - not restricted to your projects/guides or nearby projects/guides. That is if I click on 'your guides' and see 3 guides: a, b, and c but under search I enter d which is someone else's guide this should get returned. the Search bar should search globally

Should be some way to remove a photo from an observation

The tapping an obs photo in the iPhone app opens a viewer with a little trashcan to disassociate the photo from the obs (see screenshot)
photo 9
This is super useful - would be great to add this feature to the Android app. Might be harder since the Android app is redirecting to an external (photos or gallery) viewer to view the photos...

language choose should show all options, default to system if available

Right now it says "Use device language settings" even if the device's locale is not supported by the app:

20141216_090814

That's confusing for people who see "italiano" chosen but don't actually see any Italian translations. Instead I think it should just list all the locales we do support, with the system locale selected by default. Thoughts?

remove project lists

Replace all project detail view with just the join button, description, icon, and an "add to project" button that shows the new observation view with the project selected. Not sure if this also means clearing out local data.

Updating to stay current with iOS app

Hey,

In a separate email Scott mentioned that there is some work to do to get the Android app up to date with changes in the iOS app. Opening this issue to start the conversation as I'd be happy to help! Will work on a version for Minnesota Master Naturalists at some point.

Thanks!

Add ability to share images from the gallery as observations

I think it would be nice if iNaturalist showed up under the "share" menu in the Gallery as a way to initiate a new observation. Ideally, this would allow multiple images to be selected and added to an observation in a single share.

Unless someone else is really keen on adding this functionality, I'd be happy to take a pass at coding it myself. That being said, I haven't done any Android development and might need some guidance regarding the Android APIs (I have tons of Java experience, just not Android).

Just from some preliminary searching, it looks like I may need to implement a ShareActionProvider and/or an Intent.

Bug in dissapearing Sync button when photo sync interrupted

When observations or observation photos are available to sync, there should be a flag such as the 'Sync 1 observations' displayed on the observations tab in the screen capture below:
screenshot_2015-04-22-16-44-59
However when sync is interrupted, this flag disappears even though there is unsynced content as shown here
screenshot_2015-04-22-16-34-54
the sync indicators which are using the device tools via the little iNat bird icons in the top menu are also fairly inconspicuous and misleadingly labeled
screenshot_2015-04-22-16-35-02

crash when joining a project

When signed into the app, find a project that you haven't joined. Tap join, and await the crash. Stack trace

java.lang.NullPointerException
at org.inaturalist.android.INaturalistService.request(INaturalistService.java:1430)
at org.inaturalist.android.INaturalistService.post(INaturalistService.java:1329)
at org.inaturalist.android.INaturalistService.joinProject(INaturalistService.java:994)
at org.inaturalist.android.INaturalistService.onHandleIntent(INaturalistService.java:347)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)

Details:

Application version

1.3.6
2
Android version

Android 4.4
2
Device

Brigadier (E6782)
1

Nexus 5 (hammerhead)

Minor changes to top bar

  1. Remove iNat bird icon from top bar throughout, e.g. Edit Observations from:

screen shot 2015-01-29 at 7 28 16 pm

to:

screen shot 2015-01-29 at 7 27 00 pm

  1. Remove 'iNaturalist' text from top bar throughout, e.g. Observation from:

screen shot 2015-01-29 at 7 28 22 pm

to:

screen shot 2015-01-29 at 7 26 55 pm

  1. Remove '...' from Observations as in above images

Can photopicker this be internationalized

'Select Source' below is in English - would this be internationalized in the Device or the app? Likewise, where do the 'Camera' and 'Documentos' translations come from?
screenshot_2015-06-09-12-34-26

Menu buttons inactive

Problem with 1.3.15

  1. Open app
  2. Go to settings
  3. Switch to NaturaLista (redirects to Observations)
  4. Return to settings
  5. Try to navigate to other page (observations, guides, projects) menu buttons are inactive

'Reset Key' and 'Recommended next step' buttons for Guide tags

Kew is interested in using Guide tags as keys and one of the things they've requested are tools for easily reseting the tags (e.g. turning off all filters) and for navigating the user to the 'Recommended next step'

The 'Recommended next step' is calculated based on the tag choice that would maximumly discriminate the remaining set of taxa. Proceeding through these tags using the recommended steps simulates navigating through a dichotomous key

I assume the logic for these would be implemented client side on Android?
screen shot 2015-04-30 at 11 33 47 am

Add lockscreen widget (Android 4.2+)

Add a lockscreen widget to enable one-click "Take photo and add observation". This is helpful to take more elusive photographs, rather than:

  1. Unlock phone
  2. Tap: Add observation
  3. Tap: Add photo

This functionality would be similar to the 4.2+ swipe right to engage the camera from the lockscreen.

After the first photo is taken (during which geolocation is taken in the background), the standard interface otherwise applies until "save" is selected, at which point the user is returned to their lockscreen.

If, as a technical matter, after taking the photo the entry can't be added unless the PIN is entered, the photo and geolocation data should be saved and ready to edit in-app after the fact.

Missing a quick way to take-and-tag a photo has been unarguably the primary reason by which I miss photo opportunities for iNaturalist!

Example from stock 4.2.2, swiping right to engage camera:

2013-07-23 23 31 52

Display representative guide photos alongside guide tag values

Kew is interested in using the tags infrastructure on guides as an identification key. I've played with doing that here: http://www.inaturalist.org/guides/1503

On the server, we will allow users to add tags to Guide Photos. Guide Photos with a tag like Present-in-NoCA?=yes* (ie matching one of the guide tag key-values and followed by an *) will indicate that they should be displayed alongside the appropriate tag value in the filter sidebar on the app. For instance, these images could display as modals when clicking on information icons something like this:
screen shot 2015-04-30 at 11 33 47 am

The server side piece of this issue is here
inaturalist/inaturalist#542

crashlytics?

@budowski, is there any chance that crashlytics integration got lost with this latest release?

images failing to sync

A number of people have reported that images occasionally fail to sync (e.g. https://groups.google.com/d/topic/inaturalist/TCjYx_hc_JY/discussion). This exception might be related:

java.lang.NullPointerException
at org.inaturalist.android.ObservationPhoto.<init>(ObservationPhoto.java:164)
at org.inaturalist.android.INaturalistService.postPhotos(INaturalistService.java:761)
at org.inaturalist.android.INaturalistService.syncObservations(INaturalistService.java:379)
at org.inaturalist.android.INaturalistService.onHandleIntent(INaturalistService.java:348)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)

That might mean the photo URI we're storing for the photo points to a photo that no longer exists for some reason, though why that would happen I'm not sure (user deleted photo, user moved photo (?), something else). In the iOS app we actually copy all imported photos into the app's directory, so they're always there regardless of what happens to the original photo, so maybe it's worth adopting that approach here. The downside is bloated disk usage.

Attn @loarie @md5

Sync icon remains after syncing

After syncing observations from the Observations view, the sync icon that is shown on unsynced observations continues to show. I believe this icon should not show after a successful sync. If you go back to the main view and return to the Observations view, the icon goes away.

prompting to use Naturalista

The iNat app is prompting you to use Naturalista on first install, even though language is English, location is San Francisco. Seen on a Galaxy Tab S

screenshot_2015-01-09-13-45-32

show first observation photo by id or position

In places where we only show a single photo for an observation, we should always show the first photo, that is the ObservationPhoto with the lowest position or the lowest id. I think this might only be on the observations list. Currently it looks like we show the last.

Crash when awaking post syncing

This crash is still happening in 1.3.10(21) it generally happens for me after I tap sync and turn my attention away from the device. When I return and wake the device up from sleep, iNaturalist has stopped

Here are the errors on Crashlytics:
https://www.crashlytics.com/inaturalist/android/apps/org.inaturalist.android/issues/54c069a365f8dfea15a8eba7

And GooglePlay:
https://play.google.com/apps/publish/?dev_acc=15421172454815845728#ErrorClusterDetailsPlace:p=org.inaturalist.android&et=CRASH&sh=false&lr=LAST_24_HRS&ecn=java.lang.IllegalStateException&tf=Activity.java&tc=android.app.Activity&tm=performRestart&nid&an&c&s=new_status_desc

...

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.