PlayerCanvas.java
上传用户:kyckim
上传日期:2007-12-11
资源大小:332k
文件大小:4k
源码类别:

通讯/手机编程

开发平台:

Java

  1. package Tonttu;
  2. import java.io.IOException;
  3. import javax.microedition.lcdui.Command;
  4. import javax.microedition.lcdui.CommandListener;
  5. import javax.microedition.lcdui.Display;
  6. import javax.microedition.lcdui.Displayable;
  7. import javax.microedition.lcdui.Canvas;
  8. import javax.microedition.lcdui.Font;
  9. import javax.microedition.lcdui.Graphics;
  10. import javax.microedition.lcdui.Image;
  11. import javax.microedition.media.Manager;
  12. import javax.microedition.media.Player;
  13. import javax.microedition.media.control.VolumeControl;
  14. public class PlayerCanvas extends Canvas implements CommandListener{
  15. Player player = null;
  16. private VolumeControl vc = null;
  17. private String musicFile = null;
  18. int volume = 30;
  19. private Command[] command = new Command[2];
  20. PlayerCanvas() {
  21. command[0] = new Command("Exit", Command.EXIT, 1);
  22. command[1] = new Command("File", Command.SCREEN, 2);
  23. addCommand(command[0]);
  24. addCommand(command[1]);
  25. setCommandListener(this);
  26. }
  27. void getPlayer(String file) {
  28. try {
  29. musicFile = file;
  30. player = Manager.createPlayer(TonttuMIDlet.filerForm.PATH + "/" + musicFile);
  31. player.realize();
  32. // player.prefetch();
  33. repaint();
  34. vc = (VolumeControl)player.getControl("VolumeControl");
  35. vc.setLevel(volume);
  36. player.start();
  37. repaint();
  38. } catch(Exception e) {
  39. closePlayer();
  40. }
  41. }
  42. public void paint(Graphics g) {
  43. int width = getWidth();
  44. int height = getHeight();
  45. g.setColor(255, 255, 255);
  46. g.fillRect(0, 0, width, height);
  47. g.setColor(0, 0, 0);
  48. if(player != null) {
  49. if(player.getState() == Player.PREFETCHED) {
  50. g.fillTriangle((width/2 - 35), (height/2 - 55) , (width/2 - 35), (height/2 + 25), (width/2 + 35), (height/2 -15));
  51. } else if(player.getState() == Player.STARTED) {
  52. g.fillRect((width/2 - 35), (height/2 - 55), 20, 80);
  53. g.fillRect((width/2 + 15), (height/2 - 55), 20, 80);
  54. }
  55. g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
  56. if(musicFile.length() > 26) {
  57. g.drawString(musicFile.substring(0, 24) + "...", (width - 10), (height - 50), Graphics.RIGHT|Graphics.TOP);
  58. } else {
  59. g.drawString(musicFile, (width - 10), (height - 50), Graphics.RIGHT|Graphics.TOP);
  60. }
  61. try {
  62. g.drawImage(Image.createImage("/volume.png"), (width - 40), (height - 29), Graphics.RIGHT|Graphics.TOP);
  63. } catch(IOException e) {
  64. }
  65. g.drawString(Integer.toString(volume/10), (width - 20), (height - 30), Graphics.RIGHT|Graphics.TOP);
  66. if(volume != 100) {
  67. g.fillTriangle((width - 14), (height - 29) , (width - 18), (height - 22), (width - 10), (height -22));
  68. }
  69. if(volume != 0) {
  70. g.fillTriangle((width - 14), (height - 13) , (width - 18), (height - 20), (width - 10), (height -20));
  71. }
  72. }
  73. }
  74. void closePlayer() {
  75. if(player != null) {
  76. player.close();
  77. player = null;
  78. }
  79. repaint();
  80. }
  81. public void keyPressed(int keyCode) {
  82. if(player != null) {
  83. if(getGameAction(keyCode) == Canvas.FIRE) {
  84. if(player.getState() == Player.PREFETCHED) {
  85. try {
  86. player.start();
  87. repaint();
  88. } catch(Exception e) {
  89. closePlayer();
  90. }
  91. } else if(player.getState() == Player.STARTED) {
  92. try {
  93. player.stop();
  94. repaint();
  95. } catch(Exception e) {
  96. closePlayer();
  97. }
  98. }
  99. }
  100. if(getGameAction(keyCode) == Canvas.UP) {
  101. volume = vc.getLevel();
  102. volume += 10;
  103. volume = vc.setLevel(volume);
  104. repaint();
  105. }
  106. if(getGameAction(keyCode) == Canvas.DOWN) {
  107. volume = vc.getLevel();
  108. volume -= 10;
  109. volume = vc.setLevel(volume);
  110. repaint();
  111. }
  112. }
  113. }
  114. public void commandAction(Command c, Displayable d) {
  115. if(c == command[0]) {
  116. closePlayer();
  117. TonttuMIDlet.tonttuMIDlet.exitApp();
  118. }
  119. if(c == command[1]) {
  120. Display.getDisplay(TonttuMIDlet.tonttuMIDlet).setCurrent(TonttuMIDlet.tonttuMIDlet.filerForm);
  121. }
  122. }
  123. }