목차

멀티미디어 재생 (StreamingMedia) 디바이스API 가이드 프로그램

개요

멀티미디어 재생(StreamingMedia) 가이드 프로그램은 디바이스 API 실행환경을 활용하여 하이브리드 앱을 개발 시 참고 및 활용될 수 있도록 구현된 전자정부 디바이스 API에 대한 가이드 앱으로써, 모바일 스마트 디바이스의 Streaming Media관련 기능을 JavaScript기반으로 구성 된 StreamingMedia DeviceAPI를 통하여 멀티미디어(동영상)을 실시간으로 볼수 있도록 내장 미디어 플레이어로 연동하는 기능을 지원한다.

특징

본 가이드 프로그램의 주요 기능으로 웹 서버와 연동하여 멀티미디어 목록 조회, 멀티미디어 재생 등의 기능을 제공하고 있다.

기능흐름도

전제 조건

구분 내용
Local 디바이스 개발 환경 Xcode 8.0 (8A218a), Cordova 6.4.0
서버 사이드 개발 환경 전자정부표준프레임워크 개발환경3.6
Mash up Open API 연계 N/A
테스트 디바이스 iPhone 6 , iPad Air
테스트 플랫폼 iOS 9.3, iOS 10.0
추가 라이브러리 적용N/A

제약사항

구분 내용
지원 디바이스
및 플랫폼
N/A
크로스 도메인
사용
폰갭에서 특정 외부 도메인이나 외부 도메인의 하위 도메인을 사용해야할 경우,
Res/xml/config.xml에서 <access origin=”” />에 외부 도메인 주소를 추가 설정해야 외부 도메인에 접속할 수 있다.
라이선스N/A
스트리밍 파일
포멧
본 가이드의 Streaming Media Plug-in은 iOS MediaLayer를 사용하므로 플레이 할 수 있는 미디어 제한사항 있다.
다음 링크로 iOS MediaLayer에서 지원하는 미디어의 포멧과 codec을 확인 할 수 있다.
iOS Supported Media Formats

설명

멀티미디어 재생(StreamingMedia) 디바이스API 가이드 프로그램은 스트리밍 미디어 목록보기, 미디어 재생(클릭 시 내장 미디어 플레이어 연동), 미디어 재생 횟수 업데이트 등의 기능으로 구성되어 있다.(관련기능 부분참조)

Device Application

관련 소스

유형대상소스명비고
CSS assets/www/css/egovframwork/mbl/hyb/StreamingMedia.css 멀티미디어 재생 API 가이드 프로그램 주요 Cascading Style Sheets
IMAGE assets/www/images/egovframwork/mbl/hyb/ 멀티미디어 재생 API 가이드 프로그램 주요 Image 폴더
JS assets/www/js/egovframwork/mbl/hyb/StreamingMediaAPI.js 멀티미디어 재생 API 가이드 프로그램 주요 JavaScript
HTML assets/www/StreamingMedia.html멀티미디어 재생 API 메인 페이지
HTML assets/www/intro.html멀티미디어 재생 API Intro 페이지
HTML assets/www/license.html멀티미디어 재생 API 라이센스 페이지
HTML assets/www/overview.html멀티미디어 재생 API 기능설명 페이지
RES [Project_Name]/Resources/ 멀티미디어 재생 API 가이드 프로그램 주요 Resource 폴더
PLIST [Project_Name]/Resources/[Project_Name]-Info.plist iOS 어플리케이션 설정 파일

활용 API

EgovInterface(request)
window.plugins.EgovInterface.request(url, params, onSuccess);
파라미터설명비고
url웹서버로 요청 할 URI서버 URL 설정은 환경설정 참조
parames입력 파라미터 json Object 타입으로 입력
onSuccessPOST Method에 대한 성공시 리턴되는 함수 json타입 데이터 처리
Streaming Media Play Plug-in
window.plugins.streamingMedia.playVideo(resultURL, options);
파라미터설명비고
URL멀티미디어 URL
options 콜백 함수 설정등의 option 설정

Server Application

관련 소스

