📄 videocanvas.java
字号:
if (vidc == null) addCommand(pauseCommand); } catch (Exception e) { System.err.println(e); close(); } } public void start() { if (player == null) return; try { duration = player.getDuration(); player.start(); if (duration != Player.TIME_UNKNOWN) { sliderThread = new Thread(this); sliderThread.start(); } } catch (Exception e) { System.err.println(e); close(); } } public void close() { synchronized (this) { pause(); if (player != null) { player.close(); player = null; } } VideoTest.getInstance().nullPlayer(); } public void pause() { if ( player != null) { try { player.stop(); } catch (MediaException me) { System.err.println(me); } } } public void playerUpdate(Player plyr, String evt, Object evtData) { if ( evt == END_OF_MEDIA ) { try { player.setMediaTime(0); player.start(); } catch (MediaException me) { System.err.println(me); } } } private void doSnapshot() { final Canvas tThis = this; new Thread() { public void run() { try { byte [] snap = vidc.getSnapshot("encoding=jpeg"); if (snap != null) { Image im = Image.createImage(snap, 0, snap.length); Alert al = new Alert("Snapshot", "Here's the snap", im, AlertType.INFO); al.setTimeout(2000); parentDisplay.setCurrent(al, tThis); } } catch (MediaException me) { System.err.println(me); } } }.start(); } public synchronized void stopVideoCanvas() { player.deallocate(); } /* Handle the different keys pressed on the phone GUI emulator */ public void keyPressed(int keyCode) { int cr, cv; switch (keyCode) { case Canvas.KEY_NUM4: cr = rc.getRate(); cr -= 10000; cr = rc.setRate(cr); break; case Canvas.KEY_NUM6: cr = rc.getRate(); cr += 10000; cr = rc.setRate(cr); break; case Canvas.KEY_STAR: if (vc != null) { cv = vc.getLevel(); cv -= 10; cv = vc.setLevel(cv); } break; case Canvas.KEY_NUM0: if (vc != null) { vc.setMute(!vc.isMuted()); } break; case Canvas.KEY_POUND: if (vc != null) { cv = vc.getLevel(); cv += 10; cv = vc.setLevel(cv); } break; case Canvas.KEY_NUM7: if (fpc != null) { fpc.skip(-1); } break; case Canvas.KEY_NUM5: try { player.stop(); if (!isCapturePlayer) { player.setMediaTime(0); } player.deallocate(); } catch (MediaException me) { System.err.println(me); } break; case Canvas.KEY_NUM9: if (fpc != null) { fpc.skip(1); } break; case Canvas.KEY_NUM2: try { if (player.getState() == Player.STARTED) player.stop(); else player.start(); } catch (Exception e) { System.err.println(e); } break; case Canvas.KEY_NUM8: try { // Full screen if (vidc != null) vidc.setDisplayFullScreen(fsmode = !fsmode); repaint(); } catch (MediaException me) { System.err.println(me); } break; case Canvas.KEY_NUM1: case Canvas.KEY_NUM3: if (!isCapturePlayer) { long mTime = player.getMediaTime(); long duration = player.getDuration(); if (duration == Player.TIME_UNKNOWN || mTime == Player.TIME_UNKNOWN) return; try { if (keyCode == Canvas.KEY_NUM3) { // Jump forward 10% mTime += duration / 10; if (mTime > duration) mTime = duration; player.setMediaTime(mTime); } else if (keyCode == Canvas.KEY_NUM1) { mTime -= duration / 10; if (mTime < 0) mTime = 0; player.setMediaTime(mTime); } else return; } catch (MediaException me) { System.err.println(me); } } break; /* Code to move the video around using cursor keys */ default: int game = getGameAction(keyCode); int x = vidc.getDisplayX(); int y = vidc.getDisplayY(); if (game == UP) vidc.setDisplayLocation(x, y - 10); else if (game == DOWN) vidc.setDisplayLocation(x, y + 10); else if (game == LEFT) vidc.setDisplayLocation(x - 10, y); else if (game == RIGHT) vidc.setDisplayLocation(x + 10, y); else if (game == FIRE) vidc.setVisible(vis = !vis); repaint(); break; } } /** * Deallocate the player and the display thread. * Some VM's may stop players and threads * on their own, but for consistent user * experience, it's a good idea to explicitely * stop and start resources such as player * and threads. */ public synchronized void pauseApp() { suspended = true; if (player != null && player.getState() >= Player.STARTED) { // player was playing, so stop it and release resources. if (!isCapturePlayer) { restartMediaTime = player.getMediaTime(); } player.deallocate(); // make sure to restart upon resume restartOnResume = true; } else { restartOnResume = false; } } /** * If the player was playing when the MIDlet was paused, * then the player will be restarted here. */ public synchronized void startApp() { suspended = false; if (player != null && restartOnResume) { try { player.prefetch(); if (!isCapturePlayer) { try { player.setMediaTime(restartMediaTime); } catch (MediaException me) { System.err.println(me); } } player.start(); } catch (MediaException me) { System.err.println(me); } } restartOnResume = false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -