๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๐Ÿ“ขย  ์ƒˆ๋กœ์šด Kollus Docs ์‚ฌ์ดํŠธ์—์„œ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

๋ณธ ๋ฌธ์„œ๋Š” ๊ตฌ๋ฒ„์ „์ด๋ฉฐ, ๋” ์ •ํ™•ํ•˜๊ณ  ์ตœ์‹ ํ™”๋œ ์ •๋ณด๋Š” ์•„๋ž˜ ์‹ ๊ทœ ๊ฒฝ๋กœ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ ์ค‘๋‹จ ์•ˆ๋‚ด: ์ด ๋ฌธ์„œ๋Š” 2026๋…„ 6์›” 30์ผ๊นŒ์ง€๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ขย  ์ƒˆ๋กœ์šด Kollus Docs ์‚ฌ์ดํŠธ์—์„œ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

๋ณธ ๋ฌธ์„œ๋Š” ๊ตฌ๋ฒ„์ „์ด๋ฉฐ, ๋” ์ •ํ™•ํ•˜๊ณ  ์ตœ์‹ ํ™”๋œ ์ •๋ณด๋Š” ์•„๋ž˜ ์‹ ๊ทœ ๊ฒฝ๋กœ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ ์ค‘๋‹จ ์•ˆ๋‚ด: ์ด ๋ฌธ์„œ๋Š” 2026๋…„ 6์›” 30์ผ๊นŒ์ง€๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

ย 

์ด ๋ฌธ์„œ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ SDK๋ฅผ ์ด์šฉํ•œ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.ย 

ย 

SDK์— ํฌํ•จ๋œ Library ์„ค๋ช…ย 

SDK์—๋Š” arm64-v8a, armeabi, armeabi-v7a, x86, x86_64๊ณ„์—ด์˜ Native Library์™€ Java Library๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.ย 

  • kollusplayer_sdk-debug.jar(๋กœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋ฒ„์ „/๊ฐœ๋ฐœ์šฉ)ย 

  • kollusplayer_sdk-release.jar(๋กœ๊ทธ๊ฐ€ ์—†๋Š” ๋ฒ„์ „/๋งˆ์ผ“์šฉ)

ย 

KollusStorageย 

์•„๋ž˜์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • SDK ์ธ์ฆ ์ฒ˜๋ฆฌ

  • ์ปจํ…์ธ  ์ •๋ณด ํš๋“

  • ์ปจํ…์ธ  ๋‹ค์šด๋กœ๋“œ

  • ์ปจํ…์ธ  ์‚ญ์ œ

  • ์ŠคํŠธ๋ฆฌ๋ฐ ์บ์‹œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

ย 

KollusStorage ์‚ฌ์šฉ๋ฒ•

image-20240729-041402.png
  1. getInstance

KollusStorage๋Š” ์Šคํ† ๋ฆฌ์ง€๋‹น ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ์„ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ singleton api๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฝœ๋Ÿฌ์Šค์•ฑ์˜ ๊ฒฝ์šฐ Activity๋ฅผ ์ƒ์†ํ•œ BaseActivity์—์„œ ์ดˆ๊ธฐํ™” ๊ด€๋ จ ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•„์š”ํ•œ Activity๋Š” BaseActivity๋ฅผ ์ƒ์†ํ•˜์—ฌ ์ž๋™์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  1. Initializeย 

public int initialize(String key, String expireDate, String packageName);

SDK ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋ฉฐ ๋ฆฌํ„ด๊ฐ’์„ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ErrorCodes.ERROR_OK

  • ErrorCodes.ERROR_INVALID_KEY

  • ย ErrorCodes.ERROR_EXPIRED_KEYย 

  1. setDevice / setDeviceAsyncย 

Syncํ•จ์ˆ˜ ASyncํ•จ์ˆ˜ ํƒ€์ž…์˜ ์ŠคํŠธ๋กœ์ง€ ๊ฒฝ๋กœ์™€ player id๋ฅผ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. setDeviceํ•จ์ˆ˜๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด๋„ 100ms์ •๋„ ๊ฑธ๋ฆฌ๋ฏ€๋กœ setDeviceAsyncํ•จ์ˆ˜๋ณด๋‹ค setDeviceํ•จ์ˆ˜๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.ย 

  • public int setDevice(String storagePath, String deviceSha1, String deviceGUIDMd5, boolean bTablet);ย 

  • public void setDeviceASync(String storagePath, String deviceSha1, String deviceGUIDMd5, boolean bTablet, OnKollusStorageDeviceListener listener);ย 

  1. finishย 