유형대상소스명비고
Controlleregovframework.hyb.mbl.stm.web.EgovStreamingMediaAPIController.java멀티미디어 재생 API 가이드 프로그램 Controller Class
Serviceegovframework.hyb.mbl.stm.service.EgovStreamingMediaAPIService.java멀티미디어 재생 API 가이드 프로그램 Service Class
ServiceImplegovframework.hyb.mbl.stm.service.impl.EgovStreamingMediaAPIServiceImpl.java멀티미디어 재생 API 가이드 프로그램 ServiceImpl Class
VOegovframework.hyb.mbl.stm.service.StreamingMediaAPIVO.java멀티미디어 재생 API 가이드 프로그램 VO Class
DAOegovframework.hyb.mbl.stm.service.impl.StreamingMediaAPIDAO.java멀티미디어 재생 API 가이드 프로그램 Dao Class
QUERY XMLresources/egovframework/sqlmap/hyb/mbl/stm/EgovStreamingMediaDeviceAPIGuide_SQL_xxx.xml멀티미디어 재생 API 가이드 프로그램 QUERY XML

관련 테이블

테이블명테이블명(영문)비고
미디어media미디어 정보 관리
파일상세정보file_detail_info파일의 상세정보

테이블 정의서

No컬럼ID컬럼명타입길이NULLKEY
1SN일련번호NUMERIC6NotNullpk
2UUIDUUIDVARCHAR50NotNullpk
3MD_CODE확장자VARCHAR40Null
4MD_SJ파일명VARCHAR255Null
5USEYN사용유무VARCHAR1Null
6REVIV_CO재생횟수VARCHAR40Null
7FILE_SN파일상세정보 테이블의 일련번호NUMERIC20Nullfk
No.컬럼컬럼명타입길이NullKEY
1FILE_SN파일연번NUMERIC20NotNullpk
2FILE_STRE_COURS파일저장경로VARCHAR2000Null
3STRE_FILE_NM저장파일명VARCHAR255Nullpk
4ORIGNL_FILE_NM원파일명VARCHAR255Null
5FILE_EXTSN파일확장자VARCHAR20Null
6FILE_CN파일내용BLOB Null
7FILE_SIZE파일크기NUMERIC8Null

ERD

환경설정

멀티미디어 재생(Streaming Media) 디바이스API 가이드 프로그램에서 제공하는 멀티미디어 재생(실시간) 등의 기능을 활용하기 위하여 필요한 항목 및 그 환경 설정은 다음과 같다.

Device Application

config.xml

    <feature name="InterfaceAPI">
        <param name="ios-package" value="EgovInterface"/>
    </feature>
    <feature name="StreamingMedia">
        <param name="ios-package" value="StreamingMedia" />
    </feature>

[Project_Name]/eGovModule/EGovComModule.h

    #define kSERVER_URL     @"Server_URL"

Server Application

resource/egovframework/sqlmap/sql-map-config_[DB명].xml

<sqlMap resource="egovframework/sqlmap/hyb/mbl/stm/EgovStreamingMediaDeviceAPIGuide_SQL_[DB명].xml"/>

관련기능

멀티미디어 재생(StreamingMedia) API 가이드 프로그램은 크게 미디어 목록 조회, 해당 미디어 재생(실시간) 및 재생횟수 업데이트 기능으로 구성되어 있다.

멀티미디어 목록 조회하기

비즈니스 규칙

관련 코드

미디어 목록 조회 및 화면표시
function fn_egov_medialist() {
    
    console.log(">> media List");
    var url = "/stm/mediaInfoList.do";
    var params = {};
    fileSN ="";
    window.plugins.EgovInterface.request(url, params, function(jsondata) {
            resultJson = jsondata;
                                      
            if(resultJson.resultState == "OK"){
               var strhtml="";
               $(resultJson.resultSet).each(function(){
                                            
                         var sn = this.sn;
                         var mdSj = this.mdSj;
                         var revivCo = this.revivCo;
                         var mdcode = this.mdCode;
                                                                
                         strhtml += '<li>';
                         strhtml += '     <a href="#" onclick="javascript:fn_egov_filelist_go(\'' + sn + '\')">';
                         strhtml += '         <h3>제목:  ' + mdSj + '</h3>';
                         strhtml += '         <h3>파일타입: ' + mdcode + '</h3>';
                         strhtml += '         <h3>재생횟수:  ' +  revivCo + '</h3>';
                         strhtml += '    </a>';
                         strhtml += '</li>';
                                                                      
                    });
                                         
                var theList = $('#theList');
                theList.html(strhtml);
                $.mobile.changePage("#mediaInfo", "slide", false, false);
                theList.listview("refresh");
                infoScroll.refresh();
                                         
            }else{
                $("#alert_dialog").click( function() {
                      jAlert('데이터 전송 중 오류가 발생 했습니다.', '전송 오류', 'c');
                      });
                  }
                                         
            }, function(result){
                    alert("error > "+result);
            });
    
}

