A player/ recorder visualizer with the swipe to seek functionality.

Overview

iiVisu

Android Arsenal

A player/ recorder visualizer with the swipe to seek functionality.

Demo

Setup

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Step 2. Add the dependency

dependencies {
  implementation 'com.github.imnirdst:iivisu:1.1.0'
}

Usage

This repository contains a sample app that shows how to use iiVisu.

Recorder

RecorderVisualizer doesn't support swipe to seek functionality.

<com.imn.iivisu.RecorderVisualizer
    android:id="@+id/visualizer"
    android:layout_width="0dp"
    android:layout_height="256dp"
    app:maxAmp="100"
    app:barWidth="3dp"
    app:spaceBetweenBar="2dp"
    app:loadedBarPrimeColor="@color/primaryLight"
    app:backgroundBarPrimeColor="@color/gray"
    app:layout_constraintBottom_toTopOf="@id/timeline_text_view"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />
visualizer.ampNormalizer = { sqrt(it.toFloat()).toInt() }

recorder.apply {
    onStop = { visualizer.clear() }
    onAmpListener = {
        runOnUiThread {
            visualizer.addAmp(it)
        }
    }
}

Player

<com.imn.iivisu.PlayerVisualizer
    android:id="@+id/visualizer"
    android:layout_width="0dp"
    android:layout_height="256dp"
    app:barWidth="3dp"
    app:spaceBetweenBar="2dp"
    app:approximateBarDuration="50"
    app:loadedBarPrimeColor="@color/primaryLight"
    app:backgroundBarPrimeColor="@color/gray"
    app:layout_constraintBottom_toTopOf="@id/timeline_text_view"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />
visualizer.apply {
    onStartSeeking = { player.pause() }
    onSeeking = { timelineTextView.text = it.formatAsTime() }
    onFinishedSeeking = { time, isPlayingBefore ->
        player.seekTo(time)
        if (isPlayingBefore) {
            player.resume()
        }
    onAnimateToPositionFinished = { time, isPlaying ->
            player.seekTo(time)
        }
    }
}

visualizer.ampNormalizer = { sqrt(it.toFloat()).toInt() }

player.onProgress = { time, isPlaying ->
    visualizer.updateTime(time.toInt(), isPlaying)
}

Documentation

  • maxAmp: Maximum amp that you expected to receive from the mic. Amps with higher than maxAmp are shown as a full height bar. This is calculated automatically in the PlayerVisualizer.

  • barWidth: Width of each bar.

  • spaceBetweenBar: Space between each bar.

  • approximateBarDuration: Defines approximate duration of each bar. The exact duration of each bar is calculated and stored in the barDuration variable.

  • loadedBarPrimeColor: Defines loaded bar color.

  • backgroundBarPrimeColor: Defines background (unloaded) bar color.

  • ampNormalizer: Receives a lambda method for normalizing amps. (for better visualization)

  • addAmp: Used for adding an amp to RecorderVisualizer and its bar gets drawn Immediately.

  • updateTime: Used for updating PlayerVisualizer timeline to specified location. isPlaying param is used for defining behaviour of onFinishedSeeking callback.

  • onStartSeeking : Receives a callback for the action needed to happen when seeking starts.

  • onSeeking : Receives a callback for the action needed to happen during the seeking process and contains current time position of the visualizer.

  • onFinishedSeeking: Receives a callback for the action needed to happen after the seeking finishes and contains time position of the visualizer and a variable for deciding whether you need to resume player after seeking or not.

  • seekOver(amount): Moves visualizer's cursor amount ahead/back and notifies using onAnimateToPositionFinished callback.

  • seekTo(position): Moves visualizer's cursor to position and notifies using onAnimateToPositionFinished callback.

  • onAnimateToPositionFinished: Receives a callback for the action needed to happen after the moving to position finishes and contains time position of the visualizer and a variable for deciding whether you need to resume player after seeking or not.

License

MIT. See the LICENSE file for details.