KollusStorage๋ฅผ ์ž์›์„ ํšŒ์ˆ˜ํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Šคํ† ๋ฆฌ์ง€ ๊ฒฝ๋กœ ๋ฅผ ๋ฐ”๊พธ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊พธ๊ณ ์ž ํ•  ๊ฒฝ์šฐ finishํ›„ 1~3๋ฒˆ ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ย 

๋‹ค์šด๋กœ๋“œ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐย 

ArrayList<KollusContent> contentsList = kollusStorage.getDownloadContentList();ย 

ย 

๋‹ค์šด๋กœ๋“œ ์‹œ์ž‘

ย 

image-20240729-041956.png

ย ๋‹ค์šด๋กœ๋“œ ์ƒํ™ฉ์„ ์ธ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” registerOnKollusStorageListener๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ ๋‹ค. ๋” ์ด์ƒ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ unregisterOnKollusStorageListener๋กœ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

public interface OnKollusStorageListener {

void onComplete(int index);

void onProgress(int index, int percent);ย 

void onError(int index, int errorCode);

}

  1. load

public int load(String path, String extraDrmParam, KollusContent content);

๋ฆฌํ„ด๊ฐ’์ด ์Œ์ˆ˜์ด๋ฉด ์—๋Ÿฌ ์ƒํ™ฉ์œผ๋กœ ErrorCodes์˜ ๊ฐ’์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

path : ๋‹ค์šด๋กœ๋“œํ•  ์ปจํ…์ธ  ๊ฒฝ๋กœย 

extraDrmParam : DRM Callback์— ์ถ”๊ฐ€ ํŒŒ๋ผ๋ฉ”ํ„ฐ. ์—†๋Š” ๊ฒฝ์šฐ null๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.ย 

โ€ป loadํ•จ์ˆ˜ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜์‹ค ๊ฒฝ์šฐ ํ•œ ์ปจํ…

์ธ  load๊ฐ€ ์™„๋ฃŒ ํ›„์— ๋‹ค์Œ ์ปจํ…์ธ  load๋ฅผ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ย 

  1. download

ย public int download(String mediaContentKey);

๋ฆฌํ„ด๊ฐ’์ด ์Œ์ˆ˜์ด๋ฉด ์—๋Ÿฌ ์ƒํ™ฉ์œผ๋กœ ErrorCodes ์˜ ๊ฐ’์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ย โ€ป downloadํ˜ธ์ถœ ์ „์— content.getFileSize๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋‚จ์•„ ์žˆ๋Š” ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด ํŒŒ์ผ ํฌ๊ธฐ+150MB๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ํ›„ ๋‚จ์•„ ์žˆ๋Š” ์šฉ๋Ÿ‰์ด 150MB์ดํ•˜ (OS๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์•ˆ์ •์ ์œผ๋กœ 150M์ˆ˜์ค€์ž„)์ด๋ฉด ๋””์Šคํฌ ์“ฐ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์—†์–ด์„œ ๊ธฐ ์กด ์ปจํ…์ธ ๋ฅผ ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ย ย 

๋‹ค์šด๋กœ๋“œ ์ทจ์†Œ

image-20240729-042243.png

ย public int unload(String mediaContentKey);

๋‹ค์šด๋กœ๋“œ ์ทจ์†Œ๋ฅผ ์›ํ•˜์‹ค ๊ฒฝ์šฐ ๋ฏธ๋””์–ด ์ปจํ…์ธ  ํ‚ค๋กœ unload ๋ฅผ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ย 

๋‹ค์šด๋กœ๋“œ ์‚ญ์ œย 

image-20240729-042257.png

public int remove(String mediaContentKey);

๋‹ค์šด๋กœ๋“œ ์‚ญ์ œ๋ฅผ ์›ํ•˜์‹ค ๊ฒฝ์šฐ ๋ฏธ๋””์–ด ์ปจํ…์ธ  ํ‚ค๋กœ remove ๋ฅผ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ย 

