<!--
# 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)

Dieses Plugin bietet die Möglichkeit zum Aufzeichnen und Wiedergeben von audio-Dateien auf einem Gerät.

**Hinweis**: die aktuelle Implementierung eine W3C-Spezifikation für Medien-Capture nicht einhalten, und wird nur zu Informationszwecken zur Verfügung gestellt. Zukünftiger Implementierungen wird an der aktuellen W3C-Spezifikation und kann die aktuellen APIs entweiht.

Dieses Plugin wird einen globalen `Media`-Konstruktor definiert.

Obwohl im globalen Gültigkeitsbereich, steht es nicht bis nach dem `deviceready`-Ereignis.

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

## Installation

    cordova plugin add cordova-plugin-media
    

## Unterstützte Plattformen

  * Android
  * BlackBerry 10
  * iOS
  * Windows Phone 7 und 8
  * Tizen
  * Windows 8
  * Windows
  * Browser

## Windows Phone Macken

  * Nur eine Mediendatei kann gleichzeitig abgespielt werden.

  * Es gibt strenge Beschränkungen, wie Ihre Anwendung mit anderen Medien interagiert. Finden Sie in der [Microsoft-Dokumentation für details](http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184838(v=vs.92).aspx).

## Medien

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

### Parameter

  * **Src**: ein URI mit der audio-Inhalte. *(DOM-String und enthält)*

  * **MediaSuccess**: (Optional) der Rückruf, der nach dem führt ein `Media` -Objekt abgeschlossen hat, die aktuelle Wiedergabe, Aufzeichnung oder Stop-Action. *(Funktion)*

  * **Medienfehler**: (Optional) der Rückruf, der ausgeführt wird, wenn ein Fehler auftritt. *(Funktion)*

  * **MediaStatus**: (Optional) der Rückruf, der ausgeführt wird, um Statusänderungen anzugeben. *(Funktion)*

### Konstanten

Die folgenden Konstanten werden als einzigem Parameter an den `mediaStatus`-Rückruf gemeldet:

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

### Methoden

  * `media.getCurrentPosition`: Gibt die aktuelle Position in einer Audiodatei.

  * `media.getDuration`: Gibt die Dauer einer Audiodatei.

  * `media.play`: Starten Sie oder fortsetzen Sie der Wiedergabe einer Audiodatei.

  * `media.pause`: Anhalten der Wiedergabe einer Audiodatei.

  * `media.release`: Das zugrunde liegende Betriebssystem audio Ressourcen frei.

  * `media.seekTo`: Verschiebt die Position innerhalb der audio-Datei.

  * `media.setVolume`: Stellen Sie die Lautstärke für die Audiowiedergabe.

  * `media.startRecord`: Starten der Aufnahme einer audio-Datei.

  * `media.stopRecord`: Stoppen Sie die Aufnahme einer audio-Datei.

  * `media.stop`: Abspielen einer Audiodatei zu stoppen.

### Zusätzliche ReadOnly-Parameter

  * **Position**: die Position innerhalb der audio-Wiedergabe in Sekunden.
    
      * Nicht während des Spiels automatisch aktualisiert; Rufen Sie `getCurrentPosition` zu aktualisieren.

  * **Dauer**: die Dauer der Medien, in Sekunden.

## media.getCurrentPosition

Gibt die aktuelle Position in einer Audiodatei. Außerdem aktualisiert `das Medienobjekt` `position`-Parameter.

    media.getCurrentPosition(mediaSuccess, [mediaError]);
    

### Parameter

  * **MediaSuccess**: der Rückruf, der die aktuelle Position in Sekunden übergeben wird.

  * **Medienfehler**: (Optional) der Rückruf ausgeführt, wenn ein Fehler auftritt.

### Kurzes Beispiel

    // 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

Gibt die Dauer einer Audiodatei in Sekunden. Wenn die Dauer unbekannt ist, wird der Wert-1 zurückgegeben.

    media.getDuration();
    

### Kurzes Beispiel

    // 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

Pausen Abspielen einer Audiodatei.

    media.pause();
    

### Kurzes Beispiel

    // 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

Startet oder setzt fort, Abspielen einer Audiodatei.

    media.play();
    

### Kurzes Beispiel

    // 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 Macken

  * **NumberOfLoops**: übergeben Sie diese Option, um die `play` -Methode können Sie die Anzahl der angeben soll die Mediendatei ausspielen, z.B.:
    
        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
        myMedia.play({ numberOfLoops: 2 })
        

  * **PlayAudioWhenScreenIsLocked**: übergeben Sie diese Option, um die `play` -Methode können Sie angeben, ob Sie möchten Wiedergabe zu ermöglichen, wenn der Bildschirm gesperrt ist. Wenn legen Sie auf `true` (der Standardwert), der Zustand der die mute Taste wird ignoriert, z.B.:
    
        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
        myMedia.play({ playAudioWhenScreenIsLocked : false })
        

  * **Reihenfolge der Dateisuche**: Wenn nur ein Dateiname oder Pfad angegeben wird, sucht iOS in das `www` Verzeichnis für die Datei, dann in der Anwendung `documents/tmp` Verzeichnis:
    
        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

