来电安卓闪烁

时间:2013-09-14 06:45:43

标签: android service telephonymanager phone-state-listener window-managers

我正在开发一个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);

是否有可能的解决方法来实现来电时屏幕闪烁。

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

将应该闪烁的Activity引用传递给Service并调用activity.getWindow()。你可以使用Binder。

在您的服务中添加一个字段:

private Activity activity;

在Binder中更新字段的方法:

public void setActivity(Activity activity){
    this.activity = activity;
}

当您绑定到服务时调用此方法。在Activity开关处理这个字段,否则你将有一个死的参考。