Você está na página 1de 8

package com.example.mukund.

flashingscreen;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.support.annotation.VisibleForTesting;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListe


ner {
static final String textVisibility = "textVisibility";
static final String buttonlayoutVisibility = "buttonVisibility";
static final String backColor = "backColorstate";
static final String storageFile = "startupStorage";
static final String startupButtonLayoutVisibility = "BLVST";
static final String startupBackgroundColor = "BCST";
LinearLayout background;
LinearLayout buttonPanel;
Button red;
Button yellow;
Button green;
Button black;
Button white;
Button sos;
TextView text;
ProgressBar progressBar;
sosActivity signal;
int hideText = 0;
int currentBackgroundColor = Color.rgb(255, 255, 255);
int index, checkedRadioButton;
boolean fullScreen = false;
boolean startupButtonVisibility = true;
boolean startupButtonVisibilityDialog = false;
boolean startupColorDialog = false;
boolean clicked = false;
AlertDialog.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
background = (LinearLayout) findViewById(R.id.background);
buttonPanel = (LinearLayout) findViewById(R.id.buttonPanel);
text = (TextView) findViewById(R.id.text);
red = (Button) findViewById(R.id.red);
yellow = (Button) findViewById(R.id.yellow);
black = (Button) findViewById(R.id.black);
white = (Button) findViewById(R.id.white);
green = (Button) findViewById(R.id.green);
sos = (Button) findViewById(R.id.sos);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);
startupButtonVisibility = getsavedOnStartupVisibilty();
setStartupButtonVisibility(startupButtonVisibility);
currentBackgroundColor = getsavedOnSartupColor();
background.setBackgroundColor(currentBackgroundColor);
setcheckCurrentColorinRadioGroup(currentBackgroundColor);
background.setOnClickListener(this);
text.setOnClickListener(this);
red.setOnClickListener(this);
yellow.setOnClickListener(this);
black.setOnClickListener(this);
white.setOnClickListener(this);
green.setOnClickListener(this);
sos.setOnClickListener(this);
restoreparameterState(savedInstanceState);
}
private void setcheckCurrentColorinRadioGroup(int color) {
if (color == Color.rgb(255, 0, 0))
checkedRadioButton = (R.id.rred);
else if (color == Color.rgb(255, 255, 0))
checkedRadioButton = (R.id.ryellow);
else if (color == Color.rgb(0, 255, 0))
checkedRadioButton = (R.id.rgreen);
else if (color == Color.rgb(0, 0, 0))
checkedRadioButton = (R.id.rblack);
else if (color == Color.rgb(255, 255, 255))
checkedRadioButton = (R.id.rwhite);
}
private void setStartupButtonVisibility(boolean startupButtonVisibility) {
if (startupButtonVisibility == true) {
buttonPanel.setVisibility(View.VISIBLE);
} else buttonPanel.setVisibility(View.GONE);
}
private void stopSOS() {
if (signal != null) {
signal.cancel(true);
}
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.background: {
if (buttonPanel.getVisibility() == View.VISIBLE) {
buttonPanel.setVisibility(View.GONE);
hideText++;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCR
EEN);
fullScreen = true;
} else if (buttonPanel.getVisibility() == View.GONE) {
buttonPanel.setVisibility(View.VISIBLE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLS
CREEN);
fullScreen = false;
stopSOS();
}
if (hideText > 0) {
text.setVisibility(View.GONE);
}
}
break;
case R.id.red:
//text.setBackgroundColor(Color.rgb(255, 0, 0));
background.setBackgroundColor(Color.rgb(255, 0, 0));
buttonPanel.setVisibility(View.GONE);
currentBackgroundColor = (Color.rgb(255, 0, 0));
stopSOS();
break;
case R.id.yellow:
background.setBackgroundColor(Color.rgb(255, 255, 0));
buttonPanel.setVisibility(View.GONE);
currentBackgroundColor = (Color.rgb(255, 255, 0));
stopSOS();
break;
case R.id.green:
background.setBackgroundColor(Color.rgb(0, 255, 0));
buttonPanel.setVisibility(View.GONE);
currentBackgroundColor = (Color.rgb(0, 255, 0));
stopSOS();
break;
case R.id.black:
background.setBackgroundColor(Color.rgb(0, 0, 0));
buttonPanel.setVisibility(View.GONE);
currentBackgroundColor = (Color.rgb(0, 0, 0));
stopSOS();
break;
case R.id.white:
background.setBackgroundColor(Color.rgb(255, 255, 255));
buttonPanel.setVisibility(View.GONE);
currentBackgroundColor = (Color.rgb(255, 255, 255));
stopSOS();
break;
case R.id.sos:
signal = new sosActivity();
signal.execute("...---...");
//buttonPanel.setVisibility(View.GONE);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(textVisibility, text.getVisibility());
outState.putInt(buttonlayoutVisibility, buttonPanel.getVisibility());
outState.putInt(backColor, currentBackgroundColor);
outState.putBoolean("buttonLayoutVisibilityDecision", startupButtonVisib
ilityDialog);
outState.putBoolean("colorDecisionDialogOpen", startupColorDialog);
outState.putBoolean("colorSelectedfromDialog", clicked);
outState.putInt("IDofSelectedColorfromDialog", checkedRadioButton);
outState.putBoolean("fullScreenStatus", fullScreen);
}
private void restoreparameterState(Bundle state) {
if (state != null) {
text.setVisibility(state.getInt(textVisibility));
buttonPanel.setVisibility(state.getInt(buttonlayoutVisibility));
currentBackgroundColor = state.getInt(backColor);
background.setBackgroundColor(currentBackgroundColor);
fullScreen = state.getBoolean("fullScreenStatus");
if (fullScreen == true) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
;
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREE
N);
}
startupButtonVisibilityDialog = state.getBoolean("buttonLayoutVisibi
lityDecision");
if (startupButtonVisibilityDialog == true) {
openButtonLayoutVisibilityDialog();
}
startupColorDialog = state.getBoolean("colorDecisionDialogOpen");
clicked = state.getBoolean("colorSelectedfromDialog");
checkedRadioButton = state.getInt("IDofSelectedColorfromDialog");
if (startupColorDialog == true) {
openColorDialog();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.buttonvisibility:
startupButtonVisibilityDialog = true;
openButtonLayoutVisibilityDialog();
return true;
case R.id.colorsetting:
startupColorDialog = true;
openColorDialog();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void openButtonLayoutVisibilityDialog() {
builder = new AlertDialog.Builder(this);
builder.setTitle("Startup Button Visibility")
.setNegativeButton("Visible", new DialogInterface.OnClickListene
r() {
@Override
public void onClick(DialogInterface dialog, int which) {
saveOnStartupVisibility(true);
startupButtonVisibilityDialog = false;
}
})
.setPositiveButton("Hidden", new DialogInterface.OnClickListener
() {
@Override
public void onClick(DialogInterface dialog, int which) {
saveOnStartupVisibility(false);
startupButtonVisibilityDialog = false;
}
})
.setNeutralButton("Cancel", new DialogInterface.OnClickListener(
) {
@Override
public void onClick(DialogInterface dialog, int which) {
startupButtonVisibilityDialog = false;
}
}).setCancelable(false);
builder.create().show();
}
private void openColorDialog() {
final View toDisplayInDialog = getLayoutInflater().inflate(R.layout.radi
ogroup, null);
builder = new AlertDialog.Builder(this);
builder.setView(toDisplayInDialog);
final RadioGroup myRadioGroup = (RadioGroup) toDisplayInDialog.findViewB
yId(R.id.rselectcolor);
//if (clicked==true){
myRadioGroup.check(checkedRadioButton);
//}
final RadioButton myCheckedButton = (RadioButton) toDisplayInDialog.find
ViewById(checkedRadioButton);
myCheckedButton.setChecked(true);

myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeLi
stener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int radioGroupId = myRadioGroup.getCheckedRadioButtonId();
checkedRadioButton = radioGroupId;
final RadioButton myCheckedButton = (RadioButton) toDisplayInDia
log.findViewById(radioGroupId);
index = myRadioGroup.indexOfChild(myCheckedButton);
clicked = true;
}
});
setDialogColorSelect();
}

private void setDialogColorSelect() {


builder.setTitle("Choose Startup Color")
.setPositiveButton("Set Startup Color", new DialogInterface.OnCl
ickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startupColorDialog = false;
clicked = false;
switch (index) {
case 0:
saveOnStartupColor(Color.rgb(255, 255, 255));
break;
case 1:
saveOnStartupColor(Color.rgb(0, 0, 0));
break;
case 2:
saveOnStartupColor(Color.rgb(255, 0, 0));
break;
case 3:
saveOnStartupColor(Color.rgb(255, 255, 0));
break;
case 4:
saveOnStartupColor(Color.rgb(0, 255, 0));
break;
default:
// saveOnStartupColor(getsavedOnSartupColor());
// break;
}
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener
() {
@Override
public void onClick(DialogInterface dialog, int which) {
startupColorDialog = false;
clicked = false;
}
}).setCancelable(false);
builder.create().show();
}
/*
b is the boolean value telling the visibility of the buton layout on its sta
rtup.
Shared preferences store the value of this boolean in a file in android.
Mode private gives access of write and read t all applications with same use
r ID.
*/
private void saveOnStartupVisibility(boolean b) {
//storageFile is the name of the common file that has all stored values.
SharedPreferences pref = getSharedPreferences(storageFile, MODE_PRIVATE)
;
SharedPreferences.Editor write = pref.edit();
write.putBoolean(startupButtonLayoutVisibility, b);
write.commit();//must to have this for saving
}
private boolean getsavedOnStartupVisibilty() {
SharedPreferences pref = getSharedPreferences(storageFile, MODE_PRIVATE)
;
boolean rb = pref.getBoolean(startupButtonLayoutVisibility, true);
return rb;
}
private void saveOnStartupColor(int rgb) {
SharedPreferences pref = getSharedPreferences(storageFile, MODE_PRIVATE)
;
SharedPreferences.Editor write = pref.edit();
write.putInt(startupBackgroundColor, rgb);
write.commit();
}
private int getsavedOnSartupColor() {
SharedPreferences pref = getSharedPreferences(storageFile, MODE_PRIVATE)
;
int color = pref.getInt(startupBackgroundColor, Color.rgb(255, 0, 0));
return color;
}
@Override
protected void onStop() {
super.onPause();
if (signal != null) {
signal.cancel(true);
}
}
public class sosActivity extends AsyncTask<String, Integer, Void> {
int time = 0;
int count = 0;
int progress = 0;
@Override
protected void onPreExecute() {
background.setBackgroundColor(currentBackgroundColor);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}
@Override
protected Void doInBackground(String... params) {
progress = params[0].length();
while (!isCancelled()) {
for (int i = 0; i < params[0].length(); i++) {
if (isCancelled()) {
break;
}
if (params[0].charAt(i) == '.') {
time = 500;
} else if (params[0].charAt(i) == '-') {
time = 1000;
}
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(Color.rgb(0, 0, 255));
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(currentBackgroundColor);
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
background.setBackgroundColor(values[0]);
count = ++count % (2 * progress);
progressBar.setProgress((1 + count) * 50 / progress);
}
@Override
protected void onPostExecute(Void Result) {
progressBar.setVisibility(View.GONE);
background.setBackgroundColor(currentBackgroundColor);
}
@Override
protected void onCancelled() {
super.onCancelled();
background.setBackgroundColor(currentBackgroundColor);
}

}
}

Você também pode gostar