* MicRecorderAPI: allow duration limit to be disabled with zero or negative
* MicRecorderAPI: avoid unnecessary MediaRecorder parameter in RecorderCommandHandler.handle()
* MicRecorderAPI: allow encoder and format to be set by user
All supported encoders can be set with their names. Unless a format
is set explicitly with its corresponding integer, a suitable format
would be chosen automatically for the chosen encoder.
* MicRecorderAPI: allow AudioSource to be set by user
Just in case, so it can only be set with the source's corresponding
integer.
* MicRecorderAPI: allow bit rate, sampling rate and number of channels to be set by user
* MicRecorderAPI: a couple of fixes
Have year before month and day in the default file name for better
sorting. Also fix the extension name in it for automatic format
selection. As we want the file to have extension name by default,
we have to pick a default format/encoder. AAC is chosen because it
is probably the most compatible one among different platforms.
* MicRecorderAPI: replace all getAbsoluteFile() with getAbsolutePath()
None of them were used in places where it should be a File.
* MicRecorderAPI: properly report unlimited MaxDuration
* MicRecorderAPI: make sure the recorder is released when not used
* MicRecorderAPI: remove aac_eld/he_aac/vorbis support
They are at least problematic on my phone. They either fail to work
or crash the API app. Sometimes the crash is even unrecoverable.
* Changed provider to scope to all messages. Future update should be able to provide a flag on which scope the user would like to request. All, Sent, Draft, Inbox, Outbox
* Add ability to specify the type of message to query for
If termux-dialog is called while Termux already has a dialog open, the new dialog fails to open and the command will hang until it is manually terminated. This fix allows multiple dialogs to be open at once, ensuring that termux-dialog will not hang.
* AudioAPI: simplify code
* AudioAPI: remove volume info
Redundunt with the introduction of VolumeAPI
* AudioAPI: remove PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED
It does not seem to have a point for us to get this property as
it is not very clear what it actually reflects.
We have not been getting PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND and
PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND either.
In fact, properties from getProperty() tend to be rather useless.
PROPERTY_OUTPUT_FRAMES_PER_BUFFER and PROPERTY_OUTPUT_SAMPLE_RATE
are kept only to show that, they should NOT be used to optimize
any player in audio output, as they do not change as per the
current sink, not like the values from the AudioTrack methods do.
* AudioAPI: order output
* AudioAPI: check info in PERFORMANCE_MODE_POWER_SAVING
When setPerformanceMode was introduced in Android O, it was
introduced with three possible modes, namely:
PERFORMANCE_MODE_NONE (default)
PERFORMANCE_MODE_LOW_LATENCY
PERFORMANCE_MODE_POWER_SAVING
While PERFORMANCE_MODE_NONE essentially causes tracks to be routed
to the deep buffer mixer path on my phone (as
PERFORMANCE_MODE_POWER_SAVING does), it may not be the case on
every single device.
Therefore, check info with track in PERFORMANCE_MODE_POWER_SAVING,
compare it against that of the default PERFORMANCE_MODE_NONE, and
print it out if they are not the same.
Note: shouldEnablePowerSaving for PERFORMANCE_MODE_NONE always
returns false for SAMPLE_RATE_UNSPECIFIED as of the current
AudioTrack.java.