Lwuit Frameworkを使用してビデオコンポーネントコントロール上で画像を描画する方法は?
質問
1つのビデオコンポーネントに1つの画像を描くためのバリアントを見つけようとしましたが、明らかに不可能です!私がしていることは、一時停止ビデオ再生に関する画像を表示し、フォームに戻るボタンを追加することです。
問題は、ビデオコンポーネントコントロールの上に画像がペイントされないことです
以下のコードの一部:
//Attributes
VideoComponent vc;
Player player;
Image imgPause;
//Constructor for video player class
public VideoPlayer(String filename)
{
pauseImg = Image.createImage("/pause.png");
if(pauseImg == null)
Log.p("ERROR, VideoPlayer pauseImg is null!!");
vc = VideoComponent.createVideoPeer(fileName);
player = (Player) vc.getNativePeer();
if(vc != null){
vc.setFullScreen(true);
vc.playInNativePlayer();
start();
setLayout(new BorderLayout());
Container container = new Container(new FlowLayout());
Button backButton = new Button("back");
backButton.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
closeForm();
}
});
container.addComponent(backButton);
addComponent(BorderLayout.CENTER, vc);
addComponent(BorderLayout.EAST, container);
}
final public void start() {
try {
if(vc != null) {
player.realize();
player.prefetch();
vc.start();
}
} catch(Exception ex) {
Log.p(ex.getMessage());
}
}
public void paint(Graphics g) {
super.paint(g);
if(!isPlaying())
{
int imgWidth = pauseImg.getWidth();
int imgHeight = pauseImg.getHeight();
Log.p("pauseImg.width() = " + imgWidth);
g.drawImage(pauseImg, getWidth()/2 - imgWidth/2 , getHeight()/2 - imgHeight/2);
}
}
public void pointerReleased(int x, int y) {
super.pointerReleased(x, y);
Log.p("VideoPlayer.pointerReleased ");
if(vc != null) {
if(isPlaying()){
vc.stop();
repaint();
}
else {
vc.start();
repaint();
}
}
}
解決
これは、LWUITとは無関係のMMAPI問題です。デフォルトでは、ビデオは常にトップになります。
MMAPIのJSR 234は、そのようなものをサポートしていますが、MIDPに固有のメディアの実装と電話デバイスに固有のメディアの実装を深く掘り下げる必要があります。
所属していません StackOverflow