Comments
  • Java example???

    Java example???

    Hi, I am currently using WaveRecorder for capturing audio files on the app but how would we use your library on a Java environment to listen in on the amp? Thanks

    opened by diaconori 2
  • Bump gradle from 7.0.3 to 7.3.0

    Bump gradle from 7.0.3 to 7.3.0

    Bumps gradle from 7.0.3 to 7.3.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump appcompat from 1.3.0 to 1.5.0

    Bump appcompat from 1.3.0 to 1.5.0

    Bumps appcompat from 1.3.0 to 1.5.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.0.3 to 7.2.2

    Bump gradle from 7.0.3 to 7.2.2

    Bumps gradle from 7.0.3 to 7.2.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump exoplayer-core from 2.14.0 to 2.18.1

    Bump exoplayer-core from 2.14.0 to 2.18.1

    Bumps exoplayer-core from 2.14.0 to 2.18.1.

    Release notes

    Sourced from exoplayer-core's releases.

    r2.18.1

    This release corresponds to the AndroidX media3 1.0.0-beta02 release.

    • Core library:
      • Ensure that changing the ShuffleOrder with ExoPlayer.setShuffleOrder results in a call to Player.Listener#onTimelineChanged with reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED (#9889).
      • For progressive media, only include selected tracks in buffered position (#10361).
      • Allow custom logger for all ExoPlayer log output (#9752).
      • Fix implementation of setDataSourceFactory in DefaultMediaSourceFactory, which was non-functional in some cases (#116).
    • Extractors:
      • Fix parsing of H265 short term reference picture sets (#10316).
      • Fix parsing of bitrates from esds boxes (#10381).
    • DASH:
      • Parse ClearKey license URL from manifests (#10246).
    • UI:
      • Ensure TalkBack announces the currently active speed option in the playback controls menu (#10298).
    • RTSP:
      • Add VP8 fragmented packet handling (#110).
    • Leanback extension:
      • Listen to playWhenReady changes in LeanbackAdapter (10420).
    • Cast:
      • Use the MediaItem that has been passed to the playlist methods as Window.mediaItem in CastTimeline (#25, #8212).
      • Support Player.getMetadata() and Listener.onMediaMetadataChanged() with CastPlayer (#25).

    r2.18.0

    This release corresponds to the AndroidX media3 1.0.0-beta01 release.

    • Core library:
      • Enable support for Android platform diagnostics via MediaMetricsManager. ExoPlayer will forward playback events and performance data to the platform, which helps to provide system performance and debugging information on the device. This data may also be collected by Google if sharing usage and diagnostics data is enabled by the user of the device. Apps can opt-out of contributing to platform diagnostics for ExoPlayer with ExoPlayer.Builder.setUsePlatformDiagnostics(false).
      • Fix bug that tracks are reset too often when using MergingMediaSource, for example when side-loading subtitles and changing the selected subtitle mid-playback (#10248).
      • Stop detecting 5G-NSA network type on API 29 and 30. These playbacks will assume a 4G network.
      • Disallow passing null to MediaSource.Factory.setDrmSessionManagerProvider and MediaSource.Factory.setLoadErrorHandlingPolicy. Instances of DefaultDrmSessionManagerProvider and DefaultLoadErrorHandlingPolicy can be passed explicitly if required.
      • Add MediaItem.RequestMetadata to represent metadata needed to play media when the exact LocalConfiguration is not known. Also remove MediaMetadata.mediaUrl as this is now included in RequestMetadata.
      • Add Player.Command.COMMAND_SET_MEDIA_ITEM to enable players to allow setting a single item.
    • Track selection:
      • Flatten TrackSelectionOverrides class into TrackSelectionParameters, and promote TrackSelectionOverride to a top level class.
      • Rename TracksInfo to Tracks and TracksInfo.TrackGroupInfo to Tracks.Group. Player.getCurrentTracksInfo and Player.Listener.onTracksInfoChanged have also been renamed to Player.getCurrentTracks and Player.Listener.onTracksChanged. This includes 'un-deprecating' the Player.Listener.onTracksChanged method name, but with different parameter types.
      • Change DefaultTrackSelector.buildUponParameters and DefaultTrackSelector.Parameters.buildUpon to return DefaultTrackSelector.Parameters.Builder instead of the deprecated DefaultTrackSelector.ParametersBuilder.
      • Add DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities which is enabled by default. When enabled, the DefaultTrackSelector will prefer audio tracks whose channel count does not exceed the device output capabilities. On handheld devices, the DefaultTrackSelector will prefer stereo/mono over multichannel audio formats, unless the multichannel format can be Spatialized (Android 12L+) or is a Dolby surround sound format. In addition, on devices that support audio spatialization, the DefaultTrackSelector will monitor for changes in the Spatializer properties and trigger a new track selection upon these. Devices with a television UI mode are excluded from these constraints and the format with the highest channel count will be preferred. To enable this feature, the DefaultTrackSelector instance must be constructed with a Context.
    • Video:
      • Rename DummySurface to PlaceholderSurface.
      • Add AV1 support to the MediaCodecVideoRenderer.getCodecMaxInputSize.
    • Audio:
      • Use LG AC3 audio decoder advertising non-standard MIME type.
      • Change the return type of AudioAttributes.getAudioAttributesV21() from android.media.AudioAttributes to a new AudioAttributesV21 wrapper class, to prevent slow ART verification on API < 21.
      • Query the platform (API 29+) or assume the audio encoding channel count for audio passthrough when the format audio channel count is unset, which occurs with HLS chunkless preparation (10204).
      • Configure AudioTrack with channel mask AudioFormat.CHANNEL_OUT_7POINT1POINT4 if the decoder outputs 12 channel PCM audio (#10322.
    • DRM
      • Ensure the DRM session is always correctly updated when seeking immediately after a format change (10274).
    • Text:
      • Change Player.getCurrentCues() to return CueGroup instead of List<Cue>.

    ... (truncated)

    Changelog

    Sourced from exoplayer-core's changelog.

    2.18.1 (2022-07-21)

    This release corresponds to the AndroidX media3 1.0.0-beta02 release.

    • Core library:
      • Ensure that changing the ShuffleOrder with ExoPlayer.setShuffleOrder results in a call to Player.Listener#onTimelineChanged with reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED (#9889).
      • For progressive media, only include selected tracks in buffered position (#10361).
      • Allow custom logger for all ExoPlayer log output (#9752).
      • Fix implementation of setDataSourceFactory in DefaultMediaSourceFactory, which was non-functional in some cases (#116).
    • Extractors:
      • Fix parsing of H265 short term reference picture sets (#10316).
      • Fix parsing of bitrates from esds boxes (#10381).
    • DASH:
      • Parse ClearKey license URL from manifests (#10246).
    • UI:
      • Ensure TalkBack announces the currently active speed option in the playback controls menu (#10298).
    • RTSP:
      • Add VP8 fragmented packet handling (#110).
    • Leanback extension:
      • Listen to playWhenReady changes in LeanbackAdapter (10420).
    • Cast:
      • Use the MediaItem that has been passed to the playlist methods as Window.mediaItem in CastTimeline (#25, #8212).
      • Support Player.getMetadata() and Listener.onMediaMetadataChanged() with CastPlayer (#25).

    2.18.0 (2022-06-16)

    This release corresponds to the AndroidX media3 1.0.0-beta01 release.

    • Core library:
      • Enable support for Android platform diagnostics via

    ... (truncated)

    Commits
    • ab4d37f Merge pull request #10443 from google/dev-v2-r2.18.1
    • 1a650f2 Modify release date for 2.18.1 and media3:1.0.0-beta02
    • d24163c Update JavaDoc for 2.18.1
    • 064bbbf Version bump to exoplayer:2.18.1 and media3:1.0.0-beta02
    • b82be04 Fix setDataSourceFactory handling in DefaultMediaSourceFactory
    • 77a3b16 Merge pull request #10185 from TiVo:p-custom-logger
    • 9b7674a Add migration script
    • 268de23 Don't set the tag in CastTimeline
    • 344ac7b Merge pull request #110 from ittiam-systems:rtp_vp8_test
    • 6abbb49 Enable onMediaMetadataChanged in CastPlayer
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump lifecycle-runtime-ktx from 2.3.1 to 2.5.0

    Bump lifecycle-runtime-ktx from 2.3.1 to 2.5.0

    Bumps lifecycle-runtime-ktx from 2.3.1 to 2.5.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump exoplayer-core from 2.14.0 to 2.18.0

    Bump exoplayer-core from 2.14.0 to 2.18.0

    Bumps exoplayer-core from 2.14.0 to 2.18.0.

    Release notes

    Sourced from exoplayer-core's releases.

    r2.18.0

    This release corresponds to the AndroidX media3 1.0.0-beta01 release.

    • Core library:
      • Enable support for Android platform diagnostics via MediaMetricsManager. ExoPlayer will forward playback events and performance data to the platform, which helps to provide system performance and debugging information on the device. This data may also be collected by Google if sharing usage and diagnostics data is enabled by the user of the device. Apps can opt-out of contributing to platform diagnostics for ExoPlayer with ExoPlayer.Builder.setUsePlatformDiagnostics(false).
      • Fix bug that tracks are reset too often when using MergingMediaSource, for example when side-loading subtitles and changing the selected subtitle mid-playback (#10248).
      • Stop detecting 5G-NSA network type on API 29 and 30. These playbacks will assume a 4G network.
      • Disallow passing null to MediaSource.Factory.setDrmSessionManagerProvider and MediaSource.Factory.setLoadErrorHandlingPolicy. Instances of DefaultDrmSessionManagerProvider and DefaultLoadErrorHandlingPolicy can be passed explicitly if required.
      • Add MediaItem.RequestMetadata to represent metadata needed to play media when the exact LocalConfiguration is not known. Also remove MediaMetadata.mediaUrl as this is now included in RequestMetadata.
      • Add Player.Command.COMMAND_SET_MEDIA_ITEM to enable players to allow setting a single item.
    • Track selection:
      • Flatten TrackSelectionOverrides class into TrackSelectionParameters, and promote TrackSelectionOverride to a top level class.
      • Rename TracksInfo to Tracks and TracksInfo.TrackGroupInfo to Tracks.Group. Player.getCurrentTracksInfo and Player.Listener.onTracksInfoChanged have also been renamed to Player.getCurrentTracks and Player.Listener.onTracksChanged.
      • Change DefaultTrackSelector.buildUponParameters and DefaultTrackSelector.Parameters.buildUpon to return DefaultTrackSelector.Parameters.Builder instead of the deprecated DefaultTrackSelector.ParametersBuilder.
      • Add DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities which is enabled by default. When enabled, the DefaultTrackSelector will prefer audio tracks whose channel count does not exceed the device output capabilities. On handheld devices, the DefaultTrackSelector will prefer stereo/mono over multichannel audio formats, unless the multichannel format can be Spatialized (Android 12L+) or is a Dolby surround sound format. In addition, on devices that support audio spatialization, the DefaultTrackSelector will monitor for changes in the Spatializer properties and trigger a new track selection upon these. Devices with a television UI mode are excluded from these constraints and the format with the highest channel count will be preferred. To enable this feature, the DefaultTrackSelector instance must be constructed with a Context.
    • Video:
      • Rename DummySurface to PlaceholderSurface.
      • Add AV1 support to the MediaCodecVideoRenderer.getCodecMaxInputSize.
    • Audio:
      • Use LG AC3 audio decoder advertising non-standard MIME type.
      • Change the return type of AudioAttributes.getAudioAttributesV21() from android.media.AudioAttributes to a new AudioAttributesV21 wrapper class, to prevent slow ART verification on API < 21.
      • Query the platform (API 29+) or assume the audio encoding channel count for audio passthrough when the format audio channel count is unset, which occurs with HLS chunkless preparation (10204).
      • Configure AudioTrack with channel mask AudioFormat.CHANNEL_OUT_7POINT1POINT4 if the decoder outputs 12 channel PCM audio (#10322.
    • DRM
      • Ensure the DRM session is always correctly updated when seeking immediately after a format change (10274).
    • Text:
      • Change Player.getCurrentCues() to return CueGroup instead of List<Cue>.
      • SSA: Support OutlineColour style setting when BorderStyle == 3 (i.e. OutlineColour sets the background of the cue) (#8435).
      • CEA-708: Parse data into multiple service blocks and ignore blocks not associated with the currently selected service number.
      • Remove RawCcExtractor, which was only used to handle a Google-internal subtitle format.
    • Extractors:
      • Matroska: Parse DiscardPadding for Opus tracks.
      • MP4: Parse bitrates from esds boxes.
      • Ogg: Allow duplicate Opus ID and comment headers (#10038).
    • UI:
      • Fix delivery of events to OnClickListeners set on StyledPlayerView and PlayerView, in the case that useController=false (#9605). Also fix delivery of events to OnLongClickListener for all view configurations.
      • Fix incorrectly treating a sequence of touch events that exit the bounds of StyledPlayerView and PlayerView before ACTION_UP as a click (#9861).
      • Fix PlayerView accessibility issue where tapping might toggle playback rather than hiding the controls (#8627).
      • Rewrite TrackSelectionView and TrackSelectionDialogBuilder to work with the Player interface rather than ExoPlayer. This allows the views to be used with other Player implementations, and removes the dependency from the UI module to the ExoPlayer module. This is a breaking change.
      • Don't show forced text tracks in the PlayerView track selector, and keep a suitable forced text track selected if "None" is selected (#9432).
    • DASH:
      • Parse channel count from DTS AudioChannelConfiguration elements. This re-enables audio passthrough for DTS streams (#10159).
      • Disallow passing null to DashMediaSource.Factory.setCompositeSequenceableLoaderFactory. Instances of DefaultCompositeSequenceableLoaderFactory can be passed explicitly if required.
    • HLS:
      • Fallback to chunkful preparation if the playlist CODECS attribute does not contain the audio codec (#10065).
      • Disallow passing null to HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory, and HlsMediaSource.Factory.setPlaylistTrackerFactory. Instances of DefaultCompositeSequenceableLoaderFactory, DefaultHlsPlaylistParserFactory, or a reference to DefaultHlsPlaylistTracker.FACTORY can be passed explicitly if required.
    • Smooth Streaming:
      • Disallow passing null to SsMediaSource.Factory.setCompositeSequenceableLoaderFactory. Instances of DefaultCompositeSequenceableLoaderFactory can be passed explicitly if required.
    • RTSP:
      • Add RTP reader for MPEG4 (#35).

    ... (truncated)

    Changelog

    Sourced from exoplayer-core's changelog.

    2.18.0 (2022-06-16)

    This release corresponds to the AndroidX media3 1.0.0-beta01 release.

    • Core library:
      • Enable support for Android platform diagnostics via MediaMetricsManager. ExoPlayer will forward playback events and performance data to the platform, which helps to provide system performance and debugging information on the device. This data may also be collected by Google if sharing usage and diagnostics data is enabled by the user of the device. Apps can opt-out of contributing to platform diagnostics for ExoPlayer with ExoPlayer.Builder.setUsePlatformDiagnostics(false).
      • Fix bug that tracks are reset too often when using MergingMediaSource, for example when side-loading subtitles and changing the selected subtitle mid-playback (#10248).
      • Stop detecting 5G-NSA network type on API 29 and 30. These playbacks will assume a 4G network.
      • Disallow passing null to MediaSource.Factory.setDrmSessionManagerProvider and MediaSource.Factory.setLoadErrorHandlingPolicy. Instances of DefaultDrmSessionManagerProvider and DefaultLoadErrorHandlingPolicy can be passed explicitly if required.
      • Add MediaItem.RequestMetadata to represent metadata needed to play media when the exact LocalConfiguration is not known. Also remove MediaMetadata.mediaUrl as this is now included in RequestMetadata.
      • Add Player.Command.COMMAND_SET_MEDIA_ITEM to enable players to allow setting a single item.
    • Track selection:
      • Flatten TrackSelectionOverrides class into TrackSelectionParameters, and promote TrackSelectionOverride to a top level class.
      • Rename TracksInfo to Tracks and TracksInfo.TrackGroupInfo to Tracks.Group. Player.getCurrentTracksInfo and Player.Listener.onTracksInfoChanged have also been renamed to Player.getCurrentTracks and Player.Listener.onTracksChanged.
      • Change DefaultTrackSelector.buildUponParameters and DefaultTrackSelector.Parameters.buildUpon to return DefaultTrackSelector.Parameters.Builder instead of the deprecated DefaultTrackSelector.ParametersBuilder.
      • Add DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities which is enabled by default. When enabled, the DefaultTrackSelector will prefer audio tracks whose channel count does not exceed the device output capabilities. On handheld devices, the DefaultTrackSelector will prefer stereo/mono over multichannel audio formats, unless the multichannel format can be Spatialized

    ... (truncated)

    Commits
    • 03569f9 Merge pull request #10349 from google/dev-v2-r2.18.0
    • 85d8682 Add lint baseline for spurious API-level warnings
    • 460d221 Fix release notes
    • 8781449 Merge branch 'release-v2' into dev-v2-r2.18.0
    • 3da5ab7 Update JavaDoc
    • da12792 Add lint base xml file for string.xml files
    • 3dcc24e Version bump to exoplayer:2.18.0 and media3:1.0.0-beta01
    • 0a4684d Merge pull request #63 from ittiam-systems:rtp-h263
    • fb6e3ea Update initial bitrate estimates
    • cdd2157 Updating translations
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump core-ktx from 1.5.0 to 1.8.0

    Bump core-ktx from 1.5.0 to 1.8.0

    Bumps core-ktx from 1.5.0 to 1.8.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump appcompat from 1.3.0 to 1.4.2

    Bump appcompat from 1.3.0 to 1.4.2

    Bumps appcompat from 1.3.0 to 1.4.2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump material from 1.3.0 to 1.6.1

    Bump material from 1.3.0 to 1.6.1

    Bumps material from 1.3.0 to 1.6.1.

    Release notes

    Sourced from material's releases.

    1.6.1

    Dependency Updates

    • No dependency updates

    Library Updates

    • TopAppBar
      • Add null check for logo ConstantState check (299c8e1e82c459d7de9fac0884edfbc32f571cb8)
      • Loosen check for scrollable child when adding a11y actions (dff14cadd78af3992dfd7c8c989314d11758554d)
      • Fix scrolling for a11y (a5a738bfa2f2786e8d6bd91e77d823d3534612b1)
    • Color
      • Fix Resources Loader bug for color harmonization (bef8ca1b49c92660410c6a68cda326af86cfa749)
      • Provide better logging for ColorResourcesTableCreator (b33cf80dd7937b6d31c511e9c545f2a040c70665)
    • Chip
      • Fix ChipGroup.getCheckedChipIds() returns wrong state (0356d7c391c4aa64e54a5aa398d58def673d0114)
    • TextInputLayout
      • Fix for TextInputLayout leak via AccessibilityManager. (#2718) (948d5dac03a55971338d36bb52f1f49bd448ebd7)
    • Other
      • Update library version to 1.6.1 (248d4c8efb89b0f8579b8fc5b5bc9e23695f29b4)

    Full list of changes

    https://github.com/material-components/material-components-android/compare/1.6.0...1.6.1

    1.6.0

    What's new since 1.5.0

    Other highlights

    • Material 3
      • Hide shadows on all M3 Toolbar styles, not just Surface style (b49284ec75ab16a9f649b97cb26aa4a17bc82512)
      • Migrate action bar popup themes to M3 (2ae3ca42985722900f53de9d9a1ef61c143767eb)
      • Update M3 card elevation according to the spec (bb23e2d6ad7888713d51e1dc53f36a69b0db62ff)
      • Add missing attributes to M3 button styles (3c9b45292d78a80f511d672bb5fe4ef1431dd8bd)
      • Update M3 navigation rail text appearances (6b57c52973c2ceb97c88da1df1b72859ed28775a)
      • Fix M3 date picker styles (fba1a341c31cbe2c5d71c239afc8bcc14af9d968)
      • Change checkedIconGravity values to enum (bc56d5b43b93ab6dbed4d561ad8b8b1351f9535c)
    • Badging
      • Prevent multiple badges being attached to a menu item at the same time (b3db1cc02855453f91353fca9e9cb11ccf0db9cc)
      • Refactored Badge state managing logic (bbbeacd64e3b1cc64e8edc6adf430aad45d03e32)
      • Added support for different locale on badges (b8f2dd53e0e19ea376639a610a0b51faabf0f9af)
    • BottomNavigationView
      • Added supported NavigationBarView#LabelVisibilityMode alternative to deprecated BottomNavigationView#LabelVisibilityMode. (12222684370dfb6c3400fd984578059d22741bb3)
      • Removed font scaling from NavigationBarView item labels. (d66676fd6bb93556c2cb3b0d9f7885821ac5bd8f)
      • Set backgroundTint explicitly to @​null in M3 bottom navigation styles (adbcf8cbbc6e95921d233c87eb87dc01b6cc8f0d)
    • BottomSheet
      • Fix bottom sheets in EXPANDED state when the expanded height is the same as the collapsed height (493243ea1e5a2a0eee675b652cae0eeaec73b6a3)
      • Simplify state transition logic (04c483cf3466cd0a7bf4835cadccc2372ba0da2b)
      • Fix activity leak when setting states on destroying activities (43114c4f7c9ca0c70c48c777dbd2957386d539e5)
      • Update edge-to-edge paddings when bottom sheet is laid out (19af0ac9d98cc3c504ce69ae38fbc00570cc85f5)
    • Chip
      • Refactored chip group selection logic to a standalone class (f3c6430f94bb7f82afc740e5545fd6302e9bf3aa)

    ... (truncated)

    Commits
    • 948d5da [TextInputLayout] Fix for TextInputLayout leak via AccessibilityManager. (#2718)
    • 768d0cf [ChipGroup] Fix ChipGroup.getCheckedChipIds() returns wrong state
    • bc9595b Revert "[ChipGroup] Fix ChipGroup.getCheckedChipIds() returns wrong state"
    • ba9803a [ChipGroup] Fix ChipGroup.getCheckedChipIds() returns wrong state
    • f91a1eb Revert "[ChipGroup] Fix ChipGroup.getCheckedChipIds() returns wrong state"
    • 299c8e1 [MaterialToolbar] Add null check for logo ConstantState check
    • 0356d7c [ChipGroup] Fix ChipGroup.getCheckedChipIds() returns wrong state
    • bef8ca1 [M3][Color] Fix Resources Loader bug for color harmonization
    • b33cf80 [M3][Color] Provide better logging for ColorResourcesTableCreator
    • dff14ca [AppBarLayout] Loosen check for scrollable child when adding a11y actions
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump gradle from 7.0.3 to 7.2.1

    Bump gradle from 7.0.3 to 7.2.1

    Bumps gradle from 7.0.3 to 7.2.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump exoplayer-core from 2.14.0 to 2.18.2

    Bump exoplayer-core from 2.14.0 to 2.18.2

    Bumps exoplayer-core from 2.14.0 to 2.18.2.

    Release notes

    Sourced from exoplayer-core's releases.

    r2.18.2

    • Core library:
      • Add ExoPlayer.isTunnelingEnabled to check if tunneling is enabled for the currently selected tracks (google/ExoPlayer#2518).
      • Add WrappingMediaSource to simplify wrapping a single MediaSource (google/ExoPlayer#7279).
      • Discard back buffer before playback gets stuck due to insufficient available memory.
      • Close the Tracing "doSomeWork" block when offload is enabled.
      • Fix session tracking problem with fast seeks in PlaybackStatsListener (androidx/media#180).
      • Send missing onMediaItemTransition callback when calling seekToNext or seekToPrevious in a single-item playlist (google/ExoPlayer#10667).
      • Add Player.getSurfaceSize that returns the size of the surface on which the video is rendered.
      • Fix bug where removing listeners during the player release can cause an IllegalStateException (google/ExoPlayer#10758).
    • Build:
      • Enforce minimum compileSdkVersion to avoid compilation errors (google/ExoPlayer#10684).
      • Avoid publishing block when included in another gradle build.
    • Track selection:
    • Downloads:
      • Fix potential infinite loop in ProgressiveDownloader caused by simultaneous download and playback with the same PriorityTaskManager (google/ExoPlayer#10570).
      • Make download notification appear immediately (androidx/media#183).
      • Limit parallel download removals to 1 to avoid excessive thread creation (google/ExoPlayer#10458).
    • Video:
    • Audio:
      • Use SingleThreadExecutor for releasing AudioTrack instances to avoid OutOfMemory errors when releasing multiple players at the same time (google/ExoPlayer#10057).
      • Adds AudioOffloadListener.onExperimentalOffloadedPlayback for the AudioTrack offload state. (androidx/media#134).
      • Make AudioTrackBufferSizeProvider a public interface.
      • Add ExoPlayer.setPreferredAudioDevice to set the preferred audio output device (androidx/media#135).
      • Rename com.google.android.exoplayer2.audio.AudioProcessor to com.google.android.exoplayer2.audio.AudioProcessor.
      • Map 8-channel and 12-channel audio to the 7.1 and 7.1.4 channel masks respectively on all Android versions (google/ExoPlayer#10701).
    • Metadata:
      • MetadataRenderer can now be configured to render metadata as soon as they are available. Create an instance with MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) to specify whether the renderer will output metadata early or in sync with the player position.
    • DRM:
      • Work around a bug in the Android 13 ClearKey implementation that returns a non-empty but invalid license URL.
      • Fix setMediaDrmSession failed: session not opened error when switching between DRM schemes in a playlist (e.g. Widevine to ClearKey).
    • Text:
    • DASH:
    • UI:
    • RTSP:
    • IMA:
      • Add timeout for loading ad information to handle cases where the IMA SDK gets stuck loading an ad (google/ExoPlayer#10510).
      • Prevent skipping mid-roll ads when seeking to the end of the content (google/ExoPlayer#10685).
      • Correctly calculate window duration for live streams with server-side inserted ads, for example IMA DAI (google/ExoPlayer#10764).
    • FFmpeg extension:
      • Add newly required flags to link FFmpeg libraries with NDK 23.1.7779620 and above (google/ExoPlayer#9933).
    • AV1 extension:
      • Update CMake version to avoid incompatibilities with the latest Android Studio releases (google/ExoPlayer#9933).

    ... (truncated)

    Changelog

    Sourced from exoplayer-core's changelog.

    2.18.2 (2022-11-22)

    This release corresponds to the AndroidX Media3 1.0.0-beta03 release.

    • Core library:
      • Add ExoPlayer.isTunnelingEnabled to check if tunneling is enabled for the currently selected tracks (#2518).
      • Add WrappingMediaSource to simplify wrapping a single MediaSource (#7279).
      • Discard back buffer before playback gets stuck due to insufficient available memory.
      • Close the Tracing "doSomeWork" block when offload is enabled.
      • Fix session tracking problem with fast seeks in PlaybackStatsListener (#180).
      • Send missing onMediaItemTransition callback when calling seekToNext or seekToPrevious in a single-item playlist (#10667).
      • Add Player.getSurfaceSize that returns the size of the surface on which the video is rendered.
      • Fix bug where removing listeners during the player release can cause an IllegalStateException (#10758).
    • Build:
      • Enforce minimum compileSdkVersion to avoid compilation errors (#10684).
      • Avoid publishing block when included in another gradle build.
    • Track selection:
      • Prefer other tracks to Dolby Vision if display does not support it. (#8944).
    • Downloads:
      • Fix potential infinite loop in ProgressiveDownloader caused by simultaneous download and playback with the same PriorityTaskManager (#10570).
      • Make download notification appear immediately (#183).
      • Limit parallel download removals to 1 to avoid excessive thread creation (#10458).
    • Video:
      • Try alternative decoder for Dolby Vision if display does not support it. (#9794).
    • Audio:
      • Use SingleThreadExecutor for releasing AudioTrack instances to avoid OutOfMemory errors when releasing multiple players at the same time (#10057).
      • Adds AudioOffloadListener.onExperimentalOffloadedPlayback for the AudioTrack offload state. (#134).
      • Make AudioTrackBufferSizeProvider a public interface.

    ... (truncated)

    Commits
    • a9444c8 Merge pull request #10806 from google/release-v2-r2.18.2
    • a114b0e Fix compilation error in ffmpeg JNI layer
    • 9b0790e Reorder some release notes in other sections.
    • aef5330 Update JavaDoc for exoplayer:2.18.2
    • 66995db Version bump to exoplayer:2.18.2 and media3:1.0.0-beta03
    • bd6570f Remove @​hide javadoc annotation from ExoPlayer GitHub
    • f4259f3 Filter bogus AndroidX core jar file when creating javadoc
    • 6108c05 Rename getVideoSurfaceSize to getSurfaceSize
    • db2ab52 Set valid channel masks for 8 and 12 channels on all Android versions
    • 88804dd Mark iterationFinished when triggering release event.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump leakcanary-android from 2.7 to 2.10

    Bump leakcanary-android from 2.7 to 2.10

    Bumps leakcanary-android from 2.7 to 2.10.

    Release notes

    Sourced from leakcanary-android's releases.

    v2.10

    See Change Log

    v2.9.1

    See Change Log

    v2.8.1

    See Change Log

    v2.8

    See Change Log

    Changelog

    Sourced from leakcanary-android's changelog.

    Version 2.10 (2022-11-10)

    Experimental Neo4j heap dump exploration

    shark-cli has a new experiment neo4j command that will convert a heap dump into an embedded Neo4j database and then open Neo4j Browser to explore the heap dump.

    brew install leakcanary-shark
    

    shark-cli --process com.example.app.debug neo4j

    Neo4J heap dump

    Other bug fixes and improvements 🐛🔨

    • 🐤 #2440 Add Android 13 POST_NOTICICATIONS permission as well as a new LeakCanary.Config.showNotifications config to disable notifications entirely.
    • 🐤 #2416 Add Android 13 monochrome icon.
    • 💥 #2371 Fix db crash when navigating heap dump screen.
    • 🐛 #2393 Allow LeakCanary to be defined as an AndroidX Startup dependency.
    • 💥 #2430 Fix ShortcutManager crash on Android TV.
    • 💥 #2382 Fix heap dump close crash.

    This list reflects only a subset of all changes. For more details, see the 2.10 Milestone and the full diff.

    Version 2.9.1 (2022-04-20)

    Preface

    What are some things you'd like to see in a future LeakCanary 3 version? Tell me on Twitter!

    Some ideas I'm playing with:

    • Moving heap analysis leak visualisation to a separate single app (written with Compose!) available on the PlayStore.
    • Bumping Okio to 3.0
    • Multiplatform heap analysis? Analyze a JVM heap dump in your browser?!
    • Visualize the heap dominators / retained size as a treemap.
    • A backend for LeakCanary?

    Anyway, that's still very much the future, let's talk about what's in 2.9.1 now!

    New metrics in heap analysis metadata

    I built LeakCanary to help fix leaks, but in doing so I accidentally wrote a fairly flexible heap dump parser. Since we're parsing the heap to find leaks anyway, we might as well report additional interesting metrics. Here's what you'll now see in the heap dump metadata:

    • Class count: count of loaded classes
    • Instance count
    • Primitive array count
    • Object array count
    • Thread count

    ... (truncated)

    Commits
    • 9da58bd Prepare 2.10 release
    • ebda255 Merge branch 'py/array_set_expander' into release_2.10
    • 2e6488d Merge pull request #2444 from square/py/close_crash_again
    • 6c61c09 Add custom expander for Android ArraySet
    • 5528f4d Ignore failure to close file
    • 7d3fe63 Merge pull request #2440 from square/py/no_notif
    • 8141f03 Merge pull request #2441 from square/py/AnimationHandler_leak
    • ffb8bd5 Report AnimationHandler leak
    • dd7c459 Merge pull request #2442 from square/py/storage
    • 9e3d3ee Request permission on Android 13
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump material from 1.3.0 to 1.7.0

    Bump material from 1.3.0 to 1.7.0

    Bumps material from 1.3.0 to 1.7.0.

    Release notes

    Sourced from material's releases.

    1.7.0

    What's new since 1.6.1

    • All new Switch component with a new look! Check out the updated documentation for details.
    • New Shape system that is now being used by all components. Learn about the shape system and see how its used in the Material3 theme and components by checking out the updated documentation
    • Checkbox has been redesigned and now supports indeterminate and error states! Check out the updated documentation.
    • BottomAppBar has been redesigned! Check out the updated documentation
    • New Icon Button support has been added including outlined, tonal, and filled variants!

    New minimum requirements for your app's project:

    Dependency Updates

    Dependency Previous version New version
    androidx.appcompat 1.5.0-beta01 1.5.0
    androidx.core 1.5.0 1.6.0
    androidx.test 1.1.0 1.4.0
    Android Gradle Plugin (AGP) 4.0.0 7.2.0
    Gradle 6.1.1 7.3.3
    Java Version 1.7 (7) 1.8 (8)

    Other highlights

    • MaterialButton
      • Added methods to not toggle checked state on buttons on click (a6011078689521cf0c042e7444c36b6607cedcf9)
      • Updated M3 button style to add outlined icon button style (467a2c9f7314cdfd5300594b4e66a70657d5d702)
      • Updated M3 button style to add filled tonal icon button style (14578ed68cb296080d511ceb502469903c0ef5d7)
      • Updated M3 button style to add filled icon button style (25606cf34addae1420eeba24eec0f90aef06d0d2)
      • Fix icon textStart/End alignment with multiline text (b6b895a1e40efbf2e36b2ea5e91bae7bcd0bdb8c)
      • Fix icon position with multiline text (19d05000bcc273f781a85ce41530f604fead268e)
    • Documentation
      • Updated typography guidelines to M3 (104a342307c31170494c3dcd2011ca63b182e4b5)
      • Added an example to demonstrate how to make bottom sheet dialog in edge-to-edge mode (57a3c989ffdaee252fa00bbe5246f837d18b6a60)
      • Updated Snackbar doc regarding CoordinatorLayout (ef2c2fad36d11933d71ea5c9a2826be3119bec17)
      • Add status bar / edge-to-edge section to Top App Bar doc (b8e1f978940c218502ee6161d0b3f673299eceb0)
    • TopAppBar
      • Fixed bug in HeaderScrollingViewBehavior that causes child translation Y not to be reset to default if the behavior is changed from an overlapping to non-overlapping behavior in layoutParams.setBehavior (00c62d21c9e21eb595d2d83bddcf6782a9773729)
      • Excluded views that are GONE from scroll range calculation (687e73590de5ea219a14a336094002b9d3884af5)
      • Fixed collapsing title issue with different fonts (0c341c4e9b9703945ffbf22af0a4158bde41582c)
      • Added setLiftOnScrollTargetView() method (d6c435461eece74656db5e2de92944c7ca807439)
    • A11y
      • Made multi-selection Chips announce as Buttons (d4c2c9549051d706d91dcd96ceb79c52e1aedd30)
      • Made drawer announce its number of items (b1f7d5bebc298865a25747d2f28050a67b15761d)
    • TextInputLayout
      • Added a new custom length counter field and getters/setters to switch how text length is calculated for the counter. (4ded01ed3ff5f6669080b6330c3d6dce8869cdca)
      • Fixed hint is not displayed when expanding space is limited (73cb1b6e78a0e28d157a1b5da061568117c2fa40)

    ... (truncated)

    Commits
    • 355c69d Update library version to 1.7.0
    • 5cb92c8 [Snackbar] Made snackbar javadoc more clear of how its dismissing works.
    • c0e24cd [Documentation][Shape] Update documentation
    • 7e18ac4 [Checkbox] Fixed NPE crash due to layer drawable's constant state issue in AP...
    • ec1663f [CheckBox] Fix a11y announcement for indeterminate state.
    • aaa7646 Update library version to 1.7.0-rc01
    • 2cc8932 [Checkbox] Fixed pre 21 issue where the icon did not update its color accordi...
    • a394314 [Process] Update AppCompat version to 1.5 stable
    • 3af5784 [ExposedDropdownMenu] Fixed missing icon activated color.
    • c1e20e2 [Docs] Changing the name for the AGP compatibility variable so that the IDE p...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gradle from 7.0.3 to 7.3.1

    Bump gradle from 7.0.3 to 7.3.1

    Bumps gradle from 7.0.3 to 7.3.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump core-ktx from 1.5.0 to 1.9.0

    Bump core-ktx from 1.5.0 to 1.9.0

    Bumps core-ktx from 1.5.0 to 1.9.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v1.1.0)
Owner
Iman Irandoost
Gashtam Nabood, Nagard Nist
Iman Irandoost
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content.

Swipecards Travis master: A Tinder-like cards effect as of August 2014. You can swipe left or right to like or dislike the content. The library create

Dionysis Lorentzos 2.3k Dec 9, 2022
Custom & highly configurable seek slider with sliding intervals, disabled state and every possible setting to tackle!

LabeledSeekSlider Custom & highly configurable seek slider with sliding intervals, disabled state and every possible setting to tackle! Minimum target

Edgar Žigis 78 Sep 27, 2022
Android Library to implement simple touch/tap/swipe gestures

SimpleFingerGestures An android library to implement simple 1 or 2 finger gestures easily Example Library The library is inside the libSFG folder Samp

Arnav Gupta 315 Dec 21, 2022
Android library which allows you to swipe down from an activity to close it.

Android Sliding Activity Library Easily create activities that can slide vertically on the screen and fit well into the Material Design age. Features

Jake Klinker 1.3k Nov 25, 2022
Android swipe-to-dismiss mini-library and sample code

Android Swipe-to-Dismiss Sample Code Sample code that shows how to make ListView or other views support the swipe-to-dismiss Android UI pattern. See t

Roman Nurik 1.3k Dec 29, 2022
A simple implementation of swipe card like StreetView

A simple implementation of swipe card like StreetView!! DONATIONS This project needs you! If you would like to support this project's further developm

Michele Lacorte 831 Jan 4, 2023
SwipeBack for Android Activities to do pretty the same as the android "back-button" will do, but in a really intuitive way by using a swipe gesture

SwipeBack SwipeBack is for Android Activities to do pretty the same as the android "back-button" will do, but in a really intuitive way by using a swi

Hannes Dorfmann 697 Dec 14, 2022
A swipe button for Android with a circular progress bar for async operations

ProSwipeButton A swipe button for Android with a circular progress bar for async operations Gradle dependencies { ... compile 'in.shadowfax:pr

Shadowfax Technologies 340 Nov 13, 2022
Card with swipe options in Jetpack Compose

SwipeableActionCard Card with swipe options in Jetpack Compose Tutorial: Click Here Import SwipeableActionCard library Add this in project level build

Harsh Mahajan 1 Nov 23, 2021
Android jetpack compose swipe library

Swiper for Android Jetpack Compose Android Jetpack Compose swipe library. Downlo

null 32 Dec 10, 2022
Simple and powerful library to emulate iOS's "3D Touch" preview functionality on Android.

Android 3D Touch - PeekView iOS uses 3D Touch as a way to "peek" into full content, such as emails, pictures, web searches, etc. While they have dedic

Luke Klinker 502 Dec 29, 2022
Custom android music player view.

InteractivePlayerView Custom android music player view. Screen Check it on youtube Usage(XML) Define it in your xml file. <co.mobiwise.library.Intera

Mert Şimşek 744 Dec 25, 2022
A smart seek bar with multiple junction points at random seek position.

TerminalSeekBar A smart seek bar for android with multiple junction points at random seek position. Installation and Usage To use TerminalSeekBar in y

Owais 23 Feb 15, 2022
Simple Visualizer from mic input for Android.

Voice Recording Visualizer Simple Visualizer from mic input for Android. Usage @Override protected void onCreate(Bundle savedInstanceState) {

Takayuki Yorikane 542 Nov 24, 2022
A simple path finding visualizer mobile app to demonstrate the use of Jetpack Compose UI toolkit in Android.

Path Finding Visualizer App using Jetpack Compose A simple path finding visualizer mobile app to demonstrate the use of Jetpack Compose UI toolkit in

Serge Nino Martin Villasica 33 May 6, 2022
Burp-ipv - Insertion point visualizer for Burp Suite

Insertion point visualizer for Burp Suite Building Execute ./gradlew build and y

Silent Signal 1 Feb 2, 2022
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content.

Swipecards Travis master: A Tinder-like cards effect as of August 2014. You can swipe left or right to like or dislike the content. The library create

Dionysis Lorentzos 2.3k Dec 9, 2022
Android Library to provide swipe, click and other functionality to RecyclerView

RecyclerViewEnhanced Android Library to provide swipe, click and other functionality to RecyclerView Usage Add this to your build.gradle file dependen

Nikhil Panju 1k Dec 29, 2022
Android Library to provide swipe, click and other functionality to RecyclerView

RecyclerViewEnhanced Android Library to provide swipe, click and other functionality to RecyclerView Usage Add this to your build.gradle file dependen

Nikhil Panju 1k Dec 29, 2022