์ปจํ…์ธ  ์žฌ์ƒย 

image-20240729-042331.png

์ปจํ…์ธ  ์žฌ์ƒ

  1. ํ”Œ๋ ˆ์ด์–ด ์ƒ์„ฑย 

public MediaPlayer(Context context, KollusStorage storage, int port);ย 

  1. ๊ฐ์ข… ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋กย 

ํ”Œ๋ ˆ์ด์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ์ข… ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ ์–ด๋„ ์•„๋ž˜์˜ ๋ฆฌ์Šค๋„ˆ๋Š” ๋“ฑ๋ก์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • OnPreparedListenerย 

  • OnCompletionListener

  • OnErrorListener

  • OnVideoSizeChangedListenerย 

ํ”Œ๋ ˆ์ด์–ด ๊ด€๋ จ ๋ฆฌ์Šค๋„ˆ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.ย 

  • ์žฌ์ƒ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋ฅผ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • setOnPreparedListener(OnPreparedListener listener);

public interface OnPreparedListener{ void onPrepared(MediaPlayer mp); }
  • ์žฌ์ƒ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • setOnCompletionListener(OnCompletionListener listener);ย 

public interface OnCompletionListener{ void onCompletion(MediaPlayer mp); }
  • ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnErrorListener(OnErrorListener listener);ย 

public interface OnErrorListener{ boolean onError(MediaPlayer mp, int what, int extra); }
  • ์ƒํ™ฉ์— ๋งž๋Š” ์ •๋ณด๋ฅผ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnInfoListener(OnInfoListener listener);ย 

public interface OnInfoListener{ boolean onInfo(MediaPlayer mp, int what, int extra); void onBufferingStart(MediaPlayer mp); void onBufferingEnd(MediaPlayer mp); void onFrameDrop(MediaPlayer mp); void onDownloadRate(MediaPlayer mp, int downloadRate); void onDetectBandwidthList(MediaPlayer mp, List<BandwidthItem> list); void onChangedBandwidth(MediaPlayer mp, BandwidthItem item); }
  • widevine ๋“ฑ DRM ๊ด€๋ จ ๋ฆฌ์Šค๋„ˆ

  • void setOnCencDrmListener(OnCencDrmListener listener);ย 

public interface OnCencDrmListener{ void onProxyError(int nErrorCode, String strErrorMessage); }
  • seek ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnSeekCompleteListener(OnSeekCompleteListener listener);ย 

public interface OnSeekCompleteListener{ public void onSeekComplete(MediaPlayer mp); }
  • ์ปจํ…์ธ  resolution ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener);

  • ย ์ตœ์ดˆ resolution ์ •๋ณด๋ฅผ ๋ฐ›์„ ๋•Œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

public interface OnVideoSizeChangedListener{ public void onVideoSizeChanged(MediaPlayer mp, int width, int height); }
  • ํ•ด๋‹น ์‹œ๊ฐ„์˜ ์ž๋ง‰์„ ์‘๋‹ต๋ฐ›๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnTimedTextListener(OnTimedTextListener listener);ย 

public interface OnTimedTextListener{ public void onTimedText(MediaPlayer mp, String text); public void onTimedImage(MediaPlayer mp, byte[] image, int width, int height); }
  • ์™ธ๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setOnExternalDisplayDetectListener(OnExternalDisplayDetectListener listener);ย 

public interface OnExternalDisplayDetectListener{ public void onExternalDisplayDetect(int type, boolean plugged); }
  • ์ง„๋„๋ฅ  ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์ฃผ๊ณ  ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ

ย registerKollusPlayerLMSListener(KollusPlayerLMSListener listener);ย 

public interface KollusPlayerLMSListener { /** ์ง„๋„๋ฅ ์„ ์„œ๋ฒ„์— ์ „์†กํ–ˆ์„ ๋•Œ ๊ด€๋ จ ์ •๋ณด @param request ์„œ๋ฒ„์— ์ „์†กํ•œ ๋ฉ”์„ธ์ง€ @param response ์„œ๋ฒ„์—์„œ ์‘๋‹ต ๋ฐ›์€ ๋ฉ”์„ธ์ง€ */ void onLMS(String request, String response); }

unregisterKollusPlayerLMSListener(KollusPlayerLMSListener listener);

ย 

  • ๋ถ๋งˆํฌ ๊ด€๋ จ ๋ฆฌ์Šค๋„ˆย 

  • setKollusPlayerBookmarkListener(KollusPlayerBookmarkListener listener);ย 

public interface KollusPlayerBookmarkListener { /** * ๊ฐ•์‚ฌ์šฉ ๋ถ๋งˆํฌ๋‚˜ ์‚ฌ์šฉ์ž ๋ถ๋งˆํฌ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฆฌ์Šค๋‹ ๋ฉ๋‹ˆ๋‹ค. * @param bookmark ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ * @param bWritable false ์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๋ถ๋งˆํฌ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์ปจํ…์ธ ์ž…๋‹ˆ๋‹ค. */ void onBookmark(List<KollusBookmark> bookmark, boolean bWritable); /** * ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜, JSON ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ ์˜ค๋ฅ˜, JSON error ํ•„๋“œ๊ฐ€ 0 ์ด ์•„๋‹ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. */ void onGetBookmarkError(int nErrorCode); /** * ๋ถ๋งˆํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ ๋˜์—ˆ์„ ๋•Œ ๋ฆฌ์Šค๋‹๋ฉ๋‹ˆ๋‹ค. * ์ถ”๊ฐ€ ์•ก์…˜ํ›„ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์˜ค๋žœ ์‹œ๊ฐ„ํ›„์— ๋ฆฌ์Šค๋‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * @param position ๊ฐฑ์‹ ํ•  ์ดˆ๋‹จ์œ„ ์œ„์น˜ * @param bUpdated ๊ฐฑ์‹  ์„ฑ๊ณต ์—ฌ๋ถ€ */ void onBookmarkUpdated(int position, boolean bUpdated); /** * ๋ถ๋งˆํฌ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์„ ๋•Œ ๋ฆฌ์Šค๋‹๋ฉ๋‹ˆ๋‹ค. * ์‚ญ์ œ ์•ก์…˜ํ›„ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์˜ค๋žœ ์‹œ๊ฐ„ํ›„์— ๋ฆฌ์Šค๋‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * @param position ์‚ญ์ œํ•  ์ดˆ๋‹จ์œ„ ์œ„์น˜ * @param bDeleted ์‚ญ์ œ ์„ฑ๊ณต ์—ฌ๋ถ€ */ void onBookmarkDeleted(int position, boolean bDeleted); }
  • Emulator ์—์„œ ์žฌ์ƒ์‹œ๋„ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ

  • ย setEmulatorCheckerListener(EmulatorCheckerListener listener);ย 

public interface EmulatorCheckerListener { public void onRunningEmulator(); }

ย 

  1. ๋น„๋””์˜ค ์ถœ๋ ฅ ํ™”๋ฉด ์„ค์ •

๋น„๋””์˜ค ์ถœ๋ ฅ ํ™”๋ฉด์„ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.ย 

public void setSurface(Surface surface);ย 

public void setDisplay(SurfaceHolder sh);

ย 

  1. ์ปจํ…์ธ  ๊ฒฝ๋กœ ์„ค์ •ย 

๋น„๋””์˜ค ๊ฒฝ๋กœ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ปจํ…์ธ 

public void setDataSourceByUrl(String path, String extraDrmParam);

path : ๋ฏธ๋””์–ด ๊ฒฝ๋กœ

extraDrmParam : Play Callback ์ถ”๊ฐ€ ํŒŒ๋ผ๋ฉ”ํ„ฐ. ์—†๋Š” ๊ฒฝ์šฐ null ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ย ๋‹ค์šด๋กœ๋“œ ์ปจํ…์ธ 

public void setDataSourceByKey(String mediaContentKey, String extraDrmParam);

mediaContentKey: ๋‹ค์šด๋กœ๋“œ๋œ ๋ฏธ๋””์–ด ์ปจํ…์ธ  ํ‚ค

extraDrmParam : DRM Callback ์ถ”๊ฐ€ ํŒŒ๋ผ๋ฉ”ํ„ฐ. ์—†๋Š” ๊ฒฝ์šฐ null ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ย 

  1. ์žฌ์ƒ ์ค€๋น„ ์™„๋ฃŒ

public void prepareAsync();

