7

サービスからウィンドウを表示しようとしていますが、これを行う方法がわかりません

これが私のコードです--

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();
        }
        });

しかし、何も表示されませんでした。ビューをサービスからウィンドウに表示するにはどうすればよいですか?

4

2 に答える 2

6

Woooohoooo うまくいきました トリックは、システムウィンドウサービスを使用することでした

    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"/>
于 2012-09-29T06:58:19.663 に答える
0

キーハンドリングもサービスで実装可能!! 通常、WindowManager を使用してビュー イン サービスを表示する場合、ほとんどの場合キー イベントは発生しません。

ただし、「dispatchKeyEvent」またはその他のキー処理メソッド (onKeyUp、onKeyDown など) を使用してインターフェイスを作成し、それらをサービスとして実装できます。

ハッピーコーディング。

于 2014-04-12T07:46:19.217 に答える