【问题标题】:Getting window display from service android从服务android获取窗口显示
【发布时间】:2012-09-29 06:18:31
【问题描述】:

我正在尝试从服务中显示一个窗口,但不知道如何执行此操作

这是我的代码——

onStart服务方法中

LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.main1, null);
    WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);

    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.type = 2002;
    params.format = 1;
    params.flags = 40;
    params.height = WindowManager.LayoutParams.FILL_PARENT;
    params.width = WindowManager.LayoutParams.FILL_PARENT;
    manager.addView(view, params);

     /** just a timer *****/
    textView = (TextView) view.findViewById(R.id.textView1);
    final Timer t = new Timer("hello", true);
    t.schedule(new TimerTask() {

    @Override
    public void run() {
        textView.post(new Runnable() {

        public void run() {
            seconds++;
            if (seconds == 60) {
            seconds = 0;
            minute++;
            }
            if (minute == 60) {
            minute = 0;
            hour++;
            }
            textView.setText(""
                + (hour > 9 ? hour : ("0" + hour)) + " : "
                + (minute > 9 ? minute : ("0" + minute))
                + " : "
                + (seconds > 9 ? seconds : "0" + seconds));

        }
        });

    }
    }, 1000, 1000);

    view.findViewById(R.id.stop).setOnClickListener(
        new OnClickListener() {

        public void onClick(View v) {
            t.cancel();
        }
        });

但是什么也没显示。如何在服务窗口中显示我的视图?

【问题讨论】:

    标签: android android-service android-view android-windowmanager


    【解决方案1】:

    Woohoooo 得到它的工作诀窍只是使用系统窗口服务

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.FILL_PARENT, 150,
                    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                            | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                    PixelFormat.TRANSLUCENT);
            params.gravity = Gravity.CENTER;
    

    添加权限

     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    

    【讨论】:

      【解决方案2】:

      密钥处理也可以在服务中实现!! 一般来说,如果 WindowManager 用于显示服务中的视图,它大部分时间都不需要任何关键事件!

      但是您可以使用“dispatchKeyEvent”或任何其他键处理方法(onKeyUp、onKeyDown 等)创建一个接口并以服务的形式实现它们。

      编码愉快。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多