prepareAsync ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ปจํ…์ธ  ์žฌ์ƒ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ OnPreparedListener ์˜ onPrepared ๊ฐ€ Listen ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ๋ถ€ํ„ฐ ์ปจํ…์ธ  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ  ์žฌ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ์— ์ด์–ด๋ณด๊ธฐ๋ฅผ ์›ํ•˜์‹œ๋ฉด start ์ „์— seekTo ๋‚˜ seekToExact ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • onPrepared(MediaPlayer mp)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ

    • getKollusContent(KollusContent content)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ปจํ…์ธ  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

      • ์Šคํฌ๋ฆฐ ์ƒท ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • String screenShotPath = content.getScreenShotPath();

      • Naming rule์€ ํŒŒ์ผ๋ช….{width}x{height}x{count}.ํ™•์žฅ์ž์ž…๋‹ˆ๋‹ค.

โ€ป Count์—์„œ ์•ž 3์žฅ์€ ๋ฌด์˜๋ฏธํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • ์ด์–ด๋ณด๊ธฐ๋ฅผ ์›ํ•  ์‹œ ์•„๋ž˜์˜ ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    • mMediaPlayer.seekTo(int msec); //I-Frame๋‹จ์œ„ seek

    • mMediaPlayer.seekToExact(int msec); //์‹œ๊ฐ„ ๋‹จ์œ„ seek

ย 

  1. ์žฌ์ƒ ์ข…๋ฃŒ

์žฌ์ƒ ์ข…๋ฃŒ๋ฅผ ์›ํ•˜์‹œ๊ฑฐ๋‚˜ OnCompletionListener์˜ onCompletion๋ฅผ ๋ฐ›์•˜์„ ๊ฒฝ์šฐ ์•„๋ž˜์˜ ํ•จ์ˆ˜๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

public void stop();

public void release();

ย 

๋ถ๋งˆํฌ ๊ด€๋ฆฌย 

๋ถ๋งˆํฌ ๊ด€๋ฆฌ๋Š” ์žฌ์ƒ ์ค‘์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ KollusPlayerBookmarkListener๋ฅผ ๋“ฑ๋กํ–ˆ์„ ๋•Œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

์ถ”๊ฐ€/์‚ญ์ œ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ์ž‘์—…์ด์–ด์„œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ ๊ณน๋ฐ”๋กœ UI์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

onBookmark๊ฐ€ ๋ฆฌ์Šค๋‹ ๋˜์—ˆ์„ ๋•Œ ๋ถ๋งˆํฌ ์ •๋ณด์™€ ์ถ”๊ฐ€/์‚ญ์ œ ๊ฐ€๋Šฅ์—ฌ๋ถ€๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย 

  • ๋ถ๋งˆํฌ ์ถ”๊ฐ€ ๋ฐ ๊ฐฑ์‹ ย 

public void updateKollusBookmark(int position, String label); position : ๋ถ๋งˆํฌํ•  ์œ„์น˜์˜ ๋ฐ€๋ฆฌ์ดˆ

label : ๋ถ๋งˆํฌํ•  ์œ„์น˜์˜ ํƒ€์ดํ‹€. ์—†์œผ๋ฉด โ€œโ€๋ฌธ์ž๋ฅผ ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

updateKollusBookmark๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด onBookmarkUpdated๊ฐ€ ๋ฆฌ์Šค๋‹ ๋ฉ๋‹ˆ๋‹ค.

โ€ป ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์ด๋ฉด ์ถ”๊ฐ€๋˜๊ณ  ๊ธฐ์กด ํ•ญ๋ชฉ์ด๋ฉด ๊ฐฑ์‹ ์ด ๋ฉ๋‹ˆ๋‹ค.

  • ๋ถ๋งˆํฌ ์‚ญ์ œ

public void deleteKollusBookmark(int position);

position : ์‚ญ์ œํ•  ๋ถ๋งˆํฌ ๋ฐ€๋ฆฌ์ดˆ

deleteKollusBookmark๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด onBookmarkDeleted๊ฐ€ ๋ฆฌ์Šค๋‹ ๋ฉ๋‹ˆ๋‹ค.

ย 

Copyright ยฉ CATENOID, lnc. All Rights Reserved.
E-mail. support@catenoid.net | Tel. 1544-4367