zoukankan      html  css  js  c++  java
  • Android ActivityManager与WindowManager

        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 使用SYSTEM_ALERT_WINDOW时必须要加 -->
     
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Color;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.ViewGroup.LayoutParams;
    import android.view.WindowManager;
    import android.widget.TextView;
    public class MainActivity extends Activity {
        private ActivityManager mActivityManager;
    
        private Handler popupHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case 0:
                    String packageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
                    Log.e("log", packageName + System.currentTimeMillis());
                    if (packageName.equals("com.some.app.name")) {
                        popupHandler.sendEmptyMessage(1);
                    }
                    if (isRunning) {
                        popupHandler.sendEmptyMessageDelayed(0, 3500);
                    }
                    break;
                case 1:
                    Log.e("log", "mWindowManager");
    
                    if (!isAdd) {
                        startActivity(new Intent(MainActivity.this, MainActivity.class));
                        mWindowManager.addView(mTrackingText, lp);
                        isAdd = true;
                    }
                    break;
                }
            }
        };
        WindowManager mWindowManager;
        private boolean isRunning = true;
        WindowManager.LayoutParams lp;
        TextView mTrackingText;
        boolean isAdd;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
            mTrackingText = new TextView(MainActivity.this);
            mTrackingText.setTextColor(Color.BLUE);
            mTrackingText.setTextSize(55);
            mTrackingText.setText("00:00");
            lp = new WindowManager.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_APPLICATION,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                    PixelFormat.TRANSLUCENT);
            isRunning = true;
            popupHandler.sendEmptyMessageDelayed(0, 3500);
        }
    }
    
    
    
    
    
  • 相关阅读:
    深入Java类加载全流程,值得你收藏
    如何用好Go的测试黑科技
    Go的内存对齐和指针运算详解和实践
    Go和Java的性能对比,真的如此吗?
    Go中锁的那些姿势,估计你不知道
    浅谈Go类型转换之间的那些事
    学堂在线课程字幕下载
    无序数组中求最大值和最小值的最少比较次数
    串口字符串-HEX格式
    个人程序命名规范
  • 原文地址:https://www.cnblogs.com/niray/p/4737290.html
Copyright © 2011-2022 走看看