2012-03-08 11 views
1

キャプチャしたvideoからLWUITImageを作成します。ビデオキャプチャの問題

「CameraCanvas」で
private void showCamera() // called when clicking the "open camera" command 
    { 
     try 
     { 
      Player mPlayer; 
      VideoControl mVideoControl; 
      mPlayer = Manager.createPlayer("capture://video"); 
      mPlayer.realize(); 
      mVideoControl = (VideoControl) mPlayer.getControl("VideoControl"); 
      Canvas canvas = new CameraCanvas(this, mVideoControl, mPlayer, getFirstAvailableRoot(), "ADC"+adcId); // adcId is "1" 
      isFromPositionnement = true; // static variable 
      javax.microedition.lcdui.Display.getDisplay(controler).setCurrent(canvas); 
      mPlayer.start(); 
     } catch (IOException ex) { 
      handleException(); 
     } catch (MediaException ex) { 
      handleException(); 
     } 
    } 

private String getFirstAvailableRoot() 
    { 
     short iter; 
     String root = "Phone:/"; 
     iter = 0; 
     Enumeration drives = FileSystemRegistry.listRoots(); 
     while(drives.hasMoreElements() && iter < 1) { 
      root = String.valueOf(drives.nextElement()); 
      iter++; 
     } 
     return root; 
    } 

コード:

public class CameraCanvas extends Canvas implements CommandListener 
    { 
     ... 
     public CameraCanvas(Ecran form, VideoControl videoControl, Player pPlayer, String pRoot, String dossierPhoto) 
     { 
      ... 
      mCaptureCommand = new Command("Capturer", Command.SCREEN, 1); 
      addCommand(mCaptureCommand); 
      setCommandListener(this); 
      ... 
      videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); 
      try 
      { 
       videoControl.setDisplayLocation(2, 2); 
       videoControl.setDisplaySize(width - 4, height - 4); 
      } 
      catch (MediaException me) 
      { 
       try 
       { 
        videoControl.setDisplayFullScreen(true); 
       } 
       catch (MediaException me2) 
       {} 
      } 
      videoControl.setVisible(true); 
     } 
     private void capture() // called when clicking the mCaptureCommand command 
     { 
      try 
      { 
       isPhotoCaptured = true; 
       rawImg = vidCtrl.getSnapshot(null); // this throws the exception 
       vidCtrl.setVisible(false); 
       vidCtrl = null; 
       mPlayer.close(); 
       mPlayer = null; 
       repaint(); 
      } 
      catch (MediaException me) 
      { 
       isPhotoCaptured = false; 
       rawImg = null; 
       vidCtrl.setVisible(false); 
       vidCtrl = null; 
       mPlayer.close(); 
       mPlayer = null; 
       handleException("capture "); 
      } 
     } 
    } 

だから何が問題の原因である可能性があり、問題はMediaExceptiongetSnapshot()を呼び出すときに発生するということですか?

+0

私はCanvas/LCDUIについてよく分かりません。 ¿LWUITのUI要素を使用できますか? – frayab

+0

LWUITに変換するのは難しい仕事です! – pheromix

+0

私はあなたのような問題を抱えていましたが、LWUITで画像をキャプチャする方法のこの例を見て、これがあなたに役立つことを願っています。http://stackoverflow.com/questions/7742397/how-to-capture-images-using-lwuit-videocomponent/7796680#7796680 – frayab

答えて

1

MMAPIにはイメージを作成する機能があり、LWUITイメージ(オブジェクトを受け入れるイメージを作成するイメージ)に簡単に変換できます。しかし、何らかの理由でこのAPIを思いついた "天才たち"が、画像キャプチャにあなたのプライバシーを保護するための制限付きAPIを作成しました。したがって、オペレータ/製造元の署名なしでこのAPIを呼び出すことはできません。

関連する問題