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 + -
显示快捷键?