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)
}
onReceive
의 intent
에서 제공하는 정보는 다음과 같습니다.
이름 | 타입 | 내용 |
---|---|---|
"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> | 오디오 트랙 목록 | 불가능 |
현재 재생 중인 미디어의 오디오 트랙을 가져오는 속성입니다.
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.0 | 1.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
타입 | 설명 | 설정 |
---|---|---|
Boolean | Seek 기능 사용 가능 여부 | 불가능 |
현재 플레이어에서 Seek 기능을 사용할 수 있는지 여부를 반환하는 속성입니다.
isScrubbing
val isScrubbing: Boolean
loop
var loop: Boolean
타입 | 설명 | 설정 | 기본값 |
---|---|---|---|
Boolean | 미디어 반복 재생 여부를 결정하는 값 | 가능 | false |
미디어 재생이 끝났을 때 다시 처음부터 재생할 지 여부를 나타내는 속성입니다.
mediaItems
val mediaItems: List<MediaItem>
타입 | 설명 | 설정 | 기본값 |
---|---|---|---|
List<MediaItem> | 현재 재생 목록에 있는 미디어 아이템들 | 불가능 | [] |
미디어 아이템들의 목록을 나타내는 속성입니다. 해당 속성은 설정이 불가능합니다. 목록 전체를 바꾸고 싶을 때는 Player의 setMediaItems()를 사용하시면 됩니다.
muted
var muted: Boolean
타입 | 설명 | 설정 | 기본값 |
---|---|---|---|
Boolean | 오디오 음소거 여부 | 가능 | false |
음소거 여부를 나타내는 속성입니다. 음소거면 true, 아니면 false입니다.
paused
val paused: Boolean
타입 | 설명 | 설정 |
---|---|---|
Boolean | 미디어 일시 정지 여부 | 불가능 |
미디어가 일시 정지 상태인지 나타내는 속성입니다. 다음과 같은 조건 중 하나라도 해당할 때, true를 반환합니다.
- playWhenReady의 값이 false일 때,
- playbackState가 STATE_IDLE일 때 (제한된 리소스를 가지고 있을 때),
- playbackState가 STATE_ENDED일 때 (미디어 재생이 끝났을 때).
playbackRate
var playbackRate: Float
타입 | 설명 | 설정 | 범위 | 기본값 |
---|---|---|---|---|
Float | 재생 속도 | 가능 | 0.1~4.0 | 1.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> | 자막 트랙 목록 | 불가능 |
현재 재생 중인 미디어의 자막 트랙을 가져오는 속성입니다.
videoTracks
val videoTracks: List<Track>
타입 | 설명 | 설정 |
---|---|---|
List<Track> | 비디오 트랙 목록 | 불가능 |
현재 재생 중인 미디어의 비디오 트랙을 가져오는 속성입니다.
메서드
beginSeekTo
fun beginSeekTo(direction: SeekDirection)
deselectTrack
fun deselectTrack(track: Track)
파라미터 | 타입 | 설명 |
---|---|---|
track | Track | 선택을 해제할 (자막) 트랙 |
트랙 선택을 해제하여 비활성화하는 메서드입니다. 자막 트랙만 해제 가능합니다.
endSeekTo
fun endSeekTo(direction: SeekDirection)
enterPictureInPicture
fun enterPictureInPicture(activity: Activity, sourceRectHint: Rect? = null)
파라미터 | 타입 | 설명 |
---|---|---|
activity | Activity | 현재 액티비티 |
sourceRectHint | Rect? | setSourceRectHint 참고 |
fun enterPictureInPicture(activity: Activity, sourceView: View? = null)
파라미터 | 타입 | 설명 |
---|---|---|
activity | Activity | 현재 액티비티 |
sourceView | View? | 현재 뷰 |
화면 속 화면 모드로 전환하는 메서드입니다.
fastSeek
fun fastSeek(to: Duration)
파라미터 | 타입 | 설명 |
---|---|---|
to | java.time.Duration | 재생하고자 하는 위치 값 |
입력된 시간으로 바로 이동하기 위한 메서드입니다.
- 주의: 해당 메서드의 원래 목적은 정확한 위치보다는 새로운 위치에서 더 빠르게 재생을 하도록 하는 것이었습니다. 그러나 안드로이드에서는 현재 정확한 위치와 빠른 재생을 동시에 수행할 수 없기 때문에, 현재는 currentTime, seekTo()를 사용한 것과 유사한 결과를 얻게 됩니다. 즉, 이 메서드를 사용하면 정확한 위치로 이동하게 됩니다. 향후 안드로이드에서 이러한 기능을 제공할 경우, 원래 목적에 맞게 업데이트될 예정입니다.
load
fun load(uri: String)
파라미터 | 타입 | 설명 |
---|---|---|
uri | String | 로드하려는 문자열 형식의 미디어 주소 |
미디어 주소를 문자열로 입력 받아서 미디어를 로드하기 위한 메서드입니다.
load
fun load(uri: Uri)
파라미터 | 타입 | 설명 |
---|---|---|
uri | Uri | 로드하려는 android.net.Uri 형식의 미디어 주소 |
미디어 주소를 Uri 타입으로 입력 받아서 미디어를 로드하기 위한 메서드입니다.
load
fun load(mediaItem: MediaItem)
미디어 아이템을 로드하기 위한 메서드입니다.
load
fun load(mediaItems: List<MediaItem>)
미디어 아이템 목록을 로드하기 위한 메서드입니다.
pause
fun pause()
미디어를 일시 정지하기 위한 메서드입니다.
play
fun play()
미디어를 재생하기 위한 메서드입니다.
prepare
fun prepare()
미디어 관련 기본 설정을 하기 위한 메서드입니다. 이 메서드를 실행하면, defaultPlaybackRate, defaultMuted 설정을 미디어 플레이어에 적용하고, 미디어를 로딩하기 시작하고 재생에 필요한 리소스를 확보합니다.
release
fun release()
미디어 목록, 이벤트 핸들러, 리스너 등 미디어에 관련하여 설정했던 것들을 모두 해제한 후, 미디어 플레이어를 릴리스 시키기 위한 메서드입니다. 미디어 플레이어를 더이상 사용하지 않을 시에는 반드시 사용해야 합니다.
seekBack
fun seekBack()
현재 위치에서 속성 seekBackIncrement 만큼 전으로 이동하기 위한 메서드입니다.
seekBack
fun seekBack(increment: Duration)
파라미터 | 타입 | 설명 |
---|---|---|
increment | java.time.Duration | 새로운 위치는 현재 위치에서 입력된 파라미터를 뺀 결과입니다. 즉, 음수 입력 시, 입력된 파라미터의 절대값만큼 후로 이동합니다. |
현재 위치에서 입력된 시간 전으로 이동하기 위한 메서드입니다.
seekForward
fun seekForward()
현재 위치에서 속성 seekForwardIncrement 만큼 후로 이동하기 위한 메서드입니다.
seekForward
fun seekForward(increment: Duration)
파라미터 | 타입 | 설명 |
---|---|---|
increment | java.time.Duration | 새로운 위치 현재 위치에서 입력된 파라미터를 더한 결과입니다. 즉, 음수 입력 시, 입력된 파라미터의 절대값만큼 되돌아갑니다. |
현재 위치에서 입력된 시간 후로 이동하기 위한 메서드입니다.
seekTo
fun seekTo(position: Duration, force: Boolean = false)
파라미터 | 타입 | 설명 |
---|---|---|
position | java.time.Duration | 입력된 파라미터로 재생 위치를 이동합니다. |
force | Boolean | 강제로 위치를 바꿔야할 때, true로 설정. 기본값은 false입니다. |
입력된 시간 위치로 이동하기 위한 메서드입니다.
selectTrack
fun selectTrack(track: Track)
파라미터 | 타입 | 설명 |
---|---|---|
track | Track | 활성화 할 (오디오,비디오,자막)트랙 |
트랙을 선택하여 활성화하는 메서드입니다.
startScrubbing
fun startScrubbing(position: Duration)
stopScrubbing
fun stopScrubbing(position: Duration)
updateScrubbing
fun updateScrubbing(position: Duration)
addEventHandler
fun addEventHandler(handler: EventHandler): EventHandler
파라미터 | 타입 | 반환 타입 | 설명 |
---|---|---|---|
handler | EventHandler | EventHandler | 추가할 이벤트 핸들러 |
이벤트 핸들러를 추가하기 위한 메서드입니다. 반환된 이벤트 핸들러는 이벤트 핸들러를 제거할 목적으로 removeEventHandler()에서 사용할 수 있습니다. 이벤트 핸들러를 추가한 후, 해당 이벤트 핸들러가 더 이상 필요 없을 때는 반드시 removeEventHandler() 메서드를 사용해서 제거하세요.
removeEventHandler
fun removeEventHandler(handler: EventHandler)
파라미터 | 타입 | 설명 |
---|---|---|
handler | EventHandler | 제거할 이벤트 핸들러 |
addEventHandler()로 추가된 이벤트 핸들러를 제거하기 위한 메서드입니다.
addListener
fun addListener(listener: MediaPlayer.Listener)
파라미터 | 타입 | 설명 |
---|---|---|
listener | MediaPlayer.Listener | 추가할 이벤트 리스너 |
이벤트 리스너를 추가하기 위한 메서드입니다. 이벤트 리스너를 추가한 후, 해당 이벤트 리스너가 더 이상 필요 없을 때는 반드시 removeListener() 메서드를 사용해서 제거하세요.
removeListener
fun removeListener(listener: MediaPlayer.Listener)
파라미터 | 타입 | 설명 |
---|---|---|
listener | MediaPlayer.Listener | 제거할 이벤트 리스너 |
addListener()로 추가된 이벤트 리스너를 제거하기 위한 메서드입니다.
클래스
RepeatRange
MediaPlayer.RepeatRange에 자세한 설명이 있습니다.