<!--
# license: Licensed to the Apache Software Foundation (ASF) under one
#         or more contributor license agreements.  See the NOTICE file
#         distributed with this work for additional information
#         regarding copyright ownership.  The ASF licenses this file
#         to you under the Apache License, Version 2.0 (the
#         "License"); you may not use this file except in compliance
#         with the License.  You may obtain a copy of the License at
#
#           http://www.apache.org/licenses/LICENSE-2.0
#
#         Unless required by applicable law or agreed to in writing,
#         software distributed under the License is distributed on an
#         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#         KIND, either express or implied.  See the License for the
#         specific language governing permissions and limitations
#         under the License.
-->

# cordova-plugin-media

[![Build Status](https://travis-ci.org/apache/cordova-plugin-media.svg)](https://travis-ci.org/apache/cordova-plugin-media)

이 플러그인 기록 장치에 오디오 파일을 재생 하는 기능을 제공 합니다.

**참고**: 현재 구현 미디어 캡처에 대 한 W3C 사양을 준수 하지 않는 및 편의 위해서만 제공 됩니다. 미래 구현 최신 W3C 사양을 준수 한다 고 현재 Api 사용 중지 될 수 있습니다.

이 플러그인은 글로벌 `Media` 생성자를 정의 합니다.

전역 범위에 있지만 그것은 불가능까지 `deviceready` 이벤트 후.

    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        console.log(Media);
    }
    

## 설치

    cordova plugin add cordova-plugin-media
    

## 지원 되는 플랫폼

  * 안 드 로이드
  * 블랙베리 10
  * iOS
  * Windows Phone 7과 8
  * Tizen
  * 윈도우 8
  * 윈도우
  * 브라우저

## Windows Phone 단점

  * 한 번에 하나의 미디어 파일을 다시 재생할 수 있습니다.

  * 응용 프로그램 다른 미디어와 상호 작용 하는 방법에 대 한 엄격한 제한이 있다. [자세한 내용은 Microsoft 문서](http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184838(v=vs.92).aspx) 를 참조 하십시오.

## 미디어

    var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
    

### 매개 변수

  * **src**: 오디오 콘텐츠를 포함 하는 URI. *(DOMString)*

  * **mediaSuccess**: (선택 사항) 후 실행 되는 콜백 한 `Media` 개체 현재 재생, 기록, 또는 중지 작업을 완료 했습니다. *(기능)*

  * **mediaError**: (선택 사항) 오류가 발생 하면 실행 되는 콜백. *(기능)*

  * **mediaStatus**: (선택 사항) 상태 변화를 나타내기 위해 실행 하는 콜백. *(기능)*

### 상수

다음 상수는 `mediaStatus`를 유일한 매개 변수로 보고 됩니다.

  * `Media.MEDIA_NONE` = 0;
  * `Media.MEDIA_STARTING` = 1;
  * `Media.MEDIA_RUNNING` = 2;
  * `Media.MEDIA_PAUSED` = 3;
  * `Media.MEDIA_STOPPED` = 4;

### 메서드

  * `media.getCurrentPosition`: 오디오 파일 내에서 현재 위치를 반환합니다.

  * `media.getDuration`: 오디오 파일의 기간을 반환합니다.

  * `media.play`: 시작 또는 오디오 파일 재생을 다시 시작 합니다.

  * `media.pause`: 오디오 파일의 재생을 일시 중지 합니다.

  * `media.release`: 기본 운영 체제의 오디오 리소스를 해제합니다.

  * `media.seekTo`: 오디오 파일 내에서 위치를 이동합니다.

  * `media.setVolume`: 오디오 재생 볼륨을 설정 합니다.

  * `media.startRecord`: 오디오 파일을 녹음을 시작 합니다.

  * `media.stopRecord`: 오디오 파일 기록을 중지 합니다.

  * `media.stop`: 오디오 파일 재생을 중지 합니다.

### 추가 읽기 전용 매개 변수

  * **위치**: 위치 오디오 재생 시간 (초).
    
      * 플레이; 하는 동안 자동으로 업데이트 전화 `getCurrentPosition` 를 업데이트 합니다.

  * **기간**: 기간, 매체의 초.

## media.getCurrentPosition

오디오 파일 내에서 현재 위치를 반환합니다. 또한 `Media` 개체의 `position` 매개 변수를 업데이트합니다.

    media.getCurrentPosition(mediaSuccess, [mediaError]);
    

### 매개 변수

  * **mediaSuccess**: 현재 위치 (초) 전달 되는 콜백.

  * **mediaError**: (선택 사항) 콜백 실행 오류가 발생 하는 경우에.

### 빠른 예제

    // Audio player
    //
    var my_media = new Media(src, onSuccess, onError);
    
    // Update media position every second
    var mediaTimer = setInterval(function () {
        // get media position
        my_media.getCurrentPosition(
            // success callback
            function (position) {
                if (position > -1) {
                    console.log((position) + " sec");
                }
            },
            // error callback
            function (e) {
                console.log("Error getting pos=" + e);
            }
        );
    }, 1000);
    

## media.getDuration

초 오디오 파일의 기간을 반환합니다. 기간을 알 수 없는 경우-1 값을 반환 합니다.

    media.getDuration();
    

### 빠른 예제

    // Audio player
    //
    var my_media = new Media(src, onSuccess, onError);
    
    // Get duration
    var counter = 0;
    var timerDur = setInterval(function() {
        counter = counter + 100;
        if (counter > 2000) {
            clearInterval(timerDur);
        }
        var dur = my_media.getDuration();
        if (dur > 0) {
            clearInterval(timerDur);
            document.getElementById('audio_duration').innerHTML = (dur) + " sec";
        }
    }, 100);
    

## media.pause

오디오 파일 재생을 일시 중지 합니다.

    media.pause();
    

### 빠른 예제

    // Play audio
    //
    function playAudio(url) {
        // Play the audio file at url
        var my_media = new Media(url,
            // success callback
            function () { console.log("playAudio():Audio Success"); },
            // error callback
            function (err) { console.log("playAudio():Audio Error: " + err); }
        );
    
        // Play audio
        my_media.play();
    
        // Pause after 10 seconds
        setTimeout(function () {
            media.pause();
        }, 10000);
    }
    

## media.play

시작 또는 오디오 파일 재생을 다시 시작 합니다.

    media.play();
    

### 빠른 예제

    // Play audio
    //
    function playAudio(url) {
        // Play the audio file at url
        var my_media = new Media(url,
            // success callback
            function () {
                console.log("playAudio():Audio Success");
            },
            // error callback
            function (err) {
                console.log("playAudio():Audio Error: " + err);
            }
        );
        // Play audio
        my_media.play();
    }
    

### iOS 단점

  * **numberOfLoops**:이 옵션을 전달할는 `play` 시간을 재생 하려면, 예를 들어 미디어 파일의 수를 지정 하는 방법:
    
        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
        myMedia.play({ numberOfLoops: 2 })
        

  * **playAudioWhenScreenIsLocked**:이 옵션을 전달할는 `play` 메서드는 화면이 잠겨 때 재생 수 있도록 지정 하려면. 만약 설정 `true` (기본값) 하드웨어 음소거 버튼의 상태, 예를 들면 무시 됩니다:
    
        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
        myMedia.play({ playAudioWhenScreenIsLocked : false })
        

  * **파일 검색의 순서**: iOS에서 검색 한 파일 이름 또는 간단한 경로 제공 하는 경우는 `www` 파일을 다음 응용 프로그램의 디렉터리 `documents/tmp` 디렉터리:
    
        var myMedia = new Media("audio/beer.mp3")
        myMedia.play()  // first looks for file in www/audio/beer.mp3 then in <application>/documents/tmp/audio/beer.mp3
        

## media.release

기본 운영 체제의 오디오 리소스를 해제합니다. 이것은 유한 양의 미디어 재생용 OpenCore 인스턴스 때문에 안 드 로이드를 위해 특히 중요 하다입니다. 응용 프로그램은 더 이상 필요 없는 모든 `Media` 리소스에 대 한 `release` 함수를 호출 해야 합니다.

    media.release();
    

### 빠른 예제

    // Audio player
    //
    var my_media = new Media(src, onSuccess, onError);
    
    my_media.play();
    my_media.stop();
    my_media.release();
    

## media.seekTo

오디오 파일 내의 현재 위치를 설정합니다.

    media.seekTo(milliseconds);
    

### 매개 변수

  * **밀리초**: 밀리초에서는 오디오에서 재생 위치를 설정 하는 위치.

### 빠른 예제

    // Audio player
    //
    var my_media = new Media(src, onSuccess, onError);
        my_media.play();
    // SeekTo to 10 seconds after 5 seconds
    setTimeout(function() {
        my_media.seekTo(10000);
    }, 5000);
    

### 블랙베리 10 단점

  * 블랙베리 OS 5 장치에서 지원 되지 않습니다.

## media.setVolume

오디오 파일의 볼륨을 설정 합니다.

    media.setVolume(volume);
    

### 매개 변수

  * **볼륨**: 볼륨 재생을 위한 설정. 값은 0.0에서 1.0의 범위 내에서 해야 합니다.

### 지원 되는 플랫폼

  * 안 드 로이드
  * iOS

### 빠른 예제

    // Play audio
    //
    function playAudio(url) {
        // Play the audio file at url
        var my_media = new Media(url,
            // success callback
            function() {
                console.log("playAudio():Audio Success");
            },
            // error callback
            function(err) {
                console.log("playAudio():Audio Error: "+err);
        });
    
        // Play audio
        my_media.play();
    
        // Mute volume after 2 seconds
        setTimeout(function() {
            my_media.setVolume('0.0');
        }, 2000);
    
        // Set volume to 1.0 after 5 seconds
        setTimeout(function() {
            my_media.setVolume('1.0');
        }, 5000);
    }
    

## media.startRecord

오디오 파일 녹음을 시작 합니다.

    media.startRecord();
    

### 지원 되는 플랫폼

  * 안 드 로이드
  * iOS
  * Windows Phone 7과 8
  * 윈도우

### 빠른 예제

    // Record audio
    //
    function recordAudio() {
        var src = "myrecording.mp3";
        var mediaRec = new Media(src,
            // success callback
            function() {
                console.log("recordAudio():Audio Success");
            },
    
            // error callback
            function(err) {
                console.log("recordAudio():Audio Error: "+ err.code);
            });
    
        // Record audio
        mediaRec.startRecord();
    }
    

### 안 드 로이드 단점

  * 안 드 로이드 장치 적응 다중 속도 형식에서 오디오를 기록합니다. 지정 된 파일 *.amr* 확장명으로 끝나야 합니다.
  * 하드웨어 볼륨 제어는 어떤 미디어 객체 살아 있는 동안 미디어 볼륨까지 유선. 일단 개체는 `release()` 호출 마지막 만든된 미디어 볼륨 컨트롤 그들의 기본 동작을 되돌립니다. 컨트롤은 또한 원래 대로 페이지 네비게이션이 모든 매체 개체를 출시.

### iOS 단점

  * iOS만 레코드 형식을 *.wav* 및 반환 오류 경우 파일 이름 확장명의 파일을 수정 하지.

  * 전체 경로 제공 하지 않으면 응용 프로그램의 기록 배치 됩니다 `documents/tmp` 디렉터리. 이 통해 액세스할 수 있는 `File` API를 사용 하 여 `LocalFileSystem.TEMPORARY` . 기록 시간에 지정 된 하위 디렉터리에 이미 존재 해야 합니다.

  * 파일을 기록 하 고 재생할 수 있습니다 문서 URI를 사용 하 여 다시:
    
        var myMedia = new Media("documents://beer.mp3")
        

### 윈도우 특수

  * Windows 장치 MP3, M4A를 사용할 수 있고 WMA 형식 오디오 기록. 그러나 대부분의 경우에서 불가능 MP3 인코더는 [Windows Phone 포함 되지](https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.mediaproperties.mediaencodingprofile.createmp3.aspx) 때문에 *Windows Phone 8.1* 장치에서 오디오 녹음에 대 한 m p 3를 사용 하 여.

  * 전체 경로 제공 하지 않으면 녹음 AppData/temp 디렉터리에 배치 됩니다. 이 통해 액세스할 수 있는 `파일` API를 사용 하 여 `LocalFileSystem.TEMPORARY` 또는 ' ms appdata: 온도 / / / /<filename>' URI.

  * 기록 시간에 지정 된 하위 디렉터리에 이미 존재 해야 합니다.

### Tizen 특수

  * Tizen 장치에서 지원 되지 않습니다.

## media.stop

오디오 파일 재생을 중지 합니다.

    media.stop();
    

### 빠른 예제

    // Play audio
    //
    function playAudio(url) {
        // Play the audio file at url
        var my_media = new Media(url,
            // success callback
            function() {
                console.log("playAudio():Audio Success");
            },
            // error callback
            function(err) {
                console.log("playAudio():Audio Error: "+err);
            }
        );
    
        // Play audio
        my_media.play();
    
        // Pause after 10 seconds
        setTimeout(function() {
            my_media.stop();
        }, 10000);
    }
    

## media.stopRecord

오디오 파일 녹음을 중지 합니다.

    media.stopRecord();
    

### 지원 되는 플랫폼

  * 안 드 로이드
  * iOS
  * Windows Phone 7과 8
  * 윈도우

### 빠른 예제

    // Record audio
    //
    function recordAudio() {
        var src = "myrecording.mp3";
        var mediaRec = new Media(src,
            // success callback
            function() {
                console.log("recordAudio():Audio Success");
            },
    
            // error callback
            function(err) {
                console.log("recordAudio():Audio Error: "+ err.code);
            }
        );
    
        // Record audio
        mediaRec.startRecord();
    
        // Stop recording after 10 seconds
        setTimeout(function() {
            mediaRec.stopRecord();
        }, 10000);
    }
    

### Tizen 특수

  * Tizen 장치에서 지원 되지 않습니다.

## MediaError

`MediaError` 개체는 오류가 발생 하면 `mediaError` 콜백 함수에 반환 됩니다.

### 속성

  * **코드**: 미리 정의 된 오류 코드 중 하나가 아래에 나열 된.

  * **메시지**: 오류 세부 정보를 설명 하는 오류 메시지.

### 상수

  * `MediaError.MEDIA_ERR_ABORTED`= 1
  * `MediaError.MEDIA_ERR_NETWORK`= 2
  * `MediaError.MEDIA_ERR_DECODE`= 3
  * `MediaError.MEDIA_ERR_NONE_SUPPORTED`= 4