This is my first project, a Flashlight application for Android-based devices:
public class main extends Activity
{
private static final byte MENU_EXIT = 0, MENU_ABOUT = 1;
private static boolean FlashlightState;
private static long BackPressed;
private static ImageView Lamp;
private Flashlight FLASHLIGHT = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
super.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
FlashlightState = false;
Lamp = (ImageView) findViewById(R.id.imgVw_Lamp);
FLASHLIGHT = new Flashlight(this.getApplicationContext());
if (Flashlight.hasFlashlight) FLASHLIGHT.Open();
Lamp.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
Lamp.setEnabled(false);
if (getSystemService(VIBRATOR_SERVICE) != null)
{
AudioManager VibratorState = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
if (VibratorState.getRingerMode() != AudioManager.RINGER_MODE_SILENT)
{
Vibrator Switch = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Switch.vibrate(50);
}
VibratorState = null;
}
if (!FlashlightState) turnOnFlashlight();
else turnOffFlashlight();
Lamp.setEnabled(true);
return;
}
});
return;
}
@Override
protected void onStart()
{
super.onStart();
BackPressed = 0;
if (Flashlight.hasFlashlight) FLASHLIGHT.Open();
return;
}
@Override
protected void onPause()
{
super.onPause();
this.turnOffFlashlight();
BackPressed = 0;
if (Flashlight.hasFlashlight) FLASHLIGHT.Close();
return;
}
@Override
public void onBackPressed()
{
if ((BackPressed + 2000) > System.currentTimeMillis())
{
finish();
this.onDestroy();
}
else
{
Toast.makeText(getApplicationContext(), getString(R.string.Exit_Message), Toast.LENGTH_SHORT).show();
BackPressed = System.currentTimeMillis();
}
return;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(Menu.NONE, MENU_EXIT, Menu.NONE, getString(R.string.Exit)).setIcon(android.R.drawable.ic_menu_close_clear_cancel);
menu.add(Menu.NONE, MENU_ABOUT, Menu.NONE, getString(R.string.About)).setIcon(android.R.drawable.ic_menu_info_details);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case MENU_EXIT:
finish();
this.onDestroy();
break;
case MENU_ABOUT:
this.showAboutBox();
break;
}
return super.onOptionsItemSelected(item);
}
private final void showAboutBox()
{
AlertDialog.Builder AboutBox = new AlertDialog.Builder(this);
AboutBox.setTitle(getString(R.string.About));
AboutBox.setIcon(android.R.drawable.ic_dialog_info);
AboutBox.setMessage("Name:\nVisionlight\n\nDescription:\nFlashlight application for Android based devices.\n\nVersion:\n1.0.0\n\nLanguages:\nEnglish/International, Persian, Arabic\n\nPlatform:\nAndroid +2.2.x(Froyo)\n\nPermissions:\nCamera, Flashlight, Vibrate, Wake Lock.\n\nUses-feature:\nCamera [NR], Flashlight [NR].\n\nProducer/Developer:\nYousha Aleayoub(Y.P.Y)\n\nLicense:\nBSD\n\nContact:\nYousha.A@Hotmail.com\n\nLink:\nhttp://yousha.blog.ir/");
AboutBox.setNeutralButton(getString(R.string.Ok), new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
AboutBox.create().show();
return;
}
@Override
protected void onDestroy()
{
super.onDestroy();
this.turnOffFlashlight();
if (Flashlight.hasFlashlight) FLASHLIGHT.Close();
FLASHLIGHT = null;
android.os.Process.killProcess(android.os.Process.myPid());
return;
}
private final void turnOnFlashlight()
{
FlashlightState = true;
Lamp.setImageResource(R.drawable.lamp_on);
if (Flashlight.hasFlashlight)
{
FLASHLIGHT.On();
}
else
{
WindowManager.LayoutParams Layout = getWindow().getAttributes();
Layout.screenBrightness = 1F;
getWindow().setAttributes(Layout);
findViewById(R.id.lnrLyt_Main).setBackgroundColor(Color.WHITE);
}
return;
}
private final void turnOffFlashlight()
{
FlashlightState = false;
Lamp.setImageResource(R.drawable.lamp_off);
if (Flashlight.hasFlashlight) FLASHLIGHT.Off();
else findViewById(R.id.lnrLyt_Main).setBackgroundColor(Color.BLACK);
return;
}
}
What do you think? Any suggestions for improvement?