soundplayer.java

来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 269 行

JAVA
269
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   SoundPlayer.java

package se.southend.drops.media;

import java.io.InputStream;
import java.io.PrintStream;
import java.util.Vector;
import javax.microedition.media.*;
import javax.microedition.media.control.*;

public class SoundPlayer
{

    public SoundPlayer()
    {
        players = new Vector(2);
    }

    public static SoundPlayer getInstance()
    {
        if(instance == null)
            instance = new SoundPlayer();
        return instance;
    }

    public int addSound(String url)
    {
        Player player = Manager.createPlayer(url);
        if(player == null)
            return -1;
        try
        {
            player.realize();
            player.prefetch();
            players.addElement(player);
        }
        catch(Exception e)
        {
            System.out.println("Exception:\n" + e.toString());
            e.printStackTrace();
        }
        return players.size() - 1;
    }

    public int addSound(InputStream in, String contentType)
    {
        Player player = Manager.createPlayer(in, contentType);
        if(player == null)
            return -1;
        try
        {
            player.realize();
            player.prefetch();
            players.addElement(player);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return players.size() - 1;
    }

    public void playSound(int index)
    {
        if(index >= 0 && index < players.size())
            startPlayer((Player)players.elementAt(index));
    }

    public void stopSound(int index)
    {
        if(index >= 0 && index < players.size())
            stopPlayer((Player)players.elementAt(index));
    }

    public void discardSound(int index)
    {
        if(index >= 0 && index < players.size())
        {
            closePlayer((Player)players.elementAt(index));
            players.removeElementAt(index);
        }
    }

    public void discardAll()
    {
        closeAll();
        players.removeAllElements();
    }

    public void setMasterVolume(int volume)
    {
        masterVolume = volume;
        int nbrPlayers = players.size();
        for(int i = 0; i < nbrPlayers; i++)
        {
            Player player = (Player)players.elementAt(i);
            VolumeControl control = (VolumeControl)player.getControl("VolumeControl");
            control.setLevel((control.getLevel() * masterVolume) / 100);
        }

    }

    public void setVolumeLevel(int index, int volume)
    {
        Player player = (Player)players.elementAt(index);
        VolumeControl control = (VolumeControl)player.getControl("VolumeControl");
        control.setLevel((volume * masterVolume) / 100);
    }

    public void setLoopCount(int index, int loopCount)
    {
        ((Player)players.elementAt(index)).setLoopCount(loopCount < 1 ? -1 : loopCount);
    }

    public Player getPlayer(int index)
    {
        return (Player)players.elementAt(index);
    }

    public void addPlayerListener(PlayerListener listener, int index)
    {
        Player player = (Player)players.elementAt(index);
        player.addPlayerListener(listener);
    }

    public static String getContentType(String url)
    {
        url = url.toLowerCase();
        if(url.endsWith("amr"))
            return "audio/amr";
        if(url.endsWith("mid"))
            return "audio/midi";
        if(url.endsWith("wav"))
            return "audio/x-wav";
        if(url.endsWith("mp3"))
            return "audio/mp3";
        else
            return null;
    }

    private void startPlayer(Player player)
    {
        try
        {
            if(player != null)
            {
                if(player.getState() == 100)
                {
                    player.prefetch();
                    player.realize();
                }
                if(player.getState() != 0)
                    player.start();
            }
        }
        catch(Exception e)
        {
            closePlayer(player);
            e.printStackTrace();
        }
    }

    private void stopPlayer(Player player)
    {
        try
        {
            if(player != null)
                player.stop();
        }
        catch(MediaException e)
        {
            System.out.println("MediaException: " + e.getMessage());
        }
    }

    private void closePlayer(Player player)
    {
        if(player != null)
            player.close();
    }

    private void closeAll()
    {
        for(int i = 0; i < players.size(); i++)
        {
            Player player = (Player)players.elementAt(i);
            closePlayer(player);
        }

    }

    public void playerInfo(int index)
    {
        Player player;
        System.out.println("Info for Player " + index);
        player = (Player)players.elementAt(index);
        if(player == null || player.getState() == 0)
        {
            System.out.println("Player closed");
            return;
        }
        javax.microedition.media.Control controls[];
        int i;
        System.out.println("Content type:    " + player.getContentType());
        System.out.println("Duration:        " + player.getDuration());
        System.out.println("Media time:      " + player.getMediaTime());
        System.out.println("Timebase:        " + player.getTimeBase().getTime());
        System.out.println("System timebase: " + Manager.getSystemTimeBase().getTime());
        controls = player.getControls();
        i = 0;
_L2:
        MetaDataControl control;
        String keys[];
        if(i >= controls.length)
            break MISSING_BLOCK_LABEL_434;
        if(!(controls[i] instanceof MetaDataControl))
            break MISSING_BLOCK_LABEL_366;
        control = (MetaDataControl)controls[i];
        System.out.println("MetaDataControl:");
        keys = control.getKeys();
        if(keys == null)
        {
            System.out.println("Empty");
            return;
        }
        for(int j = 0; j < keys.length; j++)
            if(keys[j] != null)
            {
                String keyValue = control.getKeyValue(keys[j]);
                System.out.println(j + ". " + keys[j] + ": " + keyValue);
            }

        if(controls[i] instanceof RateControl)
            System.out.println("RateControl:");
        if(controls[i] instanceof StopTimeControl)
            System.out.println("StopTimeControl:");
        if(controls[i] instanceof VolumeControl)
            System.out.println("VolumeControl:");
        i++;
        if(true) goto _L2; else goto _L1
_L1:
        Exception e;
        e;
        e.printStackTrace();
    }

    public void supportedContent()
    {
        String supportedContent[] = Manager.getSupportedContentTypes(null);
        System.out.println("Supported content:");
        for(int i = 0; i < supportedContent.length; i++)
        {
            String supportedProtocols[] = Manager.getSupportedProtocols(supportedContent[i]);
            System.out.println(supportedContent[i]);
            for(int j = 0; j < supportedProtocols.length; j++)
                System.out.println(" - " + supportedProtocols[j]);

        }

    }

    private static SoundPlayer instance;
    private Vector players;
    private int masterVolume;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?