Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Story] Record and send a voice message #2084

Closed
16 of 25 tasks
Tracked by #2057
jonnyandrew opened this issue Sep 29, 2023 · 8 comments
Closed
16 of 25 tasks
Tracked by #2057

[Story] Record and send a voice message #2084

jonnyandrew opened this issue Sep 29, 2023 · 8 comments
Assignees
Labels
App: ElementX Android App: ElementX iOS T-User Story Team: Element X Feature X-Needs-Signoff Stories and Epics which are ready for review by product, design and QA

Comments

@jonnyandrew
Copy link

jonnyandrew commented Sep 29, 2023

Description

Record and send a voice message.

Acceptance criteria

  • It is behind a feature flag in developer settings
  • Tap and hold to record
  • Release to send (to be enhanced in [Story] Preview a voice message #2104 and [Story] Discard a voice message preview #2105)
  • System microphone permissions dialog displays if necessary
  • Navigating away stops recording
  • Navigating away discards the recording
  • Sent messages are in Opus audio format
  • Messages have a 30 minute maximum length
  • Sending an audio file attachment continues to work as expected
  • It interoperates with classic Element mobile and web apps
  • Files are not exposed through system file managers
  • It works in encrypted and unencrypted rooms
  • We should apply a sleep lock so the phone does not sleep and therefor stop a recording.
  • If a voice message fails to send the normal message retry button should work.
  • Sending a voice message quickly after another one should work.
  • Progress spinner displays while uploading media

Audio format

  • Sample rate: 48kHz
  • Bitrate: 24kbps
  • Mono (single channel)
  • Appropriate complexity and resample quality for the platform.
  • Encoder application: 2048 (voice, default is typically 2049 as audio) (out of scope for Android)

Size estimate

None

Dependencies

No response

Preconditions

No response

Sign-off

Android

  • Design sign-off on completion
  • QA sign-off on completion
  • Product sign-off on completion

iOS

  • Design sign-off on completion
  • QA sign-off on completion
  • Product sign-off on completion

Out of scope

Open questions

No response

Subtasks

Android

  1. julioromano
  2. julioromano
  3. julioromano
  4. julioromano
  5. julioromano
  6. julioromano

iOS

Other

  1. alfogrillo
@langleyd
Copy link
Contributor

Updated acceptance criteria to for a sleep lock during recording to address this bug on the classic app -> element-hq/element-ios#7598

@langleyd
Copy link
Contributor

Updated acceptance criteria to include message retry which was a problem in the classic apps -> element-hq/element-android#8407

@langleyd
Copy link
Contributor

Updated acceptance criteria to include sending a voice message quickly after another, as was reported as a problem int he class apps -> element-hq/element-android#8362

@jonnyandrew
Copy link
Author

Updated acceptance criteria to include message retry which was a problem in the classic apps

This is already included under #2106

sleep lock during recording to address this bug on the classic app -> element-hq/element-ios#7598

It's possible that we are immune to this bug given the tap and hold UX. Should we change the AC to "voice message may be recorded for longer time than screen timeout setting?"

@jonnyandrew
Copy link
Author

I've removed the VOIP encoder application type requirement from scope for Android as it's non-trivial to achieve (see element-hq/libopusencoder-android#4 for details).

@jacotec
Copy link

jacotec commented Oct 23, 2023

I'm missing how to "lock" the recording without the need to keep the recording button pressed all the time. Will it be the "slide up" gesture like in the current Element/IOS?

@jonnyandrew
Copy link
Author

I'm missing how to "lock" the recording without the need to keep the recording button pressed all the time.

The lock mechanism won't be part of this iteration but it might be in a later one (cc @callumu / @VolkerJunginger).

@jonnyandrew
Copy link
Author

@nimau @alfogrillo I've added a checkbox to roughly verify the file sizes we're creating. At 24 kbps, 1 minute of audio should be about 180 kB.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
App: ElementX Android App: ElementX iOS T-User Story Team: Element X Feature X-Needs-Signoff Stories and Epics which are ready for review by product, design and QA
Projects
None yet
Development

No branches or pull requests

7 participants