MediaPlayer

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

미디어 플레이어 인터페이스입니다. 활성화된 미디어 플레이어에 접근하는 방법은 getMediaPlayer()를 참고하세요.


정적 속성

ACTION_PLAYBACK_FINISHED

companion object {
    const val ACTION_PLAYBACK_FINISHED
}

미디어 재생이 끝났을 때 브로드캐스터 수신기에서 사용하기 위한 정적 속성입니다. 브로드캐스터 수신기를 아래처럼 등록하고 해제하시면 됩니다.

private val playbackFinishedReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent) {
        // 미디어 재생 종료 시 처리할 내용
    }
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    ContextCompat.registerReceiver(
        this,
        playbackFinishedReceiver,
        IntentFilter(MediaPlayer.ACTION_PLAYBACK_FINISHED),
        ContextCompat.RECEIVER_EXPORTED,
    )
}

override fun onDestroy() {
    super.onDestroy()
    unregisterReceiver(playbackFinishedReceiver)
}

onReceiveintent에서 제공하는 정보는 다음과 같습니다.

이름타입내용
"uri"string미디어의 uri
"currentTime"long미디어 재생 위치
"duration"long미디어 전체 길이
"reason"string미디어 종료 이유

속성

allowsPictureInPicturePlayback

var allowsPictureInPicturePlayback: Boolean

allowsCellularAccess

var allowsCellularAccess: Boolean
타입설명설정기본값
Boolean동영상 재생 시, 셀룰러 데이터 사용 여부가능true

동영상을 재생(스트리밍)할 때, 셀룰러 데이터를 사용할 지 여부를 나타내는 속성입니다.

audioTracks

val audioTracks: List<Track>
타입설명설정
List<Track>오디오 트랙 목록불가능

현재 재생 중인 미디어의 오디오 트랙을 가져오는 속성입니다.

참고: AudioTrack

autoplay

var autoplay: Boolean
타입설명설정기본값
Boolean미디어가 로드되었을 때, 즉 미디어가 준비가 된 즉시 재생할 것인지 결정하는 값가능true

미디어가 중단되지 않고 충분한 양의 미디어 사용이 가능할 때 즉시 재생이 시작되어야 하는지를 나타내는 속성입니다. true면 자동 재생합니다.

buffered

val buffered: TimeRanges
타입설명설정
com.newin.nplayer.
sdk.utils.TimeRanges
현재 버퍼에 담고 있는 미디어 리소스의 구간 데이터불가능

버퍼에 있는 미디어 리소스의 구간을 반환합니다.

currentMediaItem

val currentMediaItem: MediaItem
타입설명설정
MediaItem현재 재생 중인 미디어 아이템불가능

현재 재생 중인 미디어 아이템을 의미하는 속성입니다.

currentMediaItemIndex

val currentMediaItemIndex: Int
타입설명설정
Int현재 재생 중인 미디어 아이템의 index불가능

현재 재생 중인 미디어 아이템의 index를 의미하는 속성입니다.

currentSrc

val currentSrc: Uri?
타입설명설정기본값
android.net.Uri?설정 시, 교체할 미디어 아이템의 Uri
반환 시, 현재 선택된 미디어 아이템의 Uri
가능null

미디어 리소스의 uri를 의미하는 속성입니다.

currentTime

var currentTime: Duration
타입설명설정
java.time.Duration설정 시, 재생하고 싶은 특정 위치
반환 시, 현재 재생 시점
가능

현재 재생 위치를 Duration 단위로 지정합니다.

currentWatermarkSettings

val currentWatermarkSettings: WatermarkSettings?
타입설명설정
WatermarkSettings오디오 트랙 목록불가능

현재 워터마크 설정 상태를 반환하는 속성입니다.

defaultMuted

var defaultMuted: Boolean
타입설명설정기본값
Boolean음소거 기본 설정 상태가능false

오디오의 음소거 기본 설정을 나타내는 속성입니다.

defaultPlaybackRate

var defaultPlaybackRate: Float
타입설명설정범위기본값
Float미디어의 기본 재생 속도가능0.1~4.01.0

미디어의 기본 재생 속도를 나타내는 속성입니다.

