diff -r 2a9601315dfc -r 98ccebc37403 javauis/amms_qt/javasrc/com/nokia/amms/AMMSPlugin.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/amms_qt/javasrc/com/nokia/amms/AMMSPlugin.java Fri May 14 15:47:24 2010 +0300 @@ -0,0 +1,141 @@ +/* +* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Adds PriorityControl when a player is created. +* +*/ + +package com.nokia.amms; + +import com.nokia.amms.control.PriorityControl; +import com.nokia.mid.impl.media.AudioOutputControl; +import com.nokia.microedition.media.InternalPlayer; +import com.nokia.microedition.media.PlayerImpl; +import com.nokia.microedition.media.PlugIn; +import com.nokia.microedition.media.ManagerImpl; +import com.nokia.microedition.media.NativeError; +import javax.microedition.media.MediaException; +import javax.microedition.media.protocol.DataSource; +import java.io.IOException; + + +// CLASS DEFINITION +/** + * MMA Manager calls AMMSPlugin class when a new player is created. + * The plugin adds PriorityControl to the created player. + */ +public class AMMSPlugin implements PlugIn +{ + private final String PRIORITY_CONTROL = + "javax.microedition.amms.control.PriorityControl"; + private final String AUDIO_OUTPUT_CONTROL = + "com.nokia.mid.media.AudioOutputControl"; + + /** + * Default constructor. + */ + public AMMSPlugin() + { + } + + /** + * From PlugIn. Empty implementation. + */ + public String[] getSupportedContentTypes(String aProtocol) + { + return new String[ 0 ]; + } + + /** + * From PlugIn. Empty implementation. + */ + public String[] getSupportedProtocols(String aContentType) + { + return new String[ 0 ]; + } + + /** + * From PlugIn. Empty implementation. + */ + public InternalPlayer createPlayer(DataSource aDataSource) + throws MediaException, IOException + { + return null; + } + + /** + * From PlugIn. + */ + public void preparePlayer(InternalPlayer aPlayer) throws MediaException + { + // Do not add PriorityControl if the player is not derived from + // PlayerImpl (because native player handle is needed). + if (aPlayer instanceof PlayerImpl) + { + PlayerImpl player = (PlayerImpl)aPlayer; + + int eventSource = ManagerImpl.getEventSource(); + createAndAddPriorityControlToPlayer(eventSource, player); + createAndAddAudioOutputControlToPlayer(eventSource, player); + } + + } + /** + * Create and add priority control to player + */ + public void createAndAddPriorityControlToPlayer(int eventSource, PlayerImpl aPlayer) + { + // Create native PriorityControl and add it to the native player. + int nativePriorityControl = _createNativePriorityControl( + eventSource, aPlayer.getPlayerHandle()); + + NativeError.check(nativePriorityControl); + + + // Create java side control. + PriorityControl priorityControl = new PriorityControl(aPlayer); + priorityControl.initControl(eventSource, nativePriorityControl, + null); // This control does not belong to any module. + + aPlayer.addControl(priorityControl, PRIORITY_CONTROL); + } + /** + * Create and add AudioOutput control to player + */ + public void createAndAddAudioOutputControlToPlayer(int eventSource, PlayerImpl aPlayer) + { + // Create native AudioOutputControl and add it to the native player. + int nativeAudioOutputControl = _createNativeAudioOutputControl( + eventSource, aPlayer.getPlayerHandle()); + NativeError.check(nativeAudioOutputControl); + + + // Create java side control. + AudioOutputControl audioOutputControl = new AudioOutputControl(aPlayer); + audioOutputControl.initControl(eventSource, nativeAudioOutputControl, + null); // This control does not belong to any module. + audioOutputControl.SetAudioOutputToNative(); + aPlayer.addControl(audioOutputControl, AUDIO_OUTPUT_CONTROL); + } + + /** + * Creates native PriorityControl and adds it + */ + private static native int _createNativePriorityControl( + int aEventSource, int aPlayerHandle); + /** + * Creates native AudioOutputControl and adds it + */ + private static native int _createNativeAudioOutputControl( + int aEventSource, int aPlayerHandle); +}