Skip to content

Commit

Permalink
Add feature show bitrate in details fragment (#379)
Browse files Browse the repository at this point in the history
  • Loading branch information
tungnk123 authored Feb 1, 2025
1 parent 0d82e09 commit af4dd59
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ import android.content.res.Configuration
import android.graphics.Color
import android.graphics.drawable.AnimatedVectorDrawable
import android.graphics.drawable.Drawable
import android.media.MediaMetadataRetriever
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.os.StrictMode
import android.util.Log
import android.view.View
import android.view.ViewGroup.MarginLayoutParams
import android.view.ViewPropertyAnimator
Expand Down Expand Up @@ -98,6 +100,21 @@ fun MediaItem.getFile(): File? {
return getUri()?.toFile()
}

fun MediaItem.getBitrate(): Long? {
val retriever = MediaMetadataRetriever()
return try {
val filePath = getFile()?.path ?: return null
retriever.setDataSource(filePath)
retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE)
?.toLongOrNull()
} catch (e: Exception) {
Log.w("getBitrate", Log.getStackTraceString(e))
null
} finally {
retriever.release()
}
}

fun Activity.closeKeyboard(view: View) {
if (ViewCompat.getRootWindowInsets(window.decorView)
?.isVisible(WindowInsetsCompat.Type.ime()) == true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking
import org.akanework.gramophone.R
import org.akanework.gramophone.logic.enableEdgeToEdgePaddingListener
import org.akanework.gramophone.logic.getBitrate
import org.akanework.gramophone.logic.getFile
import org.akanework.gramophone.logic.hasGenreInMediaStore
import org.akanework.gramophone.logic.toLocaleString
Expand Down Expand Up @@ -56,6 +57,7 @@ class DetailDialogFragment : BaseFragment(false) {
val durationTextView = rootView.findViewById<TextView>(R.id.duration)
val mimeTypeTextView = rootView.findViewById<TextView>(R.id.mime)
val pathTextView = rootView.findViewById<TextView>(R.id.path)
val bitRateTextView = rootView.findViewById<TextView>(R.id.bit_rate)
albumCoverImageView.load(mediaMetadata.artworkUri) {
placeholderScaleToFit(R.drawable.ic_default_cover)
crossfade(true)
Expand All @@ -82,6 +84,12 @@ class DetailDialogFragment : BaseFragment(false) {
mimeTypeTextView.text = mediaItem.localConfiguration?.mimeType ?: "(null)"
pathTextView.text = mediaItem.getFile()?.path
?: mediaItem.requestMetadata.mediaUri?.toString() ?: "(null)"
val bitrate = mediaItem.getBitrate()
bitRateTextView.text = if (bitrate != null) {
getString(R.string.bitrate_format, bitrate / 1000)
} else {
getString(R.string.bitrate_unknown)
}
return rootView
}
}
35 changes: 35 additions & 0 deletions app/src/main/res/layout/fragment_info_song.xml
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,41 @@

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dialog_bitrate"
android:layout_gravity="center_vertical"
android:textColor="?colorPrimary"
app:textFontWeight="500"
android:fontFamily="sans-serif"
android:textSize="17sp" />

<TextView
android:id="@+id/bit_rate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textIsSelectable="true"
android:textSize="16sp"
app:textFontWeight="500"
android:textColor="?colorOnSurface"
tools:text="0"
android:layout_marginStart="50dp"
android:fontFamily="sans-serif"
android:gravity="end" />

</LinearLayout>

<LinearLayout
android:id="@+id/genre_box"
android:layout_width="match_parent"
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -302,4 +302,7 @@
<string name="settings_lyrics_no_animation_summary">Disable all line transition lyric animations</string>
<string name="settings_lyrics_char_scaling_summary">Calculate lyric gradient velocity in characters per second instead of pixels per second. Might cause speed to look irregular due to differing character length in pixels.</string>
<string name="settings_lyrics_char_scaling">Character-based scaling for lyric gradient</string>
<string name="dialog_bitrate">Bitrate</string>
<string name="bitrate_format">%1$d kbps</string>
<string name="bitrate_unknown">Unknown bitrate</string>
</resources>

0 comments on commit af4dd59

Please sign in to comment.