deviceVolume

var deviceVolume: Float
타입설명범위설정
Float현재 미디어의 음량0.0~1.0가능

현재 미디어 플레이어의 음량을 나타내는 속성입니다.

duration

val duration: Duration
타입설명설정
java.time.Duration현재 미디어의 전체 길이불가능

현재 미디어 길이를 나타냅니다.

ended

val ended: Boolean
타입설명설정
Boolean미디어 재생 완료 여부를 반환불가능

미디어 재생 완료 여부를 나타내는 속성입니다.

error

val error: PlaybackException?
타입설명설정
PlaybackException?최근에, 즉, 마지막으로 발생한 에러.
발생한 에러가 없을 경우 null을 반환
불가능

최근 발생한 에러를 나타내는 속성입니다.

isCaptureAllowed

val isCaptureAllowed: Boolean

isSeekable

val isSeekable: Boolean
타입설명설정
BooleanSeek 기능 사용 가능 여부불가능

현재 플레이어에서 Seek 기능을 사용할 수 있는지 여부를 반환하는 속성입니다.

isScrubbing

val isScrubbing: Boolean

loop

var loop: Boolean
타입설명설정기본값
Boolean미디어 반복 재생 여부를 결정하는 값가능false

미디어 재생이 끝났을 때 다시 처음부터 재생할 지 여부를 나타내는 속성입니다.

mediaItems

val mediaItems: List<MediaItem>
타입설명설정기본값
List<MediaItem>현재 재생 목록에 있는 미디어 아이템들불가능[]

미디어 아이템들의 목록을 나타내는 속성입니다. 해당 속성은 설정이 불가능합니다. 목록 전체를 바꾸고 싶을 때는 PlayersetMediaItems()를 사용하시면 됩니다.

muted

var muted: Boolean
타입설명설정기본값
Boolean오디오 음소거 여부가능false

음소거 여부를 나타내는 속성입니다. 음소거면 true, 아니면 false입니다.

paused

val paused: Boolean
타입설명설정
Boolean미디어 일시 정지 여부불가능

미디어가 일시 정지 상태인지 나타내는 속성입니다. 다음과 같은 조건 중 하나라도 해당할 때, true를 반환합니다.

  1. playWhenReady의 값이 false일 때,
  2. playbackState가 STATE_IDLE일 때 (제한된 리소스를 가지고 있을 때),
  3. playbackState가 STATE_ENDED일 때 (미디어 재생이 끝났을 때).
참고: Player.State

playbackRate

var playbackRate: Float
타입설명설정범위기본값
Float재생 속도가능0.1~4.01.0

미디어가 재생 속도를 나타내는 속성입니다. 정상 속도는 1.0이고, 1보다 작을 때는 느리게, 1보다 클 때는 빠르게 재생합니다. 이 때, 오디오 피치 유지 여부는 preservesPitch의 값으로 제어할 수 있습니다.

preservesPitch

var preservesPitch: Boolean
타입설명설정기본값
Boolean오디오 피치 유지 여부가능true

재생 속도에 따른 오디오 피치 유지 여부를 나타내는 속성입니다. 값이 true면 재생 속도가 변해도 오디오 피치는 변함 없으며, false일 경우 재생 속도에 따라 오디오 피치가 변합니다.

repeatRange

var repeatRange: RepeatRange?
타입설명설정
MediaPlayer.RepeatRange?반복 구간 범위가능

반복 구간 범위를 나타내는 속성입니다. null이 아닌 값으로 설정을 했을 경우 해당 구간을 지속해서 반복 재생합니다. start가 설정되어 있지 않을 경우에는 반복 구간의 시작은 미디어의 맨 앞부분이며, end가 설정되어 있지 않을 경우에는 반복 구간의 끝은 미디어의 맨 마지막 부분으로 간주합니다.

screenBrightness

var screenBrightness: Float

seekBackIncrement

var seekBackIncrement: Duration
타입설명설정기본값
java.time.Duration현재 위치에서 전으로 이동하는 시간의 크기가능10초

