首页 > 学院 > 开发设计 > 正文

熟练使用J2ME在实际开发中的可选包MMAPI

2019-11-17 06:24:10
字体:
来源:转载
供稿:网友

  本文的目的是为读者提供处理不同情况的代码,您可以参考MMAPI DOC。
  
  播放单音
  
  try
  {
  Manager.playTone(ToneControl.C4, 5000
  /* millisec */, 100 /* max vol */);
  } catch (MediaException e)
  {
  }
  
  简单媒体重放功能实现:
  
  try
  {
  Player p = Manager.createPlayer
  ("http://webserver/music.mp3");
  p.setLoopCount(5);
  p.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  具体重放控制:
  
  static final long SECS_TO_MICROSECS
  = 1000000L;
  Player p;
  VolumeControl vc;
  try {
  p = Manager.createPlayer
  ("http://webserver/music.mp3");
  p.realize();
  // Set a listener.
  p.addPlayerListener(new Listener());
  // Grab volume control for the player.
  // Set Volume to max.
  vc = (VolumeControl)p.getControl
  ("VolumeControl");
  if (vc != null)
  vc.setLevel(100);
  // Set a start time.
  p.setMediaTime(5 * SECS_TO_MICROSECS);
  // Guarantee that the player
  can start with the smallest latency.
  p.PRefetch();
  // Non-blocking start
  p.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  class Listener implements PlayerListener
  {
  public void playerUpdate(Player p,
  String event, Object eventData)
  {
  if (event == END_OF_MEDIA
   event == STOP_AT_TIME)
  {
  System.out.println
  ("Done processing");
  try {
  p.setMediaTime
  (5 * SECS_TO_MICROSECS);
  p.start();
  } catch (MediaException me)
  {
  }
  break;
  }
  }
  }
  
  实现MIDI重放控制:
  
  Player p;
  TempoControl tc;
  
  try {
  p = Manager.createPlayer
  ("http://webserver/tune.mid");
  p.realize();
  
  // Grab the tempo control.
  tc = (TempoControl)p.getControl
  ("TempoControl");
  tc.setTempo(120000);
  // 120 beats/min
  p.start();
  
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  视频重放功能实现:
  
  Player p;
  VideoControl vc;
  
  try {
  p = Manager.createPlayer
  ("http://webserver/movie.mpg");
  p.realize();
  
  // Grab the video control
  and set it to the current display.
  vc = (VideoControl)p.getControl
  ("VideoControl");
  if (vc != null)
  {
  Form form = new Form("video");
  form.append
  ((Item)vc.initDisplayMode
  (vc.USE_GUI_PRIMITIVE, null));
  Display.getDisplay(midlet)
  .setCurrent(form);
  }
  
  p.start();
  
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  播放RMS内存储的数据:
  
  RecordStore rs;
  int recordID;
  : // code to set up the record store.
  
  try {
  InputStream is = new
  ByteArrayInputStream
  (rs.getRecord(recordID));
  Player p = Manager.createPlayer
  (is, "audio/X-wav");
  p.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  播放Jar文件中存储的媒体
  
  /** Notice that in MIDP 2.0,
  the wav format is mandatory only */
  /** in the case that the
  device supports sampled audio. */
  
  try {
  InputStream is =
  getClass().getResourceAsStream
  ("audio.wav");
  Player p = Manager.createPlayer
  (is, "audio/X-wav");
  p.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  不同Player的同步
  
  Player p1, p2;
  
  try {
  p1 = Manager.createPlayer
  ("http://webserver/tune.mid");
  p1.realize();
  p2 = Manager.createPlayer
  ("http://webserver/movie.mpg");
  p2.realize();
  p2.setTimeBase(p1.getTimeBase());
  p1.prefetch();
  p2.prefetch();
  p1.start();
  p2.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  产生单音序列
  
  byte tempo = 30;
  // set tempo to 120 bpm
  byte d = 8;
  // eighth-note
  
  byte C4 = ToneControl.C4;
  byte D4 = (byte)(C4 + 2);
  // a whole step
  byte E4 = (byte)(C4 + 4);
  // a major third
  byte G4 = (byte)(C4 + 7);
  // a fifth
  byte rest = ToneControl.SILENCE;
  // rest
  
  byte[] mySequence = {
  ToneControl.VERSION, 1,
  // version 1
  ToneControl.TEMPO, tempo,
  // set tempo
  ToneControl.BLOCK_START, 0,
  // start define "A" section
  E4,d, D4,d, C4,d, E4,d,
  // content of "A" section
  E4,d, E4,d, E4,d, rest,d,
  ToneControl.BLOCK_END, 0,
  // end define "A" section
  ToneControl.PLAY_BLOCK, 0,
  // play "A" section
  D4,d, D4,d, D4,d, rest,d,
  // play "B" section
  E4,d, G4,d, G4,d, rest,d,
  ToneControl.PLAY_BLOCK, 0,
  // repeat "A" section
  D4,d, D4,d, E4,d, D4,d, C4,d
  // play "C" section
  };
  
  try{
  Player p = Manager.createPlayer
  (Manager.TONE_DEVICE_LOCATOR);
  p.realize();
  ToneControl c = (ToneControl)
  p.getControl("ToneControl");
  c.setSequence(mySequence);
  p.start();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  语音捕捉和录音功能的实现
  
  try
  {
  // Create a DataSource that
  captures live audio.
  Player p = Manager.createPlayer
  ("capture://audio");
  p.realize();
  // Get the RecordControl,
  set the record location, and
  // start the Player and
  record for 5 seconds.
  RecordControl rc =
  (RecordControl)p.getControl
  ("RecordControl");
  rc.setRecordLocation
  ("file:/tmp/audio.wav");
  rc.startRecord();
  p.start();
  Thread.currentThread()
  .sleep(5000);
  p.stop();
  rc.stopRecord();
  rc.commit();
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  } catch (InterruptedException e)
  {
  }
  
  实现摄像功能
  
  Player p;
  VideoControl vc;
  
  // initialize camera
  try {
  p = Manager.createPlayer
  ("capture://video");
  p.realize();
  
  // Grab the video control
  and set it to the current
  display.
  vc = (VideoControl)p.getControl
  ("VideoControl");
  if (vc != null)
  {
  Form form =
  new Form("video");
  form.append((Item)vc.initDisplayMode
  (vc.USE_GUI_PRIMITIVE, null));
  Display.getDisplay(midlet).setCurrent(form);
  }
  
  p.start();
  
  } catch (IOException ioe)
  {
  } catch (MediaException me)
  {
  }
  
  // now take a picture
  try {
  byte[] pngImage =
  vc.getSnapshot(null);
  
  // do something with the image ...
  } catch (MediaException me)
  {
  }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表