我有 2 个活动,MainActivity 和 VideoPlayerActivity。在 MainActivity 我有一个套接字,我可以使用 telnet 从我的 PC 连接到它。然后我可以写行,它会执行我发送给它的命令。例如,如果我编写start
它将启动 VideoPlayerActivity 并播放电影。
现在我想控制屏幕亮度。在 VideoPlayerActivity 尚未启动的 MainActivity 中,我可以轻松地在 telnet 中编写一个命令brightness=0.1
,将 MainActivity 的亮度设置为 0.1:
if(msg.startsWith("brightness="))
{
String brightText = msg.substring(msg.indexOf('=') + 1, msg.length());
BrightnessValue = Float.parseFloat(brightText);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = BrightnessValue;
getWindow().setAttributes(lp);
if(_videoPlayerIntent != null && _videoPlayerActivity.isActive)
{
_videoPlayerActivity.setBrightnessLevel(BrightnessValue);
}
}
现在的问题是,当 VideoActivity 启动时,它会忽略预设的亮度,并会使用系统定义的亮度。所以我把这个方法放在 VideoActivity 中:
public void setBrightnessLevel(float value)
{
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = value;
getWindow().setAttributes(lp);
}
但是一旦我写了改变亮度的命令,整个应用程序就会停止。由于我在上面的问题中放置的第一个代码中的这一部分:
if(_videoPlayerIntent != null && _videoPlayerActivity.isActive)
{
Log.d("CALLING VIDEOACTIVITY", "SET BRIGHTNESS");
_videoPlayerActivity.setBrightnessLevel(BrightnessValue);
}
你能告诉我如何处理这种情况吗?我需要能够在 VideoActivity 运行时更改屏幕亮度,并且我的套接字位于 MainActivity 中...
getWindow()
这是 VideoActivity 中的方法....我试图将其设为静态,然后问题是如果该方法是静态的,我将无法访问:
public void setBrightnessLevel(float value)
{
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = value;
getWindow().setAttributes(lp);
}