@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private boolean prepared() {
Preferences prefs = new Preferences(getBaseContext());
String host = prefs.getString(R.string.pref_key_host, null);
int port = prefs.getInt(R.string.pref_key_port, -1);
String priority = prefs.getString(R.string.pref_key_priority, "50");
mFrameRate = prefs.getInt(R.string.pref_key_framerate);
mHorizontalLEDCount = prefs.getInt(R.string.pref_key_x_led);
mVerticalLEDCount = prefs.getInt(R.string.pref_key_y_led);
mSendAverageColor = prefs.getBoolean(R.string.pref_key_use_avg_color);
RECONNECT = prefs.getBoolean(R.string.pref_key_reconnect);
int delay = prefs.getInt(R.string.pref_key_reconnect_delay);
if (host == null || Objects.equals(host, "0.0.0.0") || Objects.equals(host, "")) {
mStartError = getResources().getString(R.string.error_empty_host);
return false;
}
if (port == -1) {
mStartError = getResources().getString(R.string.error_empty_port);
return false;
}
if (mHorizontalLEDCount <= 0 || mVerticalLEDCount <= 0) {
mStartError = getResources().getString(R.string.error_invalid_led_counts);
return false;
}
mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
mHyperionThread = new HyperionThread(mReceiver, host, port, Integer.parseInt(priority), RECONNECT, delay);
mHyperionThread.start();
mStartError = null;
return true;
}