📄 playscreen.java
字号:
package no.auc.one.portableplayer.userinterface;
import java.io.IOException;
import javax.microedition.lcdui.*;
import no.auc.one.portableplayer.communication.mediarenderer.RenderingControlService;
import no.auc.one.portableplayer.settings.Settings;
import org.apache.log4j.*;
public class PlayScreen extends Form implements CommandListener,
ItemCommandListener,
ItemStateListener
{
private static Logger LOG = Logger.getLogger("PS");
private Displayable prevDisp;
private Display disp;
private Command goBack;
private StringItem trackTitle;
private StringItem trackArtist;
private StringItem trackAlbum;
private ImageItem trackArt;
private ImageItem imgPlayPause;
private ImageItem imgStop;
private ImageItem imgSkipPrev;
private ImageItem imgSkipNext;
private Command cmdPlayPause;
private Command cmdStop;
private Command cmdSkipPrev;
private Command cmdSkipNext;
private Image playImage;
private Image pauseImage;
private Gauge audioVolume;
private boolean paused;
public PlayScreen(String title, Displayable d, Display disp) {
super (title);
paused = false;
try {
LOG.debug("Creating PlayScreen");
this.disp = disp;
prevDisp = d;
goBack = new Command("Home", Command.BACK, 1);
this.addCommand(goBack);
this.setCommandListener(this);
this.setItemStateListener(this);
playImage = Image.createImage("/play_cmd.png");
pauseImage = Image.createImage("/pause_cmd.png");
trackTitle = new StringItem(
"Title: ",
"\n",
Item.LAYOUT_LEFT);
trackArtist = new StringItem(
"Artist: ",
"\n",
Item.LAYOUT_LEFT);
trackAlbum = new StringItem(
"Album: ",
"\n",
Item.LAYOUT_LEFT);
trackArt = new ImageItem(
"Artwork: ",
Image.createImage("/aml_noalpha.png"),
ImageItem.LAYOUT_NEWLINE_BEFORE |
ImageItem.LAYOUT_CENTER,
"Agder Mobility Lab");
imgPlayPause = new ImageItem(
"",
playImage,
Item.LAYOUT_NEWLINE_BEFORE |
Item.LAYOUT_LEFT |
Item.BUTTON,
"Play");
cmdPlayPause = new Command("Play/Pause", Command.ITEM, 1);
imgPlayPause.setDefaultCommand(cmdPlayPause);
imgPlayPause.setItemCommandListener(this);
imgStop = new ImageItem(
"",
Image.createImage("/stop_cmd.png"),
Item.LAYOUT_LEFT |
Item.BUTTON,
"Stop");
cmdStop = new Command("Stop", Command.ITEM, 1);
imgStop.setDefaultCommand(cmdStop);
imgStop.setItemCommandListener(this);
imgSkipPrev = new ImageItem(
"",
Image.createImage("/prev_cmd.png"),
Item.LAYOUT_LEFT |
Item.BUTTON,
"Prev");
cmdSkipPrev = new Command("Previous", Command.ITEM, 1);
imgSkipPrev.setDefaultCommand(cmdSkipPrev);
imgSkipPrev.setItemCommandListener(this);
imgSkipNext = new ImageItem(
"",
Image.createImage("/next_cmd.png"),
Item.LAYOUT_LEFT |
Item.BUTTON,
"Next");
cmdSkipNext = new Command("Next", Command.ITEM, 1);
imgSkipNext.setDefaultCommand(cmdSkipNext);
imgSkipNext.setItemCommandListener(this);
audioVolume = new Gauge(
"Volume",
true,
10,
7);
audioVolume.setLayout(
audioVolume.getLayout() |
Item.LAYOUT_NEWLINE_BEFORE);
audioVolume.setItemCommandListener(this);
append(trackTitle);
append(trackAlbum);
append(trackArtist);
append(new Spacer(20, 20));
append(imgPlayPause);
append(imgSkipPrev);
append(imgStop);
append(imgSkipNext);
append(new Spacer(20, 20));
append(audioVolume);
append(new Spacer(20, 20));
append(trackArt);
} catch (Exception e) {
LOG.fatal("Exception while creating PlayScreen items");
LOG.fatal(e);
e.printStackTrace();
}
/*
Settings s = (Settings)Settings.getInstance();
MediaRenderer mr = (MediaRenderer)s.getCurrentMediaRenderer();
if (mr != null) {
avts = (AVTransportService)mr.getAVTransportService();
rcs = (RenderingControlService)mr.getRenderingControlService();
}
*/
}
public void setSongTitle(String t) {
trackTitle.setText("\n" + t);
}
public void setAlbum(String a) {
trackAlbum.setText("\n" + a);
}
public void setArtist(String a) {
trackArtist.setText("\n" + a);
}
public void setArt(Image i) {
trackArt.setImage(i);
}
public void notifyPlay() {
imgPlayPause.setImage(pauseImage);
paused = false;
}
private void actionSetVolume() {
try {
RenderingControlService rcs =
Settings.getInstance().getCurrentMediaRenderer().getRenderingControlService();
rcs.setVolume(audioVolume.getValue()*10);
} catch (IOException e) {
LOG.fatal("Exception trying to send command to renderer");
LOG.fatal(e);
}
}
public void commandAction(Command c, Displayable d) {
System.out.println("commandAction for Displayable in PlayScreen");
if (goBack == c) {
System.out.println("Prev disp set...");
System.out.println("disp = " + disp + "; prevDisp=" + prevDisp);
disp.setCurrent(prevDisp);
}
else {
LOG.debug("Unknown command: (" + c + ") (" + d + ")");
}
}
public void commandAction(Command c, Item i) {
try {
int mediaAction = -1;
if(c == cmdPlayPause) {
if (!paused) {
mediaAction = InvokeMediaAction.PLAY;
imgPlayPause.setImage(pauseImage);
paused = false;
this.setTitle("Now playing");
} else {
mediaAction = InvokeMediaAction.PAUSE;
imgPlayPause.setImage(playImage);
paused = true;
this.setTitle("Paused");
}
} else if(c == cmdStop) {
mediaAction = InvokeMediaAction.STOP;
imgPlayPause.setImage(playImage);
paused = false;
this.setTitle("Stopped");
} else if(c == cmdSkipPrev) {
mediaAction = InvokeMediaAction.PREVIOUS_TRACK;
} else if(c == cmdSkipNext) {
mediaAction = InvokeMediaAction.NEXT_TRACK;
} else {
LOG.debug(
"Unknown Item cmd action: (" + c.getLabel() +
") (" + i.getLabel() + ")");
}
Display d = Display.getDisplay(UI.getInstance().getOwner());
InvokeMediaAction ima = new InvokeMediaAction(mediaAction);
WaitingAlert wa = new WaitingAlert(
"Sending command to Media Renderer",
d,
ima,
Thread.currentThread(),
false);
d.setCurrent(wa, d.getCurrent());
long start = System.currentTimeMillis();
ima.start();
ima.join();
if (System.currentTimeMillis() - start < 1000) {
wa.setTimeout(1000);
} else {
wa.setTimeout(1);
}
} catch (InterruptedException ie) {
System.err.println("Interrupted while joining with IMA thread");
ie.printStackTrace();
}
}
public void itemStateChanged(Item i) {
if (i == audioVolume) {
actionSetVolume();
} else {
LOG.debug("Unknown Item state changed: (" + i.getLabel() + ")");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -