Git Product home page Git Product logo

gsoc-report's Introduction

GSoC logo

criticalAY - Ashish Yadav
2024
AnkiDroid

Catch me up on

Github | Twitter | LinkedIn

My mentors

David Allison | Shridhar Goel

Project summary

AnkiDroid is a companion Android application for Anki, a flashcards application that helps people learn and memorize a diverse variety of topics.

Instant Add Note Editor & Multimedia UI/UX consisted of

  • Streamlining the process of adding cloze notes to AnkiDroid
  • Improving the app's UI & UX for adding multimdedia [Images/Drawing/Camera/Audio Recordings/Inserting files]
  • Decoupling the app's multimedia handling

Results

Before Instant Note Editor

The user had to copy and paste the text in the app and then create a cloze note or share the copied text to AnkiDroid, which would open the NoteEditor Screen:

After Instant Note Editor

Users can select and share selected text to AnkiDroid. The Instant Note feature helps them create cloze notes without actually opening the app:

Old Multimedia UI

New Multimedia UI

Working

Instant Note Editor

Multimedia UI/UX

How did I do it?

Community Bonding Period

Community Bonding is the initial time that Google gives to be involved in the community and activities that happen within an organization. Since the community was small and I already had been contributing and knew the community, it went very well. I enjoyed it and started my coding during this period so that I could compensate for the time that I wouldn't be active due to my university exams.

Instant Note Editor

During the first phase of the GSoC project, the development of the Instant Note Editor was a key focus. The journey started with establishing foundational elements like design resources and intent filters, followed by creating a preliminary layout for the editor dialog. Over the subsequent weeks, the project saw rapid progress, with significant enhancements to both the user interface and functionality.

Key milestones included implementing ActionMode.Callback for better context menu handling, refining error validation, and migrating business logic to ViewModel for improved state management. A crucial improvement in the user interface was the transition from using EditText with Chip drawables to ChipGroup. Initially, the use of Chip drawables within EditText presented challenges, such as difficulties in interacting with the chips independently and tracking them effectively. This limitation prompted a shift to ChipGroup, which allowed for independent interaction with words and the addition of badges on chips, leading to a more robust and flexible user experience.

The phase culminated in the finalization of the Instant Note Editor, which was then prepared for a controlled release cycle to ensure a polished and user-friendly public rollout.

Multimedia UI/UX

The second phase of the project centered around the development of the Multimedia UI/UX, aiming to enrich the note-taking experience by integrating multimedia elements. The setup of the Multimedia activity marked the beginning of this phase, laying the groundwork for subsequent features. Over the weeks, the multimedia editor evolved to include options for camera and gallery integration, enabling users to seamlessly add images to their notes. The development was methodical, with features being tested and refined in a developer-only environment to ensure stability. As the project neared completion, additional multimedia options like audio recording and drawing were incorporated, further enhancing the user experience. The project was wrapped up with the Multimedia UI/UX being marked ready for public use, ensuring a robust and dynamic addition to the note editor.

Link to pull requests created as a part of GSoC by chronological order

  1. Instant Note Editor to allow adding cloze card
  2. Extract ActionMode.Callback from NoteEditor
  3. Extension method to get cloze field name
  4. Ese field check from backend and display error accordingly
  5. Init: Instant Note Editor Activity
  6. Enhancements: Instant Note Editor Improvements
  7. New Multimedia UI
  8. Enhancement: add long press listener on cloze button
  9. Refactor: cloze builder pattern for words
  10. Refactor: use prefill value in integer dialog
  11. Enable instant editor for public use
  12. Enhacement: add Audio and Video multimedia options
  13. Fix: cloze number incorrect on undo
  14. Refactor: Multimedia options converted to sealed class Closed after discussion
  15. Multimedia UI/UX: Add Drawing & Recording options and set multimedia public
  16. Refactor: vibration methods to use Duration
  17. Refactor: move audio package to multimedia package

Plans after GSoC?

Having successfully fulfilled all the commitments outlined in my GSoC proposal, my focus now shifts towards further enhancing the quality and robustness of the codebase. One critical area that I plan to address is the creation of comprehensive test suites, including both Unit Tests and Android Tests. These tests are essential for ensuring the reliability and stability of the application, and I intend to develop them as part of my ongoing contributions to the project.

My journey with AnkiDroid does not end with the conclusion of GSoC. I am committed to continuing my involvement with the project, and leveraging the experience and knowledge I have gained to make meaningful contributions. By staying actively engaged with the AnkiDroid community, I aim to help maintain and improve the app, ensuring it continues to be a valuable tool for users worldwide.

gsoc-report's People

Contributors

criticalay avatar

Watchers

 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.