Android程序中设置操作埋点,监听网页开启关闭,控件点击

在基类BaseActivity中设置
//页面开启广播ACTION
public static final String ACTIVITY_START = "com.showsoft.haha.activity.start";
//页面关闭广播ACTION
public static final String ACTIVITY_STOP = "com.showsoft.haha.activity.stop";
//控件点击事件广播ACTION
public static final String VIEW_CLICK = "com.showsoft.haha.view.click";

public abstract class BaseActivity extends FragmentActivity {
   public abstract void initUI();
   public abstract void initValue();
   private BuryingPointReceiver mBuryingPointReceiver;
   private LocalBroadcastManager localBroadcastManager;
   
   @Override
   public Resources getResources() {
      Resources res = super.getResources();
      Configuration config=new Configuration();
      config.setToDefaults();
      res.updateConfiguration(config,res.getDisplayMetrics() );
      return res;
   }

   @Override
   protected void onResume() {
      super.onResume();
      //MobclickAgent.onPageStart("BaseActivity");
      MobclickAgent.onResume(this);
   }

   @Override
   protected void onPause() {
      super.onPause();
      //MobclickAgent.onPageEnd("BaseActivity");
      MobclickAgent.onPause(this);
   }

   //activity关闭的埋点,发送页面关闭的本地广播
   @Override
   protected void onStop() {
      super.onStop();
   L.i("wanlijun","BaseActivity:onStop");
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
    Intent intent = new Intent(Sp.ACTIVITY_STOP);
    intent.putExtra(Sp.ACTIVITY_STOP,getComponentName().getClassName());
    localBroadcastManager.sendBroadcast(intent);
   }

   //activity开启的埋点,发送页面开启的广播
   @Override
   protected void onStart() {
      super.onStart();
   L.i("wanlijun","BaseActivity:onStart");
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
    Intent intent = new Intent(Sp.ACTIVITY_START);
    intent.putExtra(Sp.ACTIVITY_START,getComponentName().getClassName());
    localBroadcastManager.sendBroadcast(intent);
   }

   @Override
   protected void onDestroy() {
      super.onDestroy();
      L.i("wanlijun","BaseActivity:onDestroy");
   }

//注册广播接收器,一旦注册了,后续所有继承基类BaseActivity的页面都可以接受广播了
//注意:注册的本地广播一定要用
localBroadcastManager.registerReceiver(mBuryingPointReceiver,intentFilter);
不能只用
registerReceiver(mBuryingPointReceiver,intentFilter);
否则注册不成功 public void registerBuryingPointReceiver(){ IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Sp.ACTIVITY_START); intentFilter.addAction(Sp.ACTIVITY_STOP); intentFilter.addAction(Sp.VIEW_CLICK); mBuryingPointReceiver = new BuryingPointReceiver(); localBroadcastManager = LocalBroadcastManager.getInstance(this); localBroadcastManager.registerReceiver(mBuryingPointReceiver,intentFilter); }//注销广播接收器 public void unregisterBuryingPointReceiver(){ localBroadcastManager = LocalBroadcastManager.getInstance(this); localBroadcastManager.unregisterReceiver(mBuryingPointReceiver); } //控件点击事件 @Override public boolean dispatchTouchEvent(MotionEvent ev) { if(ev.getAction() == MotionEvent.ACTION_UP){ LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this); Intent intent = new Intent(Sp.VIEW_CLICK); intent.putExtra(Sp.VIEW_CLICK,ev); localBroadcastManager.sendBroadcast(intent); } return super.dispatchTouchEvent(ev); } //操作埋点广播接收器 public class BuryingPointReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving String action = intent.getAction(); L.i("wanlijun","action="+action);
      if(action.equals(Sp.ACTIVITY_START)) {
         String componentName = intent.getStringExtra(Sp.ACTIVITY_START);
          L.i("wanlijun",componentName+"页面开启了");
      }else if(action.equals(Sp.ACTIVITY_STOP)) {
          String componentName = intent.getStringExtra(Sp.ACTIVITY_STOP);
          L.i("wanlijun",componentName+"页面关闭了");
       }else if(action.equals(Sp.VIEW_CLICK)) {
          L.i("wanlijun","控件点击");
          MotionEvent motionEvent = intent.getParcelableExtra(Sp.VIEW_CLICK);
          View view = searchClickedView(getWindow().getDecorView(),motionEvent);
          if(view instanceof TextView){
             L.i("wanlijun",((TextView) view).getText().toString() + view.getId());
          }
       }
    }
      //递归遍历Activity中所有的view,找出被点击的view
      private View searchClickedView(View view,MotionEvent event){
         View clickedView = null;
         if(isInView(view,event) && view.getVisibility() == View.VISIBLE){
            if(view instanceof ViewGroup){
               ViewGroup viewGroup = (ViewGroup)view;
               for(int i = viewGroup.getChildCount() - 1; i >= 0; i--){
                  View view1 = viewGroup.getChildAt(i);
                  clickedView = searchClickedView(view1,event);
                  if(clickedView != null){
                     return clickedView;
                  }
               }
            }
            clickedView = view;
         }
         return clickedView;
      }

      //点击的位置是否在View内
      private boolean isInView(View view,MotionEvent event){
         int clickX = (int)event.getRawX();
         int clickY = (int)event.getRawY();
         int[] location = new int[2];
         view.getLocationOnScreen(location);
         int X = location[0];
         int Y = location[1];
         int width = view.getWidth();
         int height = view.getHeight();
         if(clickX < X || clickX > X + width ||clickY < Y || clickY > Y + height){
            return false;
         }
         return true;
      }
// }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值