MediaPlayer.Listener

import com.newin.nplayer.sdk.MediaPlayer.Listener
interface MediaPlayer.Listener : Player.Listener

MediaPlayer.Listener는 이벤트 처리를 위한 인터페이스로, 위와 같은 메서드를 제공합니다. 각각 메서드에 대한 설명은 메서드를, 사용 방법은 addListener()를 참고하시면 됩니다. 이벤트 리스너를 추가한 후, 해당 이벤트 리스너가 더 이상 필요 없을 때는 반드시 removeListener() 메서드를 사용해서 제거하세요.
Player에 이미 존재하는 이벤트 리스너일 경우에는, 안드로이드 SDK는 이벤트 핸들러만 제공합니다.
이벤트 리스너를 대신하여 사용 방법에 따라서 이벤트 핸들러를 사용하여 이벤트 처리를 할 수 있습니다. 이벤트 핸들러에서 사용되는 파라미터는 이벤트 리스너의 파라미터와 동일합니다. 이벤트 핸들러의 사용 방법은 addEventHandler()클래스를 참고하시면 됩니다.


메서드

onDurationChange

fun onDurationChange(duration: Duration)
파라미터 이름타입설명
durationjava.time.Duration미디어 길이

미디어의 길이(duration)가 변경될 때 실행합니다.

이벤트 핸들러: DurationChange
참고: java.time.Duration

onEnded

fun onEnded()

재생 목록의 마지막 미디어의 재생이 완료 된 시점에 실행합니다.

이벤트 핸들러: Ended

onError

fun onError(error: PlaybackException)
파라미터 이름타입설명
errorPlaybackException재생 오류가 발생했을 때 예외

에러가 발생하여 리소스를 로드할 수 없을 때 실행합니다.

onLoadedData

fun onLoadedData()

미디어 트랙이 로드되었을 때 실행합니다.

이벤트 핸들러: LoadedData

onLoadedMetadata

fun onLoadedMetadata()

메타데이터가 로드되었을 때 실행합니다.

이벤트 핸들러: LoadedMetadata

onLoadStart

fun onLoadStart()

미디어 리소스를 로딩하기 시작할 때 실행합니다.

이벤트 핸들러: LoadStart

onPause

fun onPause()

미디어 일시 정지를 요청한 후, 일시 정지 상태로 진입하는 시점에 실행합니다.

이벤트 핸들러: Pause

onPlay

fun onPlay()

미디어가 일시 정지 상태에서 재생 상태로 변경되는 시점에 실행합니다. 단, 재생 위치가 변경될 때는 포함하지 않습니다. 자세한 설명은 EventHandler.Play를 참고하세요.

이벤트 핸들러: Play

onPlaybackFinish

fun onPlaybackFinish(mediaItem: MediaItem, position: Duration, duration: Duration?, reason: PlaybackFinishReason)
파라미터 이름타입설명
mediaItemMediaItem?종료된 미디어 아이템
positionjava.time.Duration마지막 재생 위치
durationjava.time.Duration?미디어 길이
reasonPlaybackFinishReason미디어 종료 원인

미디어가 종료될 때 실행합니다. 이 때 마지막 재생 위치(position)와 미디어의 길이(duration) 값을 사용할 수 있습니다. 주의할 점은, 미디어가 로드된 후에 종료할 때만 실행된다는 것입니다. 만약 미디어가 로드되기 전에 종료되는 상황에도 사용하려면, onUnload()를 참고하세요.

onPlaying

fun onPlaying()

재생 위치가 변경되어 재생 되는 것을 포함하여, 미디어가 일시 정지 상태에서 재생 상태로 변경되는 시점에 실행합니다. 자세한 설명은 EventHandler.Playing를 참고하세요.

이벤트 핸들러: Playing

onPositionDiscontinuity

fun onPositionDiscontinuity(
    player: MediaPlayer,
    oldPosition: Duration,
    newPosition: Duration
)
파라미터 이름타입설명
playerMediaPlayer미디어 플레이어
oldPositionjava.time.Duration이전 재생 위치
newPositionjava.time.Duration바뀐 재생 위치

재생 위치가 변경되는 시점에 실행합니다. 이전 위치와 이동한 위치 모두 접근이 가능합니다.

