Package blackberry.audio.Player

Source Code of blackberry.audio.Player.PlayerObject

/*
* Copyright 2010-2011 Research In Motion Limited.
*
* Licensed 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.
*/
package blackberry.audio.Player;

import java.io.InputStream;

import javax.microedition.media.PlayerListener;

import net.rim.device.api.browser.field2.BrowserFieldRequest;
import net.rim.device.api.script.Scriptable;
import blackberry.audio.AudioExtension;
import blackberry.audio.Player.PlayerController.CloseFunction;
import blackberry.audio.Player.PlayerController.PauseFunction;
import blackberry.audio.Player.PlayerController.PlayFunction;
import blackberry.audio.PlayerListener.PlayerListenerObject;

public class PlayerObject extends Scriptable {

    private PlayerController _playerCtrl = null;
    private PlayerListenerObject _playerListenerObj = null;

    private static final String LOCAL_PROTOCOL = "local:///";

    public PlayerObject(final String locator, final String type, final boolean async) throws Exception {
        if (isLocalURI(locator)) {
            final BrowserFieldRequest bfRequest = new BrowserFieldRequest(locator);
            final InputStream is = AudioExtension.getBrowserFieldController().handleResourceRequest(bfRequest).openInputStream();
            _playerCtrl = new PlayerController(is, type, async);
        }
        else {
            _playerCtrl = new PlayerController(locator, async);
        }

        _playerListenerObj = new PlayerListenerObject(this, _playerCtrl.getPlayer());
    }

    /* @Override */
    public Object getField(final String name) throws Exception {
        if (name.equals(PlayFunction.NAME)) {
            return _playerCtrl.new PlayFunction();
        }
        else if (name.equals(PauseFunction.NAME)) {
            return _playerCtrl.new PauseFunction();
        }
        else if (name.equals(CloseFunction.NAME)) {
            return _playerCtrl.new CloseFunction();
        }
        else if (name.equals(PlayerListenerObject.NAME)) {
            return _playerListenerObj;
        }

        else if (name.equals(PlayerController.FIELD_DURATION)) {
            return formatMediaDuration_Output(_playerCtrl.getMediaDuration());
        }
        else if (name.equals(PlayerController.FIELD_STATE)) {
            return formatPlayerState_Ouptut(_playerCtrl.getPlayerState());
        }
        else if (name.equals(PlayerController.FIELD_MEDIA_TIME)) {
            return formatMediaTime_Output(_playerCtrl.getMediaTime());
        }
        else if (name.equals(PlayerController.FIELD_VOLUME_LEVEL)) {
            return formatPlayerVoluem_Output(_playerCtrl.getPlayerVolume());
        }

        // Player's listener events
        else if (name.equals("EVENT_BUFFERING_STARTED")) {
            return PlayerListener.BUFFERING_STARTED;
        }
        else if (name.equals("EVENT_BUFFERING_STOPPED")) {
            return PlayerListener.BUFFERING_STOPPED;
        }
        else if (name.equals("EVENT_CLOSED")) {
            return PlayerListener.CLOSED;
        }
        else if (name.equals("EVENT_DEVICE_AVAILABLE")) {
            return PlayerListener.DEVICE_AVAILABLE;
        }
        else if (name.equals("EVENT_DEVICE_UNAVAILABLE")) {
            return PlayerListener.DEVICE_UNAVAILABLE;
        }
        else if (name.equals("EVENT_DURATION_UPDATED")) {
            return PlayerListener.DURATION_UPDATED;
        }
        else if (name.equals("EVENT_END_OF_MEDIA")) {
            return PlayerListener.END_OF_MEDIA;
        }
        else if (name.equals("EVENT_ERROR")) {
            return PlayerListener.ERROR;
        }
        else if (name.equals("EVENT_RECORD_ERROR")) {
            return PlayerListener.RECORD_ERROR;
        }
        else if (name.equals("EVENT_RECORD_STARTED")) {
            return PlayerListener.RECORD_STARTED;
        }
        else if (name.equals("EVENT_RECORD_STOPPED")) {
            return PlayerListener.RECORD_STOPPED;
        }
        else if (name.equals("EVENT_SIZE_CHANGED")) {
            return PlayerListener.SIZE_CHANGED;
        }
        else if (name.equals("EVENT_STARTED")) {
            return PlayerListener.STARTED;
        }
        else if (name.equals("EVENT_STOPPED")) {
            return PlayerListener.STOPPED;
        }
        else if (name.equals("EVENT_STOPPED_AT_TIME")) {
            return PlayerListener.STOPPED_AT_TIME;
        }
        else if (name.equals("EVENT_VOLUME_CHANGED")) {
            return PlayerListener.VOLUME_CHANGED;
        }

        return super.getField(name);
    }

    /* @Override */
    public boolean putField(final String name, final Object value) throws Exception {
        if (name.equals(PlayerController.FIELD_MEDIA_TIME)) {
            return _playerCtrl.setMediaTime(formatMediaTime_Input(value));
        }
        if (name.equals(PlayerController.FIELD_VOLUME_LEVEL)) {
            return _playerCtrl.setPlayerVolume(value);
        }

        return super.putField(name, value);
    }

    private static boolean isLocalURI(final String path) {
        return path != null && path.startsWith(LOCAL_PROTOCOL);
    }

    // ---------------FORMATING INPUT/OUTPUT--------------------------
    // ---------------------------------------------------------------

    private int convertMicroToMilli(final long microseconds) {
        return (int) (microseconds / 1000);
    }

    private long convertMilliToMicro(final int milliseconds) {
        return milliseconds * 1000;
    }

    private Object formatMediaDuration_Output(final long mediaDuration) {
        return new Integer(convertMicroToMilli(mediaDuration));
    }

    private Object formatMediaTime_Output(final long mediaTime) {
        return new Integer(convertMicroToMilli(mediaTime));
    }

    private long formatMediaTime_Input(final Object value) {
        return convertMilliToMicro(((Integer) value).intValue());
    }

    private Object formatPlayerVoluem_Output(final int playerVolume) {
        return new Integer(playerVolume);
    }

    private Object formatPlayerState_Ouptut(final int playerState) {
        return new Integer(playerState);
    }
    // ---------------------------------------------------------------
    // ---------------------------------------------------------------

}
TOP

Related Classes of blackberry.audio.Player.PlayerObject

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.