Das zugrunde liegende Betriebssystem audio Ressourcen frei. Dies ist besonders wichtig für Android, da gibt es eine begrenzte Anzahl von OpenCore-Instanzen für die Medienwiedergabe. Anwendungen sollten die `release`-Funktion für alle `Media`-Ressourcen aufrufen, die nicht mehr benötigt wird.

    media.release();
    

### Kurzes Beispiel

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

## media.seekTo

Legt die aktuelle Position in einer Audiodatei.

    media.seekTo(milliseconds);
    

### Parameter

  * **miliseconds**: die Position die Wiedergabeposition innerhalb des Audiotracks in Millisekunden festgelegt.

### Kurzes Beispiel

    // 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);
    

### BlackBerry 10 Macken

  * BlackBerry OS 5-Geräten unterstützt nicht.

## media.setVolume

Stellen Sie die Lautstärke für eine audio-Datei.

    media.setVolume(volume);
    

### Parameter

  * **volume**: die Lautstärke für Wiedergabe fest. Der Wert muss im Bereich zwischen 0,0 und 1,0 liegen.

### Unterstützte Plattformen

  * Android
  * iOS

### Kurzes Beispiel

    // 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

Beginnt mit der Aufnahme einer audio-Datei.

    media.startRecord();
    

### Unterstützte Plattformen

  * Android
  * iOS
  * Windows Phone 7 und 8
  * Windows

### Kurzes Beispiel

    // 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();
    }
    

### Android Eigenarten

  * Android-Geräte aufnehmen Audio im Adaptive Sprachcodecs Format. Die angegebene Datei sollte mit einer Endung *.amr* enden.
  * Die Hardware-Lautstärkeregler sind bis zu den Mediendatenträger angeschlossen, während alle Medienobjekte lebendig sind. Das letzte erstelltes Medium Objekt `release()` aufgerufen hat, werden einmal die Lautstärkeregler auf ihr Standardverhalten zurückgesetzt. Die Steuerelemente werden auch auf Seitennavigation, zurückgesetzt, wenn dies alle Medienobjekte freigibt.

### iOS Macken

  * iOS nur Datensätze, die Dateien des Typs *WAV* und gibt ein Fehler, wenn die Dateinamen-Erweiterung ist richtig nicht.

  * Wenn ein vollständiger Pfad nicht angegeben ist, wird die Aufzeichnung in der Anwendung platziert `documents/tmp` Verzeichnis. Erreichbar über die `File` -API verwenden `LocalFileSystem.TEMPORARY` . Allen Unterverzeichnissen in Rekordzeit angegeben muss bereits vorhanden sein.

  * Dateien können aufgezeichnet und spielte mit die Dokumenten URI zurück:
    
        var myMedia = new Media("documents://beer.mp3")
        

### Windows-Eigenheiten

  * Windows-Geräte können MP3, M4A und WMA-Formate für die aufgezeichneten Audio. Jedoch ist in den meisten Fällen es nicht möglich, MP3 für audio-Aufnahme auf *Windows Phone 8.1* -Geräten verwenden, da ein MP3-Encoder [nicht mit Windows Phone geliefert ist](https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.mediaproperties.mediaencodingprofile.createmp3.aspx).

  * Wenn Sie ein vollständiger Pfad nicht angegeben ist, wird die Aufnahme im AppData/Temp-Verzeichnis platziert. Erreichbar über die `Datei` API verwenden `LocalFileSystem.TEMPORARY` oder "ms-Appdata: / / / Temp /<filename>' URI.

  * Allen Unterverzeichnissen in Rekordzeit angegeben muss bereits vorhanden sein.

### Tizen Macken

  * Tizen Geräten unterstützt nicht.

## media.stop

Beendet die Wiedergabe einer Audiodatei.

    media.stop();
    

### Kurzes Beispiel

    // 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

Stoppt die Aufnahme einer audio-Datei.

    media.stopRecord();
    

### Unterstützte Plattformen

  * Android
  * iOS
  * Windows Phone 7 und 8
  * Windows

### Kurzes Beispiel

    // 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 Macken

  * Tizen Geräten unterstützt nicht.

## Medienfehler

Ein `MediaError`-Objekt wird an die `mediaError`-Callback-Funktion zurückgegeben, wenn ein Fehler auftritt.

### Eigenschaften

  * **Code**: einer der vordefinierten Fehlercodes aufgeführt.

  * **message**: eine Fehlermeldung beschreibt die Details des Fehlers.

### Konstanten

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