我正在开发一个Android应用程序,我想让主屏幕在来电时闪烁。我尝试在一个活动中调用下面的startblinking()方法,屏幕闪烁正常。
但是, 当我尝试在phonelistener的Ring状态(在Service类中)调用相同的方法时,我得到以下错误,因为服务类没有窗口。
The method getWindow() is undefined for the type PhoneListener
private void startblinking()
{
Log.e("inside","blink MEthod");
timerforblinking.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable()
{
public void run()
{
time = (float) (time + 0.5);
if(time == 0.5 || time == 1.5 || time == 2.5 || time == 3.5 || time == 4.5 || time == 5.5)
{
Log.e("time","OFF - time = "+time);
layoutParams.screenBrightness = (float) 30 / 255;
getWindow().setAttributes(layoutParams);
}
if(time == 1.0 || time == 2.0 ||time == 3.0 ||time == 4.0 ||time == 5.0 )
{
Log.e("time","ON - time = "+time);
layoutParams.screenBrightness = (float)255 / 255;
getWindow().setAttributes(layoutParams);
}
if(time >= 6.0)
{
layoutParams.screenBrightness = (float)255 / 255;
getWindow().setAttributes(layoutParams);
timerforblinking.purge();
timerforblinking.cancel();
}
}
});
}
}, 0, 500);
是否有可能的解决方法来实现来电时屏幕闪烁。
请帮忙。谢谢!
答案 0 :(得分:0)
将应该闪烁的Activity引用传递给Service并调用activity.getWindow()。你可以使用Binder。
在您的服务中添加一个字段:
private Activity activity;
在Binder中更新字段的方法:
public void setActivity(Activity activity){
this.activity = activity;
}
当您绑定到服务时调用此方法。在Activity开关处理这个字段,否则你将有一个死的参考。