use of com.crashlytics.android.answers.CustomEvent in project xDrip by NightscoutFoundation.
the class Telemetry method sendCaptureReport.
/*
No personal information is sent.
Only the level of success in receiving sensor data and
the make/model/version/settings/type of phone and collector used.
This is to try to find any patterns relating to successful combinations, for example
G5 collection working better with Samsung devices or not.
*/
public static void sendCaptureReport() {
try {
if (JoH.ratelimit("capture-report", 50000)) {
Log.d(TAG, "SEND EVENT START");
if (Pref.getBooleanDefaultFalse("enable_crashlytics") && Pref.getBooleanDefaultFalse("enable_telemetry")) {
final Sensor sensor = Sensor.currentSensor();
if (sensor != null) {
if (JoH.msSince(sensor.started_at) > 86400000) {
final StatsResult statsResult = new StatsResult(PreferenceManager.getDefaultSharedPreferences(xdrip.getAppContext()), true);
final int capture_percentage = statsResult.getCapturePercentage();
final int capture_set = (capture_percentage / 10) * 10;
if (capture_set > 60) {
final boolean use_transmiter_pl_bluetooth = Pref.getBooleanDefaultFalse("use_transmiter_pl_bluetooth");
final boolean use_rfduino_bluetooth = Pref.getBooleanDefaultFalse("use_rfduino_bluetooth");
final String subtype = (use_transmiter_pl_bluetooth ? "TR" : "") + (use_rfduino_bluetooth ? "RF" : "") + (Home.get_forced_wear() ? "W" : "") + (NFCReaderX.used_nfc_successfully ? "N" : "");
final String capture_id = DexCollectionType.getDexCollectionType().toString() + subtype + " Captured " + capture_set;
Log.d(TAG, "SEND CAPTURE EVENT PROCESS: " + capture_id);
String watch_model = "";
if (Home.get_forced_wear()) {
// anonymize watch model
final String wear_node = Pref.getStringDefaultBlank("node_wearG5");
if (wear_node.length() > 0) {
final String[] wear_array = wear_node.split(" ");
for (String ii : wear_array) {
if (!ii.contains("|"))
watch_model = watch_model + ii;
}
}
}
if (watch_model.length() > 0) {
Answers.getInstance().logCustom(new CustomEvent(capture_id).putCustomAttribute("Model", Build.MODEL + " " + Build.VERSION.RELEASE).putCustomAttribute("Manufacturer", Build.MANUFACTURER).putCustomAttribute("Version", Build.VERSION.RELEASE).putCustomAttribute("xDrip", getVersionDetails()).putCustomAttribute("Watch", watch_model).putCustomAttribute("Percentage", capture_percentage));
} else {
Answers.getInstance().logCustom(new CustomEvent(capture_id).putCustomAttribute("Model", Build.MODEL + " " + Build.VERSION.RELEASE).putCustomAttribute("Manufacturer", Build.MANUFACTURER).putCustomAttribute("Version", Build.VERSION.RELEASE).putCustomAttribute("xDrip", getVersionDetails()).putCustomAttribute("Percentage", capture_percentage));
}
}
} else {
Log.d(TAG, "Sensor not running for more than 24 hours yet");
}
} else {
Log.d(TAG, "No sensor active");
}
Log.d(TAG, "SEND EVENT DONE");
}
}
} catch (Exception e) {
Log.e(TAG, "Got exception sending Capture Report");
}
}
use of com.crashlytics.android.answers.CustomEvent in project VirtualXposed by android-hacker.
the class FlurryROMCollector method reportOffsetInfo.
private static void reportOffsetInfo(Map<String, Integer> info) {
Map<String, String> toReport = new HashMap<>();
CustomEvent methodOffset = new CustomEvent("methodOffset");
for (String key : info.keySet()) {
toReport.put(key, String.valueOf(info.get(key)));
}
addRomInfo(toReport);
Answers.getInstance().logCustom(methodOffset);
}
use of com.crashlytics.android.answers.CustomEvent in project quran_android by quran.
the class QuranImportActivity method onCreate.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
QuranApplication quranApp = ((QuranApplication) getApplication());
quranApp.refreshLocale(this, false);
super.onCreate(savedInstanceState);
quranApp.getApplicationComponent().inject(this);
Answers.getInstance().logCustom(new CustomEvent("importData"));
}
use of com.crashlytics.android.answers.CustomEvent in project quran_android by quran.
the class QuranAdvancedSettingsFragment method onCreate.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.quran_advanced_preferences);
final Context context = getActivity();
appContext = context.getApplicationContext();
// field injection
((QuranApplication) appContext).getApplicationComponent().inject(this);
final Preference logsPref = findPreference(Constants.PREF_LOGS);
if (BuildConfig.DEBUG || "beta".equals(BuildConfig.BUILD_TYPE)) {
logsPref.setOnPreferenceClickListener(preference -> {
if (logsSubscription == null) {
logsSubscription = Observable.fromIterable(Timber.forest()).filter(tree -> tree instanceof RecordingLogTree).firstElement().map(tree -> ((RecordingLogTree) tree).getLogs()).map(logs -> QuranUtils.getDebugInfo(appContext, quranScreenInfo) + "\n\n" + logs).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribeWith(new DisposableMaybeObserver<String>() {
@Override
public void onSuccess(String logs) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { appContext.getString(R.string.logs_email) });
intent.putExtra(Intent.EXTRA_TEXT, logs);
intent.putExtra(Intent.EXTRA_SUBJECT, "Logs");
startActivity(Intent.createChooser(intent, appContext.getString(R.string.prefs_send_logs_title)));
logsSubscription = null;
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
return true;
});
} else {
removeAdvancePreference(logsPref);
}
final Preference importPref = findPreference(Constants.PREF_IMPORT);
importPref.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String[] mimeTypes = new String[] { "application/*", "text/*" };
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
}
startActivityForResult(intent, REQUEST_CODE_IMPORT);
return true;
});
final Preference exportPref = findPreference(Constants.PREF_EXPORT);
exportPref.setOnPreferenceClickListener(preference -> {
if (exportSubscription == null) {
exportSubscription = bookmarkImportExportModel.exportBookmarksObservable().observeOn(AndroidSchedulers.mainThread()).subscribeWith(new DisposableSingleObserver<Uri>() {
@Override
public void onSuccess(Uri uri) {
Answers.getInstance().logCustom(new CustomEvent("exportData"));
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("application/json");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
List<ResolveInfo> intents = appContext.getPackageManager().queryIntentActivities(shareIntent, 0);
if (intents.size() > 1) {
// if only one, then that is likely Quran for Android itself, so don't show
// the chooser since it doesn't really make sense.
context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string.prefs_export_title)));
} else {
File exportedPath = new File(appContext.getExternalFilesDir(null), "backups");
String exported = appContext.getString(R.string.exported_data, exportedPath.toString());
Toast.makeText(appContext, exported, Toast.LENGTH_LONG).show();
}
}
@Override
public void onError(Throwable e) {
exportSubscription = null;
if (isAdded()) {
Toast.makeText(context, R.string.export_data_error, Toast.LENGTH_LONG).show();
}
}
});
}
return true;
});
internalSdcardLocation = Environment.getExternalStorageDirectory().getAbsolutePath();
listStoragePref = (DataListPreference) findPreference(getString(R.string.prefs_app_location));
listStoragePref.setEnabled(false);
try {
storageList = StorageUtils.getAllStorageLocations(context.getApplicationContext());
} catch (Exception e) {
Timber.d(e, "Exception while trying to get storage locations");
storageList = new ArrayList<>();
}
// except for the normal Environment.getExternalStorageDirectory
if (storageList == null || storageList.size() <= 1) {
Timber.d("removing advanced settings from preferences");
hideStorageListPref();
} else {
loadStorageOptionsTask = new LoadStorageOptionsTask(context, quranFileUtils);
loadStorageOptionsTask.execute();
}
}
use of com.crashlytics.android.answers.CustomEvent in project quran_android by quran.
the class BookmarkPresenter method toggleGroupByTags.
public void toggleGroupByTags() {
groupByTags = !groupByTags;
quranSettings.setBookmarksGroupedByTags(groupByTags);
requestData(false);
Answers.getInstance().logCustom(new CustomEvent(groupByTags ? "groupByTags" : "doNotGroupByTags"));
}
Aggregations