seekBack()을 호출하여 이동할 때, 현재 위치에서 전으로 이동하는 시간 정도를 나타내는 속성입니다. 왼쪽 방향키를 입력 받거나 하단 인터페이스의 되감기 버튼을 클릭했을 때 이 속성을 사용합니다.

seekForwardIncrement

var seekForwardIncrement: Duration
타입설명설정기본값
java.time.Duration현재 위치에서 후로 이동하는 시간의 크기가능10초

seekForward()을 호출하여 이동할 때, 현재 위치에서 후로 이동하는 시간 정도를 나타내는 속성입니다. 오른쪽 방향키를 입력 받거나 하단 인터페이스의 빨리 감기 버튼을 클릭했을 때 이 속성을 사용합니다.

seeking

val seeking: Boolean
타입설명설정
Boolean현재 미디어가 새로운 위치로 이동하고 있는지(탐색 중인지) 여부불가능

미디어가 탐색 중이지를 나타내는 속성입니다. 현재 미디어가 새로운 위치로 이동하고 있거나 탐색중이면 true를 반환합니다.


subtitleTracks

val subtitleTracks: List<Track>
타입설명설정
List<Track>자막 트랙 목록불가능

현재 재생 중인 미디어의 자막 트랙을 가져오는 속성입니다.

참고: SubtitleTrack

videoTracks

val videoTracks: List<Track>
타입설명설정
List<Track>비디오 트랙 목록불가능

현재 재생 중인 미디어의 비디오 트랙을 가져오는 속성입니다.

참고: VideoTrack

메서드

beginSeekTo

fun beginSeekTo(direction: SeekDirection)

deselectTrack

fun deselectTrack(track: Track)
파라미터타입설명
trackTrack선택을 해제할 (자막) 트랙

트랙 선택을 해제하여 비활성화하는 메서드입니다. 자막 트랙만 해제 가능합니다.

endSeekTo

fun endSeekTo(direction: SeekDirection)

enterPictureInPicture

fun enterPictureInPicture(activity: Activity, sourceRectHint: Rect? = null)
파라미터타입설명
activityActivity현재 액티비티
sourceRectHintRect?setSourceRectHint 참고
fun enterPictureInPicture(activity: Activity, sourceView: View? = null)
파라미터타입설명
activityActivity현재 액티비티
sourceViewView?현재 뷰

화면 속 화면 모드로 전환하는 메서드입니다.

fastSeek

fun fastSeek(to: Duration)
파라미터타입설명
tojava.time.Duration재생하고자 하는 위치 값

입력된 시간으로 바로 이동하기 위한 메서드입니다.

  • 주의: 해당 메서드의 원래 목적은 정확한 위치보다는 새로운 위치에서 더 빠르게 재생을 하도록 하는 것이었습니다. 그러나 안드로이드에서는 현재 정확한 위치와 빠른 재생을 동시에 수행할 수 없기 때문에, 현재는 currentTime, seekTo()를 사용한 것과 유사한 결과를 얻게 됩니다. 즉, 이 메서드를 사용하면 정확한 위치로 이동하게 됩니다. 향후 안드로이드에서 이러한 기능을 제공할 경우, 원래 목적에 맞게 업데이트될 예정입니다.

load

fun load(uri: String)
파라미터타입설명
uriString로드하려는 문자열 형식의 미디어 주소

미디어 주소를 문자열로 입력 받아서 미디어를 로드하기 위한 메서드입니다.

load

fun load(uri: Uri)
파라미터타입설명
uriUri로드하려는 android.net.Uri 형식의 미디어 주소

미디어 주소를 Uri 타입으로 입력 받아서 미디어를 로드하기 위한 메서드입니다.

load

fun load(mediaItem: MediaItem)
파라미터타입설명
mediaItemMediaItem로드하려는 미디어 아이템

미디어 아이템을 로드하기 위한 메서드입니다.

load

fun load(mediaItems: List<MediaItem>)
파라미터타입설명
mediaItemsList<MediaItem>로드하려는 미디어 아이템의 리스트

미디어 아이템 목록을 로드하기 위한 메서드입니다.

pause

fun pause()

미디어를 일시 정지하기 위한 메서드입니다.

참고: Playerpause()

play

fun play()

미디어를 재생하기 위한 메서드입니다.

