シンプルな問題:私はRaspPi3を(HDMIを介して)テレビに接続し、その上でフルスクリーン(リモートクライアントはスライドショーとしてシンプルなテキストを表示する)でアプリケーションをスイングします。しかし、テレビは〜60秒後にスタンバイ状態になりますが、アプリが動作している場合にのみ待機します。私はテレビを単に表示するだけでテレビは生きている。Javaスイングウィンドウ(フルスクリーン)は、Raspberry Pi 3のHDMI出力に影響しますか?
質問:テレビでは、フルスクリーンのスイングアプリがHDMI信号を混乱させるので、テレビに何も表示されずにシャットダウンするとは思われません。 (または、テキストを表示する機能に近づく方法に何か問題がありますか?)
また、信号が同じで変化しないか、十分に強くないためにテレビに問題がありますか〜60秒(画面がほとんど黒であるために余分な "空白"スペース)?
注:私のアプリは、機能的に純粋に機能します。このスタンバイ動作は、私が期待していなかった「バグ」です。
私はHDMI仕様の深い洞察を持っていないので、誰も私にこの問題を解決する方法のヒントを与えることができたら、私はそれを感謝します。
これは私の最初の質問です。私はそれに似た問題が見つかりませんでしたので、質問しました。私はこの質問が具体的なものかどうかは完全にはわかっていないので、もしあれば、事前に謝罪します。
*コード:
public GUIController()
{
Statics.GUIC = this;
jf = new JFrame("[email protected] " + Statics.VERSION_INFOS);
jf.setUndecorated((Statics.PROPERTIES.getProperty("p.undecorated").equals("true")));
jf.setAlwaysOnTop(true);
jf.setLocation(Integer.parseInt(Statics.PROPERTIES.getProperty("p.pos.x")), Integer.parseInt(Statics.PROPERTIES.getProperty("p.pos.y")));
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container cp = jf.getContentPane();
MyCanvas tl = new MyCanvas();
tl.setBackground(Color.BLACK);
cp.add(tl);
cp.setBackground(Color.BLACK);
jf.setSize(Integer.parseInt(Statics.PROPERTIES.getProperty("p.width")), Integer.parseInt(Statics.PROPERTIES.getProperty("p.height")));
jf.setVisible(true);
t = 0;
timer = new Timer(100, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//check cmd
switch (Statics.PRESENTATION_CMD)
{
case Statics.REND_CMD_EMPTY:
Statics.PRESENTATION_CMD = Statics.REND_CMD_RUN;
break;
case Statics.REND_CMD_RUN:
break;
case Statics.REND_CMD_START:
tl.repaint();
Statics.PRESENTATION_CMD = Statics.REND_CMD_RUN;
break;
case Statics.REND_CMD_STOP:
Statics.PRESENTATION_CMD_ADD = null;
tl.repaint();
Statics.PRESENTATION_CMD = Statics.REND_CMD_EMPTY;
break;
case Statics.REND_CMD_NEXT:
Statics.PRESENTATION_CMD = Statics.REND_CMD_RUN;
break;
case Statics.REND_CMD_PREV:
Statics.PRESENTATION_CMD = Statics.REND_CMD_RUN;
break;
case Statics.REND_CMD_GOTO:
Statics.PRESENTATION_CMD = Statics.REND_CMD_RUN;
break;
}
}
});
jf.addWindowListener(new WindowListener()
{
@Override
public void windowOpened(WindowEvent e)
{
}
@Override
public void windowClosing(WindowEvent e)
{
timer.stop();
}
@Override
public void windowClosed(WindowEvent e)
{
}
@Override
public void windowIconified(WindowEvent e)
{
}
@Override
public void windowDeiconified(WindowEvent e)
{
}
@Override
public void windowActivated(WindowEvent e)
{
}
@Override
public void windowDeactivated(WindowEvent e)
{
}
});
timer.setInitialDelay(1000);
timer.start();
}
public void toggleVisibility()
{
jf.setVisible(!jf.isVisible());
}
}
class MyCanvas extends JComponent
{
int fontSize = 50;
Font font = new Font("Calibri", Font.PLAIN, fontSize);
@Override
public void paintComponent(Graphics g)
{
if (g instanceof Graphics2D)
{
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (Statics.PRESENTATION_CMD_ADD == null && Connection.getInstance().hasConnected())
{
g2.setColor(Color.GREEN);
g2.setFont(font);
g2.drawString("connected", 50, 50);
return;
}
else if (Statics.PRESENTATION_CMD_ADD == null)
{
g2.setColor(Color.GREEN);
g2.setFont(font);
g2.drawString("not connected", 50, 50);
return;
}
String[] content = Statics.PRESENTATION_CMD_ADD.split(Statics.STRING_LIMITER_HASH);
g2.setColor(Color.WHITE);
g2.setFont(font);
for (int i = 0; i < content.length; i++)
{
g2.drawString(content[i], 50, fontSize + fontSize * i + 10);
}
}
}
}