관련 화면

미디어 목록보기미디어 목록 상세 화면

멀티미디어 재생하기

비즈니스 규칙

관련 코드

멀티미디어 재생 확인 및 미디어 상세 정보 조회
function fn_egov_filelist_go(input) {
    
    console.log(">>> sn: " + input);
    
    jConfirm('동영상을 재생하시겠습니까?', '알림', 'c', function(r) {
             if (r == true) {
             
             var url = "/stm/getMediaURL.do";
             var params = {sn : input};
             
             window.plugins.EgovInterface.request(url, params, function(jsondata) {
                    resultJson = jsondata;
                                               
                    if(resultJson.resultState == "OK"){
                        fn_egov_playMedia(resultJson.resultURL, input);
                         console.log("RevivCo Update OK.");
                                                  
                    }else{
                         console.log("RevivCo Update Error.");
                    }
                    }, function(result){
                         alert("error > "+result);
             });
             
             }
             });
}
멀티미디어 재생
function fn_egov_filelist_go(input) {
  
    jConfirm('동영상을 재생하시겠습니까?', '알림', 'c', function(r) {
        if (r == true) {
        	var resultURL = server_url + "/stm/getMediaStreaming.do?sn=" + input;                	
        	fn_egov_playMedia(resultURL, input);        
        }
    });
               
}

function fn_egov_playMedia(resultURL, input){
  
    var options = {
        successCallback: function() {
            console.log("Video was closed without error.");
            $.mobile.changePage("#main", "slide", false, false);
        },
        errorCallback: function(errMsg) {
            console.log("Error! " + errMsg);
        },
        orientation: '' // 'landscape'
    };
    
    fn_egov_updateMediaInfoRevivCo(input);
    window.plugins.streamingMedia.playVideo(resultURL, options);

}
멀티미디어 재생횟수 업데이드
function fn_egov_updateMediaInfoRevivCo(inputSn){
    var url = "/stm/updateMediaInfoRevivCo.do";
    var params = {sn : inputSn};
    console.log(">>> inputSn:" + inputSn);
    
    window.plugins.EgovInterface.request(url, params, function(jsondata) {
            resultJson = jsondata;
                                         
            if(resultJson.resultState == "OK"){
                console.log("RevivCo Update OK.");
            }else{
                console.log("RevivCo Update Error.");
            }
            }, function(result){
                  alert("error > "+result);
        });

}

관련 화면 및 수행매뉴얼

ActionURLController methodQueryID
미디어 목록 조회 /stm/mediaInfoList.doselectMediaInfoList“streamingMediaAPIDAO.selectMediaInfoList”
미디어 요청 /stm/getMediaStreaming.dogetStreamMediaURL“streamingMediaAPIDAO.selectMediaFileInfo”
재생횟수 업데이트 /stm/updateMediaInfoRevivCo.doupdateMediaInfoRevivCo“streamingMediaAPIDAO.updateMediaInfoRevivCo”
미디어 재생 확인미디어 재생 (내장 플레이어 연동)미디어 재생 횟수 업데이트

컴파일 디버깅 배포

컴파일

Device Applicaton 컴파일 방법

Server Applicaton 컴파일 방법

디버깅

디바이스 어플리케이션에서 발생한 오류 내용 확인 및 디버깅을 위해서는 폰갭 프레임워크에서 제공하는 console.log를 이용할 수 있다. console.log 함수는 자바스크립트 구문에서 사용할 수 있는 디버그 코드로 이클립스 및 Xcode에서 확인 할 수 있다.

function fn_egov_network_check(doCheck)
{
    console.log('DeviceAPIGuide fn_egov_network_check');
    var networkState = navigator.network.connection.type;
    ...
}


배포

멀티미디어 재생(Streaming Media) 디바이스 API 가이드 다운로드 : Click

참고자료