참고: Playerplay()

prepare

fun prepare()

미디어 관련 기본 설정을 하기 위한 메서드입니다. 이 메서드를 실행하면, defaultPlaybackRate, defaultMuted 설정을 미디어 플레이어에 적용하고, 미디어를 로딩하기 시작하고 재생에 필요한 리소스를 확보합니다.

참고: Playerprepare()

release

fun release()

미디어 목록, 이벤트 핸들러, 리스너 등 미디어에 관련하여 설정했던 것들을 모두 해제한 후, 미디어 플레이어를 릴리스 시키기 위한 메서드입니다. 미디어 플레이어를 더이상 사용하지 않을 시에는 반드시 사용해야 합니다.

참고: Playerrelease()

seekBack

fun seekBack()

현재 위치에서 속성 seekBackIncrement 만큼 전으로 이동하기 위한 메서드입니다.

참고: PlayerseekBack()

seekBack

fun seekBack(increment: Duration)
파라미터타입설명
incrementjava.time.Duration새로운 위치는 현재 위치에서 입력된 파라미터를 뺀 결과입니다.
즉, 음수 입력 시, 입력된 파라미터의 절대값만큼 후로 이동합니다.

현재 위치에서 입력된 시간 전으로 이동하기 위한 메서드입니다.

seekForward

fun seekForward()

현재 위치에서 속성 seekForwardIncrement 만큼 후로 이동하기 위한 메서드입니다.

참고: PlayerseekForward()

seekForward

fun seekForward(increment: Duration)
파라미터타입설명
incrementjava.time.Duration새로운 위치 현재 위치에서 입력된 파라미터를 더한 결과입니다.
즉, 음수 입력 시, 입력된 파라미터의 절대값만큼 되돌아갑니다.

현재 위치에서 입력된 시간 후로 이동하기 위한 메서드입니다.

seekTo

fun seekTo(position: Duration, force: Boolean = false)
파라미터타입설명
positionjava.time.Duration입력된 파라미터로 재생 위치를 이동합니다.
forceBoolean강제로 위치를 바꿔야할 때, true로 설정. 기본값은 false입니다.

입력된 시간 위치로 이동하기 위한 메서드입니다.

selectTrack

fun selectTrack(track: Track)
파라미터타입설명
trackTrack활성화 할 (오디오,비디오,자막)트랙

트랙을 선택하여 활성화하는 메서드입니다.

startScrubbing

fun startScrubbing(position: Duration)

stopScrubbing

fun stopScrubbing(position: Duration)

updateScrubbing

fun updateScrubbing(position: Duration)

addEventHandler

fun addEventHandler(handler: EventHandler): EventHandler
파라미터타입반환 타입설명
handlerEventHandlerEventHandler추가할 이벤트 핸들러

이벤트 핸들러를 추가하기 위한 메서드입니다. 반환된 이벤트 핸들러는 이벤트 핸들러를 제거할 목적으로 removeEventHandler()에서 사용할 수 있습니다. 이벤트 핸들러를 추가한 후, 해당 이벤트 핸들러가 더 이상 필요 없을 때는 반드시 removeEventHandler() 메서드를 사용해서 제거하세요.

removeEventHandler

fun removeEventHandler(handler: EventHandler)
파라미터타입설명
handlerEventHandler제거할 이벤트 핸들러

addEventHandler()로 추가된 이벤트 핸들러를 제거하기 위한 메서드입니다.

addListener

fun addListener(listener: MediaPlayer.Listener)
파라미터타입설명
listenerMediaPlayer.Listener추가할 이벤트 리스너

이벤트 리스너를 추가하기 위한 메서드입니다. 이벤트 리스너를 추가한 후, 해당 이벤트 리스너가 더 이상 필요 없을 때는 반드시 removeListener() 메서드를 사용해서 제거하세요.

removeListener

fun removeListener(listener: MediaPlayer.Listener)
파라미터타입설명
listenerMediaPlayer.Listener제거할 이벤트 리스너

addListener()로 추가된 이벤트 리스너를 제거하기 위한 메서드입니다.


클래스

RepeatRange

MediaPlayer.RepeatRange에 자세한 설명이 있습니다.