2015-10-23 12 views
13

のすべてのイベントを追跡するためのライブラリを実装し、同社がAndroidアプリを持っているL.それを呼び出すことができます、A.は、私は、ライブラリを作成しようとしていますアプリ

Lは、そのような中にそれにリンクすることができると言いますAのコードでは、devはちょうど次のようなものを追加する必要があります:

L l =新しいL( "client_id") l.startTrack();

LはAで発生し、ログに記録するためにサーバーに渡すすべてのクリックを追跡できるはずです。 AppSeeはすでにこれを行っている製品です。

私はアクションのターゲット名を取得するために、すべてのユーザーアクションを傍受できるか疑問に思って(ボタンのタイトル?テキストフィールドを?)

ありがとうございます!

+0

1つ、私が欲しいのと同じこと、あなたは何か方法を見つけましたか? @Mark –

答えて

0

OnClickListenerはInterfaceです。どのクラスにも実装できます。

6

Googleアナリティクスのように、EventTrackingをお勧めします。しかし、あなたがやっているアプローチは異なっています。 Googleアナリティクスでは、イベントをイベントトラッカーに開始する必要があります。 3つのボタンがあり、それぞれのボタンを別々にトラッキングする必要があるように、3つの別々のイベントトラッカーがあります。

アクティビティを通過するすべてのイベントを追跡する場合は、アクティビティのonInterceptTouchEvent()を実装する必要があります。タッチイベントがアクティビティで発生するたびに、それは上記の方法を通過します。

Googleは

を言うように、すべてのタッチスクリーンモーションイベントをインターセプトするために、このメソッドを実装します。 これにより、子供たちがあなたの 子どもたちに発送されたときにイベントを見て、いつでも現在のジェスチャーの所有権を得ることができます。この機能を使用して、注意

は、それがView.onTouchEvent(MotionEvent)とかなり複雑 の相互作用を持っているとして、いくつかの世話をし、そしてそれはこの1つだけでなく、そのメソッドを実装 を必要と使用します正しい方法で。

イベント詳細については、look hereをご覧ください。

+0

こんにちは、この場合、追跡したいすべてのアクティビティで "onInterceptTouchEvent()"を実装する必要があります。今はトラッキングのためのライブラリを作っているので、それはいいとは言えません –

+0

オブジェクトは指向的に言い表していません。ベースアクティビティを作成し、それを使ってすべてのアクティビティを拡張する必要があります。そのように、すべてのタッチイベントがあなたの活動を通過します。 –

+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()アクティビティインターフェイスより優れた点は、どのビューが追跡されるのか、開発者が抽象的なアクティビティを使用するように制約されていないことを絶対に制御できることです(SlideActivityなどのサードパーティの抽象的なアクティビティそのように)、メンテナンスと実装の努力はかなり小さいです。

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 
関連する問題