dkim0419 / SoundRecorder

A simple sound recording app implementing Material Design
GNU General Public License v3.0
1.49k stars 808 forks source link

Change recording format to M4A #148

Open ChaoticNeutralCzech opened 9 months ago

ChaoticNeutralCzech commented 9 months ago

Issue description

This app stores recordings in the MP4 container, which is perfectly fine for audio. However, the extension is .mp4 and the current version of VLC and built-in video for Android, as well as various other apps that open, process or send media files, expect these files to contain a video track, and its absence makes them treat the file as invalid.

Therefore, I propose a very minor change: the file extension should be .m4a (MPEG-4 Audio). The internal structure of .m4a files is identical to normal MP4's, the only difference is that the extension makes applications expect an audio-only file. This has been supported for many, many years.

Proposed solution

The code contains 5 instances of mp4 in total. Most of them (šŸŸ¢) can just be replaced with m4a. Listed in order of importance:

  1. /app/src/main/java/com/danielkim/soundrecorder/RecordingService.java : 115
    • šŸŸ¢ File extension of newly created recording.
  2. /app/src/main/java/com/danielkim/soundrecorder/adapters/FileViewerAdapter.java : 256
    • šŸŸ¢ Extension appended to text input from rename dialog
  3. /app/src/main/res/layout/dialog_rename_file.xml : 15
    • šŸŸ¢ Rename dialog: text that appears right from textbox
  4. /app/src/main/java/com/danielkim/soundrecorder/adapters/FileViewerAdapter.java : 237
    • āš ļø MIME type of recorded audio when starting player intent, currently audio/mp4. It could work if replaced with audio/x-m4a or audio/m4a; however, I think keeping it as-is is best for compatibility.
  5. /app/src/main/res/layout/fragment_media_playback.xml : 33
    • šŸŸ¢ Placeholder text, replaced before being shown on screen. Replacing with m4a recommended but not neccessary.