<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-media"
    version="2.3.1-dev">

    <name>Media</name>
    <description>Cordova Media Plugin</description>
    <license>Apache 2.0</license>
    <keywords>cordova,media</keywords>
    <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-media.git</repo>
    <issue>https://issues.apache.org/jira/browse/CB/component/12320647</issue>

    <dependency id="cordova-plugin-file" version="^4.0.0" />
    <dependency id="cordova-plugin-compat" version="^1.0.0" />

    <js-module src="www/MediaError.js" name="MediaError">
        <clobbers target="window.MediaError" />
    </js-module>

    <js-module src="www/Media.js" name="Media">
        <clobbers target="window.Media" />
    </js-module>

    <!-- android -->
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="Media" >
                <param name="android-package" value="org.apache.cordova.media.AudioHandler"/>
            </feature>
        </config-file>

        <config-file target="AndroidManifest.xml" parent="/*">
            <uses-permission android:name="android.permission.RECORD_AUDIO" />
            <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        </config-file>

        <source-file src="src/android/AudioHandler.java" target-dir="src/org/apache/cordova/media" />
        <source-file src="src/android/AudioPlayer.java" target-dir="src/org/apache/cordova/media" />
        <source-file src="src/android/FileHelper.java" target-dir="src/org/apache/cordova/media" />
     </platform>

     <!-- amazon-fireos -->
    <platform name="amazon-fireos">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="Media" >
                <param name="android-package" value="org.apache.cordova.media.AudioHandler"/>
            </feature>
        </config-file>

        <config-file target="AndroidManifest.xml" parent="/*">
            <uses-permission android:name="android.permission.RECORD_AUDIO" />
            <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        </config-file>

        <source-file src="src/android/AudioHandler.java" target-dir="src/org/apache/cordova/media" />
        <source-file src="src/android/AudioPlayer.java" target-dir="src/org/apache/cordova/media" />
        <source-file src="src/android/FileHelper.java" target-dir="src/org/apache/cordova/media" />
     </platform>


     <!-- ubuntu -->
     <platform name="ubuntu">
         <config-file target="config.xml" parent="/*">
             <feature name="Media">
                 <param policy_group="microphone" policy_version="1" />
                 <param policy_group="video" policy_version="1" />
             </feature>
         </config-file>
         <header-file src="src/ubuntu/media.h" />
         <source-file src="src/ubuntu/media.cpp" />
     </platform>

     <!-- ios -->
     <platform name="ios">
         <config-file target="config.xml" parent="/*">
             <feature name="Media">
                 <param name="ios-package" value="CDVSound" />
             </feature>
         </config-file>
         <header-file src="src/ios/CDVSound.h" />
         <source-file src="src/ios/CDVSound.m" />
     </platform>

    <!-- blackberry10 -->
    <platform name="blackberry10">
        <source-file src="src/blackberry10/index.js" target-dir="Media" />
        <config-file target="www/config.xml" parent="/widget">
            <feature name="Media" value="Media"/>
        </config-file>
    </platform>

    <!-- wp7 -->
    <platform name="wp7">
        <config-file target="config.xml" parent="/*">
            <feature name="Media">
                <param name="wp-package" value="Media"/>
            </feature>
        </config-file>

        <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities">
            <Capability Name="ID_CAP_MEDIALIB"/>
            <Capability Name="ID_CAP_MICROPHONE"/>
        </config-file>

        <source-file src="src/wp/Media.cs" />
        <source-file src="src/wp/AudioPlayer.cs" />
    </platform>

    <!-- wp8 -->
    <platform name="wp8">
        <config-file target="config.xml" parent="/*">
            <feature name="Media">
                <param name="wp-package" value="Media"/>
            </feature>
        </config-file>

        <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities">
            <Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
            <Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>
            <Capability Name="ID_CAP_MICROPHONE"/>
        </config-file>

        <source-file src="src/wp/Media.cs" />
        <source-file src="src/wp/AudioPlayer.cs" />
    </platform>

    <!-- windows8 -->
    <platform name="windows8">
        <js-module src="src/windows/MediaProxy.js" name="MediaProxy">
            <merges target="" />
        </js-module>

        <config-file target="package.appxmanifest" parent="/Package/Capabilities">
            <DeviceCapability Name="microphone" />
        </config-file>
    </platform>

    <!-- windows -->
    <platform name="windows">
        <js-module src="src/windows/MediaProxy.js" name="MediaProxy">
            <merges target="" />
        </js-module>

        <config-file target="package.appxmanifest" parent="/Package/Capabilities">
            <DeviceCapability Name="microphone" />
        </config-file>
    </platform>

    <!-- tizen -->
    <platform name="tizen">
        <js-module src="src/tizen/MediaProxy.js" name="MediaProxy">
            <runs/>
        </js-module>
    </platform>

    <!-- browser -->
    <platform name="browser">
        <js-module src="www/browser/Media.js" name="BrowserMedia">
            <clobbers target="window.Media" />
        </js-module>
    </platform>

</plugin>
