private void fetchAuth(Context context) { String userId = EncryptionManager.getInstance().getUserHash(context); Intent intent = new Intent(context, OAuthActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(OAuthActivity.CONSUMER_KEY, context.getString(R.string.github_client_id)); intent.putExtra( OAuthActivity.CONSUMER_SECRET, context.getString(R.string.github_client_secret)); intent.putExtra(OAuthActivity.REQUESTER, "github"); intent.putExtra(OAuthActivity.CALLBACK_URL, "http://tech.cbits.northwestern.edu/oauth/github"); intent.putExtra(OAuthActivity.LOG_URL, LogManager.getInstance(context).getLogUrl(context)); intent.putExtra(OAuthActivity.HASH_SECRET, userId); context.startActivity(intent); }
public boolean onOptionsItemSelected(MenuItem item) { final int itemId = item.getItemId(); if (itemId == android.R.id.home) { this.onBackPressed(); } if (itemId == R.id.menu_email_item) { StringBuilder message = new StringBuilder(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String newline = System.getProperty("line.separator"); message.append(this.getString(R.string.user_id_label)); message.append(newline); message.append("\"" + EncryptionManager.getInstance().getUserId(this) + "\""); message.append(newline); message.append(newline); message.append(this.getString(R.string.probe_status_label)); message.append(newline); boolean probeEnabled = prefs.getBoolean("config_probes_enabled", false); if (probeEnabled) message.append(this.getString(R.string.probe_status_enabled)); else message.append(this.getString(R.string.probe_status_disabled)); message.append(newline); message.append(newline); message.append(this.getString(R.string.upload_status_label)); message.append(newline); PurpleRobotApplication.fixPreferences(this, true); boolean uploadEnabled = prefs.getBoolean("config_enable_data_server", false); if (uploadEnabled) { boolean wifiOnly = prefs.getBoolean("config_restrict_data_wifi", true); if (wifiOnly) message.append(this.getString(R.string.upload_status_enabled_wifi_only)); else message.append(this.getString(R.string.upload_status_enabled)); } else message.append(this.getString(R.string.upload_status_disabled)); message.append(newline); message.append(newline); message.append(this.getString(R.string.last_upload_label)); message.append(newline); if (prefs.contains("http_last_upload") && prefs.contains("http_last_payload_size")) { long lastUploadTime = prefs.getLong("http_last_upload", 0); long lastPayloadSize = prefs.getLong("http_last_payload_size", 0) / 1024; SimpleDateFormat sdf = new SimpleDateFormat("MMM d - HH:mm:ss"); String dateString = sdf.format(new Date(lastUploadTime)); message.append( String.format( this.getString(R.string.last_upload_format), dateString, lastPayloadSize)); } else message.append(this.getString(R.string.last_upload_placeholder)); message.append(newline); message.append(newline); OutputPlugin plugin = OutputPluginManager.sharedInstance.pluginForClass(this, HttpUploadPlugin.class); if (plugin instanceof HttpUploadPlugin) { HttpUploadPlugin http = (HttpUploadPlugin) plugin; message.append(this.getString(R.string.robot_pending_count_label)); message.append(newline); message.append(this.getString(R.string.pending_files_file, http.pendingFilesCount())); message.append(newline); message.append(newline); } message.append(this.getString(R.string.pr_errors_label)); message.append(newline); final SanityManager sanity = SanityManager.getInstance(this); if (sanity.getErrorLevel() != SanityCheck.OK) { Map<String, String> errors = sanity.errors(); if (errors.size() > 0) { for (String error : errors.keySet()) { message.append(errors.get(error)); message.append(newline); } message.append(newline); } Map<String, String> warnings = sanity.warnings(); if (warnings.size() > 0) { for (String error : warnings.keySet()) { message.append(warnings.get(error)); message.append(newline); } message.append(newline); } } else { message.append(this.getString(R.string.pr_errors_none_label)); message.append(newline); } message.append(newline); message.append(this.getString(R.string.pr_version_label)); message.append(newline); try { PackageInfo pInfo = this.getPackageManager().getPackageInfo(this.getPackageName(), 0); message.append(pInfo.versionName); } catch (NameNotFoundException e) { LogManager.getInstance(this).logException(e); } message.append(newline); message.append(newline); message.append(this.getString(R.string.play_services_version_label)); message.append(newline); message.append("" + GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE); message.append(newline); message.append(newline); message.append(this.getString(R.string.available_sensors_label)); message.append(newline); StringBuilder sb = new StringBuilder(); SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); for (Sensor s : sensorManager.getSensorList(Sensor.TYPE_ALL)) { if (sb.length() > 0) sb.append("\n"); sb.append(s.getName()); } message.append(sb.toString()); try { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("message/rfc822"); intent.putExtra(Intent.EXTRA_SUBJECT, this.getString(R.string.email_diagnostic_subject)); intent.putExtra(Intent.EXTRA_TEXT, message.toString()); SchemeConfigFile scheme = new SchemeConfigFile(this); File cacheDir = this.getExternalCacheDir(); File configFile = new File(cacheDir, "config.scm"); FileOutputStream fout = new FileOutputStream(configFile); fout.write(scheme.toString().getBytes(Charset.defaultCharset().name())); fout.flush(); fout.close(); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(configFile)); this.startActivity(intent); } catch (ActivityNotFoundException e) { try { Intent mailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:[email protected]")); mailIntent.putExtra( Intent.EXTRA_SUBJECT, this.getString(R.string.email_diagnostic_subject)); mailIntent.putExtra(Intent.EXTRA_TEXT, message.toString()); this.startActivity(mailIntent); } catch (ActivityNotFoundException ex) { Toast.makeText(this, R.string.toast_mail_not_found, Toast.LENGTH_LONG).show(); } } catch (IOException e) { LogManager.getInstance(this).logException(e); } } return true; }
@SuppressWarnings("deprecation") protected void onResume() { super.onResume(); this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); TextView userId = (TextView) this.findViewById(R.id.user_id_value); TextView probeStatus = (TextView) this.findViewById(R.id.probe_status_value); TextView uploadStatus = (TextView) this.findViewById(R.id.upload_status_value); TextView lastUpload = (TextView) this.findViewById(R.id.last_upload_value); TextView prVersion = (TextView) this.findViewById(R.id.pr_version_value); TextView gpsVersion = (TextView) this.findViewById(R.id.play_services_version_value); userId.setText("\"" + EncryptionManager.getInstance().getUserId(this) + "\""); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean probeEnabled = prefs.getBoolean("config_probes_enabled", false); if (probeEnabled) probeStatus.setText(R.string.probe_status_enabled); else probeStatus.setText(R.string.probe_status_disabled); PurpleRobotApplication.fixPreferences(this, true); boolean uploadEnabled = prefs.getBoolean("config_enable_data_server", false); if (uploadEnabled) { boolean wifiOnly = prefs.getBoolean("config_restrict_data_wifi", true); if (wifiOnly) uploadStatus.setText(R.string.upload_status_enabled_wifi_only); else uploadStatus.setText(R.string.upload_status_enabled); } else uploadStatus.setText(R.string.upload_status_disabled); if (prefs.contains("http_last_upload") && prefs.contains("http_last_payload_size")) { long lastUploadTime = prefs.getLong("http_last_upload", 0); long lastPayloadSize = prefs.getLong("http_last_payload_size", 0) / 1024; SimpleDateFormat sdf = new SimpleDateFormat("MMM d - HH:mm:ss"); String dateString = sdf.format(new Date(lastUploadTime)); lastUpload.setText( String.format(this.getString(R.string.last_upload_format), dateString, lastPayloadSize)); } if (prefs.getBoolean("config_enable_data_server", false)) { OutputPlugin plugin = OutputPluginManager.sharedInstance.pluginForClass(this, HttpUploadPlugin.class); if (plugin instanceof HttpUploadPlugin) { HttpUploadPlugin http = (HttpUploadPlugin) plugin; TextView uploadCount = (TextView) this.findViewById(R.id.pending_files_value); uploadCount.setText(this.getString(R.string.pending_files_file, http.pendingFilesCount())); } } else { OutputPlugin plugin = OutputPluginManager.sharedInstance.pluginForClass( this, StreamingJacksonUploadPlugin.class); if (plugin instanceof StreamingJacksonUploadPlugin) { StreamingJacksonUploadPlugin http = (StreamingJacksonUploadPlugin) plugin; TextView uploadCount = (TextView) this.findViewById(R.id.pending_files_value); uploadCount.setText(this.getString(R.string.pending_files_file, http.pendingFilesCount())); } } if (prefs.getBoolean("config_enable_log_server", false)) { TextView pendingEventsCount = (TextView) this.findViewById(R.id.pending_log_events_value); pendingEventsCount.setText( this.getString( R.string.pending_log_events_value, LogManager.getInstance(this).pendingEventsCount())); } try { PackageInfo pInfo = this.getPackageManager().getPackageInfo(this.getPackageName(), 0); prVersion.setText(pInfo.versionName); } catch (NameNotFoundException e) { LogManager.getInstance(this).logException(e); } gpsVersion.setText("" + GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE); TextView okText = (TextView) this.findViewById(R.id.pr_error_none_value); LinearLayout errorList = (LinearLayout) this.findViewById(R.id.pr_error_list); errorList.removeAllViews(); final SanityManager sanity = SanityManager.getInstance(this); if (sanity.getErrorLevel() != SanityCheck.OK) { errorList.setVisibility(View.VISIBLE); okText.setVisibility(View.GONE); Map<String, String> errors = sanity.errors(); if (errors.size() > 0) { errorList.setVisibility(View.VISIBLE); for (String error : errors.keySet()) { TextView errorLine = new TextView(this); errorLine.setText(errors.get(error)); errorLine.setTextColor(0xffff4444); errorLine.setTextSize(18); LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); layout.setMargins(0, 0, 0, 10); errorLine.setLayoutParams(layout); final String errorKey = error; errorLine.setOnClickListener( new OnClickListener() { public void onClick(View view) { sanity.runActionForAlert(errorKey); } }); errorList.addView(errorLine); } } Map<String, String> warnings = sanity.warnings(); if (warnings.size() > 0) { for (String error : warnings.keySet()) { TextView errorLine = new TextView(this); errorLine.setText(warnings.get(error)); errorLine.setTextColor(0xffffbb33); errorLine.setTextSize(18); LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); layout.setMargins(0, 0, 0, 10); errorLine.setLayoutParams(layout); final String errorKey = error; errorLine.setOnClickListener( new OnClickListener() { public void onClick(View view) { sanity.runActionForAlert(errorKey); } }); errorList.addView(errorLine); } } } else { errorList.setVisibility(View.GONE); okText.setVisibility(View.VISIBLE); } TextView triggerList = (TextView) this.findViewById(R.id.installed_triggers_value); StringBuilder triggerSb = new StringBuilder(); List<Trigger> triggers = TriggerManager.getInstance(this).allTriggers(); if (triggers.size() > 0) { for (Trigger trigger : triggers) { if (triggerSb.length() > 0) triggerSb.append("\n"); triggerSb.append(trigger.getDiagnosticString(this)); } triggerList.setText(triggerSb.toString()); } else triggerList.setText(R.string.no_installed_triggers_label); TextView sensorsList = (TextView) this.findViewById(R.id.available_sensors_value); StringBuilder sb = new StringBuilder(); SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); for (Sensor s : sensorManager.getSensorList(Sensor.TYPE_ALL)) { if (sb.length() > 0) sb.append("\n"); sb.append(s.getName()); } sensorsList.setText(sb.toString()); String ipAddress = null; WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) { int ip = wifiInfo.getIpAddress(); ipAddress = Formatter.formatIpAddress(ip); } else { try { Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); NetworkInterface iface = null; while (ifaces.hasMoreElements() && (iface = ifaces.nextElement()) != null && ipAddress == null) { if (!iface.getName().equals("lo")) { Enumeration<InetAddress> ips = iface.getInetAddresses(); InetAddress ipAddr = null; while (ips.hasMoreElements() && (ipAddr = ips.nextElement()) != null) { ipAddress = ipAddr.getHostAddress(); } } } } catch (SocketException e) { LogManager.getInstance(this).logException(e); } } if (ipAddress != null) { TextView ipAddressView = (TextView) this.findViewById(R.id.ip_address_value); ipAddressView.setText(ipAddress); } }
public TrainedModel(final Context context, Uri uri) { this._source = uri; this._sourceHash = EncryptionManager.getInstance().createHash(context, uri.toString()); final TrainedModel me = this; Runnable r = new Runnable() { public void run() { String hash = EncryptionManager.getInstance().createHash(context, me._source.toString()); SharedPreferences prefs = Probe.getPreferences(context); File internalStorage = context.getFilesDir(); if (prefs.getBoolean("config_external_storage", false)) internalStorage = context.getExternalFilesDir(null); if (internalStorage != null && !internalStorage.exists()) internalStorage.mkdirs(); File modelsFolder = new File(internalStorage, "persisted_models"); if (modelsFolder != null && !modelsFolder.exists()) modelsFolder.mkdirs(); String contents = null; File cachedModel = new File(modelsFolder, hash); try { contents = FileUtils.readFileToString(cachedModel); } catch (IOException e) { } try { BufferedReader in = null; if (me._source.toString().startsWith("file:///android_asset/")) { AssetManager assets = context.getAssets(); in = new BufferedReader( new InputStreamReader( assets.open( me._source.toString().replace("file:///android_asset/", "")))); } else { URL u = new URL(me._source.toString()); in = new BufferedReader(new InputStreamReader(u.openStream())); } StringBuffer sb = new StringBuffer(); String inputLine = null; while ((inputLine = in.readLine()) != null) sb.append(inputLine); in.close(); contents = sb.toString(); } catch (MalformedURLException e) { e.printStackTrace(); LogManager.getInstance(context).logException(e); } catch (IOException e) { e.printStackTrace(); LogManager.getInstance(context).logException(e); } if (contents != null) { try { JSONObject json = new JSONObject(contents); me._name = json.getString("name"); me._accuracy = json.getDouble("accuracy"); me.generateModel(context, json.get("model")); FileUtils.writeStringToFile(cachedModel, contents); me._inited = true; } catch (Exception e) { LogManager.getInstance(context).logException(e); ModelManager.getInstance(context).deleteModel(me._source.toString()); } } } }; Thread t = new Thread(r); t.start(); }