Skip to content

qbalsdon/android-ally-plugin

Repository files navigation

Android Ally Plugin (AAP) for Android Studio

The Trello Board will show you the project roadmap, any issues in the GitHub tracker should also be there.

This plugin will only ever support TalkBack for Developers and not any other screen reader without ADB-friendly controls. The code is open source. This includes Google's TalkBack, Samsung's TalkBack, Amazon VoiceView and CSR - unless they add ADB features, in which case they will be given a separate tab. Separation of concerns is the highest priority in this code.

This is in Swing, ew!

Yes it's written in Swing, you are more than welcome to create a Jewel version if you like. The main reasons the project is not using Jetpack Compose yet are:

  1. It's not production ready
  2. Documentation is scarce, I couldn't even create a template project (not that I am all that great, I'm just on a late deadline)
  3. APIs are not settled
  4. Performance concerns: Jetpack Compose is optimised for mobile
  5. Accessibility concerns, Swing is at least old enough for AT to do some tricks

Purpose of the project

  • Encourage developers to make their apps and features accessible
  • Consolidate the Android accessibility services and settings into a simple-to-use interface
  • Increase awareness of different accessibility settings
  • Help developers use either a physical device or emulator
  • Reduce developer context switching while conducting manual tests
  • Lower the barrier to entry in getting comfortable using screen readers

Scope of the project

  • A plugin for Android studio
  • A user interface to various assistive technologies
  • Simple check list for accessibility standards [Future work]

Conduct and Contributing

This plugin was built using the JetBrains IntelliJ Platform SDK. Best practice will be taken as much as possible from that document and SOLID programming principles.

Please ensure you have read and abide by the JetBrains developer code of conduct

PR's will be accepted if

  • You are positively contributing to the source code
  • You can articulate the reasons for your changes
  • Reasonable tests have been written for the feature
  • The PR has screenshots if there are UI changes

PR's will not be accepted if

  • You are rude, discriminatory or demeaning in any way
  • You use object classes or companion objects (find out why)

ADB in more detail

adb shell service list                                      # get system services and interfaces
adb shell dumpsys settings                                  # list all elements of a service (e.g. settings can do any service)
https://cs.android.com/android/platform/superproject/main   # search for interface (no package + ".aidl" suffix)
adb shell service call uimode 6 i32 2                       # call 6th method of IUiModeManager.aidl with int param (can't do java obj params)

Thanks to Chris Simmons and his amazing DroidCon presentation "Exploring Android Internals with ADB"

Signing Locally

Follow the instructions to generate a private key and chain file You'll need to set up 4 environment variables:

export VERSION_NUMBER=[VERSION NUMBER]
export CERTIFICATE_CHAIN=$(cat chain.crt)
export PRIVATE_KEY=$(cat private.pem)
export PRIVATE_KEY_PASSWORD=[YOUR PASSWORD]

And then you can run ./gradlew signPlugin - I have not been successful running this from the IDE, but you're welcome to try.

Using this method you will not be able to upload to the store, but this is how you can test locally.

About

Android Studio Plugin for the Android Ally

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published