<?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="1.0.1">

    <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=">=2.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>