주의: Player.Listener의 onPositionDiscontinuity()는 이름만 같고, 사용 방법이 다릅니다.

onProgress

fun onProgress()

플레이어가 소스를 읽어오기 시작할 때에 실행합니다.

이벤트 핸들러: Progress

onRateChange

fun onRateChange(playbackRate: Float)
파라미터 이름타입설명
playbackRateFloat재생 속도

재생 속도가 변경되는 시점에 실행합니다.

주의: 재생 속도는 그대로이지만, preservesPitch의 값이 변경될 때도 실행 됨

이벤트 핸들러: RateChange
참고: playbackRate

onRepeatRangeChange

fun onRepeatRangeChange(repeatRange: MediaPlayer.RepeatRange?)
파라미터 이름타입설명
repeatRangeMediaPlayer.RepeatRange?구간 반복에서의 구간

구간 반복 모드가 시작되거나 종료되었을 때, 그리고 구간 반복의 시작 위치 또는 종료 위치가 바뀌었을 때 실행합니다.

이벤트 핸들러: RepeatRangeChange
참고: MediaPlayer.RepeatRange

onSeeked

fun onSeeked()

seek 작업이 완료된 시점, 또는 재생 위치가 변경되는 시점, 또는 seeking 값이 false로 변경되는 시점에 실행합니다.

이벤트 핸들러: Seeked

onSeeking

fun onSeeking()

seek 작업이 시작되는 시점, 또는 seeking 값이 false에서 true로 변경되는 시점에 실행합니다.

이벤트 핸들러: Seeking

onSuspend

fun onSuspend()

미디어 로딩이 중지된 시점에 실행합니다.

이벤트 핸들러: Suspend

onTimeUpdate

fun onTimeUpdate(position: Duration)
파라미터 이름타입설명
positionjava.time.Duration현재 재생 위치

currentTime이 변경되는 시점에 실행합니다. 즉, 미디어가 재생이 되는 동안 수행하려는 작업을 이곳에 구현하시면 됩니다.

이벤트 핸들러: TimeUpdate
참고: java.time.Duration

onUnload

fun onUnload(mediaItem: MediaItem)
파라미터 이름타입설명
mediaItemMediaItem종료된 미디어 아이템

미디어가 제거된 시점, 즉, 미디어 주소가 변경되기 직전, 기존에 존재하던 미디어를 비울 때 실행합니다.

이벤트 핸들러: Unload
참고: androidx.media3.common.MediaItem

onVolumeChange

fun onVolumeChange(volume: Float, muted: Boolean)
파라미터 이름타입설명
volumeFloat디바이스 음량
mutedBoolean음소거 여부

볼륨이 변경되는 시점에 실행합니다. 무음(muted) 상태가 변경될 때도 실행합니다.

주의: Player.Listener의 onVolumeChanged() 메서드는 이 이벤트 리스너와 완전히 다른 동작을 합니다. 메서드 이름과 사용하는 파라미터도 다르니 주의하시기 바랍니다.

이벤트 핸들러: VolumeChange
참고: deviceVolume

onWaiting

fun onWaiting()

일시적인 버퍼 부족, 즉 데이터가 충분히 로딩되지 못하거나 데이터가 없어서 재생이 정지된 시점에 실행합니다.

이벤트 핸들러: Waiting

onScrubStart

fun onScrubStart(position: Duration)
| 파라미터 이름 | 타입 | 설명 |
|:--:|:--:|:--:|
|position|[java.time.Duration](https://developer.android.com/reference/java/time/Duration)|스크러빙 위치|

스크러빙이 시작되는 시점에 실행합니다.

## onScrubMove

```kotlin
fun onScrubMove(position: Duration)
| 파라미터 이름 | 타입 | 설명 |
|:--:|:--:|:--:|
|position|[java.time.Duration](https://developer.android.com/reference/java/time/Duration)|스크러빙 위치|

스크러빙 위치가 갱신되는 시점에 실행합니다.

## onScrubMove

```kotlin
fun onScrubStop(position: Duration)
| 파라미터 이름 | 타입 | 설명 |
|:--:|:--:|:--:|
|position|[java.time.Duration](https://developer.android.com/reference/java/time/Duration)|스크러빙 위치|

스크러빙이 종료되는 시점에 실행합니다.