19 Kasım 2024 Salı

Kotlin MP3 Player Yapma

İlk başta  Manifest dosyası içine aşağıdaki izni ekleriz

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

Ardından Gradle Dependenciese aşağıdaki kütüphaneleri ekliyoruz


implementation ("androidx.media3:media3-exoplayer:1.2.1")
implementation ("androidx.media3:media3-ui:1.2.1")
implementation ("androidx.media3:media3-common:1.2.1")
implementation( "androidx.media3:media3-session:1.2.1")
Bunları senkronize ediyoruz(SYNC yapıyoruz).
Main Activity içine aşağıdaki "val"i ekliyoruz.

val player = ExoPlayer.Builder(context).build()
val mediaSession = MediaSession.Builder(context, player).build()
Bu oynatıcıyı daha ileri seviyeye taşımak için
aşağıdaki kodu main activity içine ekleriz
class PlaybackService : MediaSessionService() {
   
private var mediaSession: MediaSession? = null

   
// Create your Player and MediaSession in the onCreate lifecycle event
   
override fun onCreate() {
       
super.onCreate()
       
val player = ExoPlayer.Builder(this).build()
        mediaSession
= MediaSession.Builder(this, player).build()
   
}

   
// Remember to release the player and media session in onDestroy
   
override fun onDestroy() {
        mediaSession
?.run {
            player
.release()
            release
()
            mediaSession
= null
       
}
       
super.onDestroy()
   
}
}
Bir ileri aşama için 
// This example always accepts the connection request
override fun onGetSession(
    controllerInfo
: MediaSession.ControllerInfo
): MediaSession? = mediaSession
  ekleriz.
Daha ilerisi için 
override fun onStart() {
 
val sessionToken = SessionToken(this, ComponentName(this, PlaybackService::class.java))
 
val controllerFuture = MediaController.Builder(this, sessionToken).buildAsync()
  controllerFuture
.addListener(
   
{
       
// Call controllerFuture.get() to retrieve the MediaController.
       
// MediaController implements the Player interface, so it can be
       
// attached to the PlayerView UI component.
        playerView
.setPlayer(controllerFuture.get())
     
},
   
MoreExecutors.directExecutor()
 
)
}


Hiç yorum yok:

Yorum Gönder