【问题标题】:How to get window from a Service?如何从服务中获取窗口?
【发布时间】:2012-01-19 22:39:51
【问题描述】:

我使用WindowManager 制作了一个没有ActivityView

我想改变视图的状态,如下所示:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

但我不能在Service 中使用getWindow()

有没有办法做到这一点?

【问题讨论】:

  • 服务没有用户界面。你想完成什么?
  • 我知道服务不能有 UI。但我是通过使用 addView() && surfaceView 做到的。
  • 这实际上并没有创建用户界面;它只是创建了几个 View 对象。我再重复一遍我的问题:你到底想完成什么?
  • 我只是想让用户可以看到状态栏。我的意思是有时。
  • 你最后做了什么?

标签: android service android-activity


【解决方案1】:

无法在服务中获得窗口。但是您可以使用 WindowManager 来添加一个视图(根),就像您已经做的那样。

您还可以通过updateViewLayout 更新视图,您可以更改窗口的状态(窗口类型、标志、x、y、w、h、重力等...),如下所示。

private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
..........

//let's assume that an event occurred
if(mConfiguration.orientation==Configuration.ORIENTATION_LANDSCAPE){
    mLayoutParams.screenOrientation=Configuration.ORIENTATION_PORTRAIT;
}
mLayoutParams.softInputMode=WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN;

mLayoutParams.gravity = Gravity.TOP|Gravity.CENTER; 
int flag=0
            |WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
            |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            |WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
            ; 
mLayoutParams.flags=flag;

mWindowManager.updateViewLayout(mRootView, mLayoutParams);

【讨论】:

  • 如何获取mRootView?
  • @quicklearner mRootView 是您之前通过 mWindowManager.addView() 添加的视图实例
【解决方案2】:

由于服务没有 UI,你必须从它开始活动到 getWindow() 属性..

要么做一个透明的活动,要么只是开始活动,getWindow() 并立即完成它.. 我认为你必须做一个透明的活动。 (这是我个人的看法)

【讨论】:

  • 感谢您的回答。但我无法启动活动。我只需要更改模式 Full not Full in service。
  • 如果你想获得 Window 属性,那么我认为无论如何你必须使用 Activity..
【解决方案3】:

据我所知,您想要做的是让服务发出信号,表明应该对活动的外观进行更改。这样做的方法是让服务使用Context.sendBroadcast(Intent) 广播一个意图,并让您的活动在它的onReceive 方法中响应。 this thread 中接受的答案包含有关如何设置的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多