Skip to content

This repo contains the Google Summer of Code 2024 project report

Notifications You must be signed in to change notification settings

criticalAY/GSoC-Report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

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.

About

This repo contains the Google Summer of Code 2024 project report

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published