Android용 플레이어 적용
- 인쇄
- PDF
Android용 플레이어 적용
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
Classic/VPC 환경에서 이용 가능합니다.
Android용 플레이어 적용에서는 Video Player Enhancement Android SDK를 활용하여 Android용 Native 플레이어를 적용하고 설정하는 예제를 설명합니다.
참고
Android SDK 예제를 실행하려면 Standard 요금제를 이용해야 하며, 다음과 같은 환경이 요구됩니다.
- Android Studio
- 외부와 통신이 가능한 환경
플레이어 적용
플레이어를 적용하는 방법은 다음과 같습니다.
Android Studio를 실행해 주십시오.
AndroidManifest.xml에 다음 코드를 추가해 주십시오.
<application ... android:hardwareAccelerated="true" android:usesCleartextTraffic="true" tools:replace="android:theme" > <activity ... android:configChanges="orientation|screenSize" >
탭 메뉴를 클릭하여 [Project] 탭으로 변경한 후 libs에 파일을 추가해 주십시오.
<예시> ncplayerNativeSdkAosbeta
app 레벨의 build.gradle 파일을 열어, libs에 추가한 파일에 대한 의존성을 선언한 후 sync를 실행해 주십시오.
implementation files('libs/ncplayerNativeSdkAosbeta.aar') implementation 'com.google.code.gson:gson:2.10.1'
플레이어 설정
플레이어를 설정하는 방법은 다음과 같습니다.
- 다음 코드를 적용하여 메소드를 호출해 주십시오.
class MainActivity : AppCompatActivity() { private lateinit var webView: WebView; override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) webView = findViewById(R.id.webView) // BuildConfig.APPLICATION_ID를 appId로 저장 // demo 실행용 packageId 이용, 추후 실제 packageId 연결 필요 var packageId = "com.sgrsoft.vpe.NCPlayerDemo" // 등록된 APPLICATION_ID 사용 var licenseKey = "2c58aba24474208958ea3e50c4bee263" // 라이선스 키를 보내기 위해 저장 // NCPlayerVIew 생성 var player = NCPlayerView() // NCPlayerView 웹뷰와 연결 player.webView = webView NCPlayer.prefs.setString("appId",packageId) NCPlayer.prefs.setString("licenseKey",licenseKey) val playerOptions = """ { "playlist":[ { "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8", "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202211/083fff831d8904cd9d9c180e5c10be0b.png", "description":{ "title":"네이버클라우드 테스트 영상1111", "created_at":"2022.07.13111", "profile_name":"네이버클라우드", "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png" }, }, { "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8", "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202211/083fff831d8904cd9d9c180e5c10be0b.png", "description":{ "title":"네이버 클라우드 테스트 영상1111", "created_at":"2022.07.13111", "profile_name":"네이버 클라우드", "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png" }, }, { "file":"https://pdeubxscnimo10174288.cdn.ntruss.com/hls/uqyCPUeJ1Ne8ml9OtPsizg__/shorts24/j5IXBfIJ83893893_shorts,1080,720,480,p.mp4.smil/master.m3u8", "poster":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202211/083fff831d8904cd9d9c180e5c10be0b.png", "description":{ "title":"네이버 클라우드 테스트 영상1111", "created_at":"2022.07.13111", "profile_name":"네이버 클라우드", "profile_image":"https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202208/d127c8db642716d84b3201f1d152e52a.png" }, } ], "autostart":true, "muted":true, "keyboardShortcut":true, "controls":true, "ui":"pc", "controlBtn":{ "play":true, "fullscreen":true, "volume":true, "times":true, "pictureInPicture":true, "setting":true, }, "progressBarColor":"#ff0000", "controlActiveTime":3000, "startMutedInfoNotVisible":false, "aspectRatio":"16/9", "objectFit":"contain", "playRateSetting":[0.5,0.75,1,1.5,2], "seekingPreview":true, "autoPause":false, "repeat":false, "touchGestures":true, "descriptionNotVisible":false, } """ player.play( playerOptions,this ) } }
- 다음 코드를 적용하여 NCPlayerEventInterface를 상속받는 Class를 생성해 주십시오.
class PlayerDelegate: NCPlayerEventInterface{}
- 다음 코드를 적용하여
onCreated
에 delegate를 설정해 주십시오.override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) var delegate = PlayerDelegate() NCPlayer.delegate = delegate } // 가로 세로 여부 override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { NCPlayer.delegate?.NCPlayerIsLandscape(false) } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { NCPlayer.delegate?.NCPlayerIsLandscape(true) } } class PlayerDelegate: NCPlayerEventInterface{ var TAG:String = "PlayerDelegate" // 컨트롤바 활성화 or 비활성화 여부 override fun NCPlayerOnControlbarActive(active: JSONObject?) { Log.d(TAG, "NCPlayerOnControlbarActive: $active") } // 재생이 끝까지 완료되었을 때 발생하는 이벤트 override fun NCPlayerOnEnd() { Log.d(TAG, "NCPlayerOnEnd: ") } // 전체 화면 상태 여부 override fun NCPlayerOnFullscreenState(state: Boolean) { Log.d(TAG, "NCPlayerOnFullscreenState: ") } // 다음 영상으로 넘어갈 때 발생하는 이벤트 override fun NCPlayerOnNextTrack(data: JSONObject?) { Log.d(TAG, "NCPlayerOnNextTrack: $data") } // 영상이 일시 정지되었을 때 발생하는 이벤트 override fun NCPlayerOnPause() { Log.d("TAG", "NCPlayerOnPause: ") } // 영상 재생 요청이 성공하였을 때 발생하는 이벤트 override fun NCPlayerOnPlay() { Log.d("TAG", "NCPlayerOnPlay: ") } // 이전 영상으로 넘어갈 때 발생하는 이벤트 override fun NCPlayerOnPrevTrack(data: JSONObject?) { Log.d(TAG, "NCPlayerOnPrevTrack: $data") } // 현재 재생 시간이 변경될 때 발생하는 이벤트 override fun NCPlayerOnTimeUpdate(data: JSONObject?) { Log.d(TAG, "NCPlayerOnTimeUpdate: $data") } // 가로 세로 여부 override fun NCPlayerIsLandscape(state: Boolean) { Log.d(TAG, "NCPlayerIsLandscape: $state") } }
이 문서가 도움이 되었습니까?