يصف دليل المطوِّر هذا كيفية قياس توقيتات المستخدم باستخدام
الإصدار 4 من حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Google" لنظام التشغيل Android.
نظرة عامة
إنّ قياس توقيتات المستخدم يوفّر طريقة أصلية لقياس الفترة الزمنية في "إحصاءات Google". ويمكن أن يكون ذلك مفيدًا لقياس أوقات تحميل الموارد، على سبيل المثال.
تحتوي توقيتات المستخدم على الحقول التالية:
اسم الحقل |
النوع |
مطلوبة |
الوصف |
الفئة |
String
| نعم |
فئة الحدث المحدد زمنيًا |
القيمة |
long
| نعم |
قياس التوقيت بالمللي ثانية |
الاسم |
String
| نعم |
اسم الحدث المحدد زمنيًا |
التصنيف |
String
| لا |
تسمية الحدث المحدد زمنيًا |
يمكن الاطّلاع على بيانات توقيت المستخدم بشكل أساسي في تقرير "توقيتات المستخدم لسرعة التطبيقات".
التنفيذ
لإرسال توقيت المستخدم إلى "إحصاءات Google"، أنشئ
TimingBuilder
واستخدِم Tracker
لإرساله.
// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Build and send timing.
t.send(new HitBuilders.TimingBuilder()
.setCategory(getTimingCategory())
.setValue(getTimingInterval())
.setVariable(getTimingName())
.setLabel(getTimingLabel())
.build());
راجِع
الإعداد المتقدّم للحصول على تفاصيل عن طريقة getTracker
.
الاطّلاع على مقتطف رمز من نموذج التطبيق
يعرض المقتطف التالي مثالًا على Fragment
يُرسل توقيت المستخدم:
package com.google.android.apps.mobileplayground;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import com.google.android.apps.mobileplayground.AnalyticsSampleApp.TrackerName;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
/**
* Class to exercise Timing hits.
*/
public class TimingFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.timing, container, false);
final Button sendButton = (Button) view.findViewById(R.id.timingSend);
sendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Build and send timing.
t.send(new HitBuilders.TimingBuilder()
.setCategory(getTimingCategory())
.setValue(getTimingInterval())
.setVariable(getTimingName())
.setLabel(getTimingLabel())
.build());
}
});
final Button dispatchButton = (Button) view.findViewById(R.id.timingDispatch);
dispatchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Manually start a dispatch (Unnecessary if the tracker has a dispatch interval)
GoogleAnalytics.getInstance(getActivity().getBaseContext()).dispatchLocalHits();
}
});
return view;
}
private String getTimingCategory() {
return ((EditText) getView().findViewById(R.id.editTimingCategory)).getText().toString().trim();
}
private long getTimingInterval() {
String value =
((EditText) getView().findViewById(R.id.editTimingInterval)).getText().toString().trim();
if (value.length() == 0) {
return 0;
}
return Long.valueOf(value);
}
private String getTimingName() {
return ((EditText) getView().findViewById(R.id.editTimingName)).getText().toString().trim();
}
private String getTimingLabel() {
return ((EditText) getView().findViewById(R.id.editTimingLabel)).getText().toString().trim();
}
}