2015-10-23 39 views
13

我想創建一個圖書館的所有事件,讓我們把它稱爲L.某公司有一個Android應用程序,說A.實現一個庫,以跟蹤應用程序

L可在被鏈接到A使得代碼A,dev只需要添加如下內容:

L l = new L(「client_id」) l.startTrack();

現在L應該能夠跟蹤A中發生的所有點擊並傳遞到服務器進行日誌記錄。 AppSee是一款已經在做這件事的產品。

我想知道我怎麼能截獲每個用戶操作,以獲得行動目標名稱(按鈕標題?文本框?)

謝謝!

+0

加上一個,我想要的東西,你有什麼辦法嗎? @ Mark –

回答

0

OnClickListener是一個接口。所以你可以實現它的任何類

6

你問的是EventTracking,就像在GoogleAnalytics。但是你正在做的方法是不同的。在Google分析中,需要向事件跟蹤器啓動事件。就像說你有一個3個按鈕,你需要分別跟蹤每個按鈕,你有3個獨立的事件跟蹤器。

如果您想跟蹤所有正在進行的活動,您需要實施活動的onInterceptTouchEvent()。無論何時在活動中發生觸摸事件,都會通過上述方法。

由於谷歌稱

實現此方法可攔截所有觸摸屏移動事件。 這使您可以在事件發送到您的孩子時觀看事件,並在任何時候掌握當前手勢的所有權。

謹慎

使用此功能需要一些護理,因爲它與View.onTouchEvent(MotionEvent)一個相當複雜的相互作用 ,以及使用它需要 實施該方法以及這一個以正確的方式。

欲瞭解更多活動詳情,look here

+0

嗨,在這種情況下,我需要在我想跟蹤的每一個活動上實現「onInterceptTouchEvent()」,對吧?因爲我現在正在製作一個跟蹤庫,這聽起來不太合適 –

+0

面向對象地說不,你需要創建一個基本的Activity並通過它來擴展所有的活動。就這樣,所有觸摸事件都會通過你的活動。 –

+0

如果客戶端應用程序正在使用活動的子類,例如: AppCompatActivity,ActionBarActivity,FragmentActivity? –

0

這很容易。由於屏幕上的每個控件是來看一個子類,你可以做這樣的事情:

public static void logClicksOnMe(View v){ 
    v.setOnClickListener(new View.OnClickListener{ 
     @Override 
     public void onClick(View v){ 
      //TODO Log code 
     } 
    }); 
} 

顯然,這會破壞你已經等對象上設置的監聽器,但你可以做這樣的事情:

public static void setLoggedListener(View v, View.OnClickListener listener){ 
    v.setOnClickListener(new View.OnClickListener{ 
     @Override 
     public void onClick(View v){ 
      //TODO Log code 
      if(listener!=null) listener.onClick(v); 
     } 
    }); 
} 

開發人員必須手動設置偵聽器,但他必須這樣做,所以工作負載或代碼都不應該有太大變化。與onInterceptTouchEvent()活動接口相比,它的優勢在於,您可以絕對控制要跟蹤哪個視圖,並且開發人員不會受限於使用抽象活動(假設他已經在使用來自第三方的其他抽象活動,如SlidingActivity或事物就像那樣),所以維護和實施工作相當小。

0
Not exactly, actually there is something more easier, you can ask them to inherit there activities from your activity 
eg. A extends L; 
Do this in following steps. 

1. Create the library(say L is com.click.counter), with event handles counter like explained in many reply above, using view.onclicklistner. In onclick event, The only difference is use package name. As context is of the app which is calling the library, you can use 
Context::getPackageName 
http://developer.android.com/reference/android/content/Context.html#getPackageName%28%29 

2. onclick events, you may log and sync in one go, at end of day/scheduled time, or on every click. you may use httphandler for that 
See 
https://cloud.google.com/appengine/docs/go/gettingstarted/helloworld?hl=en 

2. Create a test apk(A),add the library as dependency in gradle. 
dependencies { 
    compile 'com.click.counter' 
    } 

3. Inherit all the activity in test apk from class A