GithubHelp home page GithubHelp logo

ebraminio / apps-android-commons Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yuvipanda/apps-android-commons

0.0 2.0 0.0 424 KB

Github mirror of "apps/android/commons" - our actual code is hosted with Gerrit (please see https://www.mediawiki.org/wiki/Developer_access for contributing

License: Apache License 2.0

apps-android-commons's Introduction

The Wikimedia Commons Android App

Build Requirements

  1. Android SDK (Level 15)
  2. Maven

Build Instructions

  1. Set the environment variable ANDROID_HOME to be the path to your Android SDK
  2. Run mvn install to build
  3. Run cd commons && mvn android:deploy to deploy to a device
  4. There is no step 4

Note: Currently uses a bunch of dependencies that are staged at yuvi.in/blog/maven. Will be migrated to either Maven Central or a Wikimedia staging server soon.

Set Up IntelliJ for Commons Android App Development

Import and Compile Commons Android App

Download IntelliJ

  1. Clone the repository.
  2. Open IntelliJ.
  3. Import Project:
    File -> Import Project
    or
    Select 'Import Project' from the Quick Start menu
  4. Navigate to the folder with the cloned repository and press 'OK'.
  5. Select 'Import Project from external model' -> 'Maven' and press 'Next'.
  6. Make sure 'Search for projects recursively' and 'Import Maven projects automatically' are checked. Select 'Next'.
  7. This section needs no modification. Select 'Next'.
  8. This section needs no modification. Select 'Next'.
  9. Make sure the 'Android SDK home path' points to the 'android-sdk' folder. If the dropdown next to 'Java SDK' is empty, hit the '+' button avobe the sidebar and select 'JDK'. Navigate to your jdk folder, select it, and hit 'OK'. Now select the newly added JDK and hit 'Next'.
  10. This section needs no modifications. Select 'Next'.
  11. Select 'Finish'.
  12. After the program opens select 'Make project' - there should be errors.
  13. Near the top of the file that is opened up, one of the offending lines should be "import android.support.v4.app.FragmentActivity;" - put your cursor on that line and hit 'alt'/'option'+'enter' to bring up the AutoFix dialog. Select the 'compatibility' option.
  14. Select 'Make project' again. It should compile successfully.

License

This software is licensed under the Apache License.

Bugs?

This software has no bugs. You can dispute this statement at bugzilla

Code Structure

Key breakdowns:

Activities started within the UI:

  • ContributionsActivity (ContributionsListFragment, MediaDetailPagerFragment, MediaDetailFragment) - main "my uploads" list and detail view
  • LoginActivity - login screen when setting up an account
  • SettingsActivity - settings screen
  • AboutActivity - about screen

Activities receiving intents:

  • ShareActivity (SingleUploadFragment, CategorizationFragment) - handles receiving a file from another app, accepting a title/desc, and slating it for upload
  • MultipleShareActivity (MultipleUploadListFragment, CategorizationFragment) - handles receiving a batch of multiple files from another app, accepting a title/desc, and slating them for upload

Services:

  • WikiAccountAuthenticatorService - authentication service
  • UploadService - performs actual file uploads in background
  • ContributionsSyncService - polls for updated contributions list from server
  • ModificationsSyncService - pushes category additions up to server

Content providers:

  • ContributionsContentProvider - private storage for local copy of user's contribution list
  • ModificationsContentProvider - private storage for pending category and template modifications
  • CategoryContentProvider - private storage for recently used categories

On-Device Storage

Account credentials are encapsulated in an account provider. Currently only one Wikimedia Commons account is supported at a time. (Question: what is the actual storage for credentials?)

Preferences are stored in Android's SharedPreferences.

Information about past and pending uploads is stored in the Contributions content provider, which uses an SQLite database on the backend.

A list of recently-used categories is stored in the Categories content provider, which uses an SQLite database on the backend.

Captured files are not currently stored within the app, but are passed by content: or file: URI from other apps.

Thumbnail images are not currently cached. (?)

apps-android-commons's People

Contributors

atdt avatar bvibber avatar ford-prefect avatar grunny avatar isaacjohnwesley avatar marktraceur avatar mattflaschen avatar nikerabbit avatar prtksxna avatar ragesoss avatar siebrand avatar translatewiki avatar valeriej avatar yuvipanda avatar

Watchers

 avatar  avatar

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.