<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:removed="@drawable/radial_background" tools:context=".Flashlight" > <ImageButton android:id="@+id/btnSwitch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="100sp" android:src="@drawable/btn_switch_on" android:background="@null" android:contentDescription="@null" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:progressDrawable="@drawable/styled_progress" android:paddingLeft="15sp" android:paddingRight="15sp" android:thumb="@drawable/thumbler_small" android:indeterminate="false" android:layout_below="@+id/btnSwitch" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="79sp" /> <TextView android:text="Developed by Shashank Balaganchi\n" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:gravity="center" android:padding="15sp" android:textSize="13sp" android:textColor="#ff4c7ee1" android:layout_marginBottom="15sp" android:id="@+id/textView" />
package touch.flashlights; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ImageButton; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class Flashlight extends Activity { ImageButton btnSwitch; private Camera camera; private boolean isFlashOn; private boolean hasFlash; Parameters params; MediaPlayer mp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flashlight); AdView mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); // flash switch button btnSwitch = (ImageButton) findViewById(R.id.btnSwitch); /* * First check if device is supporting flashlight or not */ hasFlash = getApplicationContext().getPackageManager() .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); if (!hasFlash) { // device doesn't support flash // Show alert message and close the application AlertDialog alert = new AlertDialog.Builder(Flashlight.this) .create(); alert.setTitle("Error"); alert.setMessage("Sorry, your device doesn't support flash light!"); alert.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // closing the application finish(); } }); alert.show(); return; } // get the camera getCamera(); // displaying button image toggleButtonImage(); /* * Switch button click event to toggle flash on/off */ btnSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isFlashOn) { // turn off flash turnOffFlash(); } else { // turn on flash turnOnFlash(); } } }); } /* * Get the camera */ private void getCamera() { if (camera == null) { try { camera = Camera.open(); params = camera.getParameters(); } catch (RuntimeException e) { Log.e("Camera Error. Failed to Open. Error: ",e.getMessage()); } } } /* * Turning On flash */ private void turnOnFlash() { if (!isFlashOn) { if (camera == null || params == null) { return; } // play sound playSound(); params = camera.getParameters(); params.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(params); camera.startPreview(); isFlashOn = true; // changing button/switch image toggleButtonImage(); } } /* * Turning Off flash */ private void turnOffFlash() { if (isFlashOn) { if (camera == null || params == null) { return; } // play sound playSound(); params = camera.getParameters(); params.setFlashMode(Parameters.FLASH_MODE_OFF); camera.setParameters(params); camera.stopPreview(); isFlashOn = false; // changing button/switch image toggleButtonImage(); } } /* * Playing sound * will play button toggle sound on flash on / off * */ private void playSound(){ if(isFlashOn){ mp = MediaPlayer.create(Flashlight.this, R.raw.light_switch_off); }else{ mp = MediaPlayer.create(Flashlight.this, R.raw.light_switch_on); } mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub mp.release(); } }); mp.start(); } /* * Toggle switch button images * changing image states to on / off * */ private void toggleButtonImage(){ if(isFlashOn){ btnSwitch.setImageResource(R.drawable.btn_switch_on); }else{ btnSwitch.setImageResource(R.drawable.btn_switch_off); } } @Override protected void onDestroy() { super.onDestroy(); } @Override protected void onPause() { super.onPause(); // on pause turn off the flash turnOffFlash(); } @Override protected void onRestart() { super.onRestart(); } @Override protected void onResume() { super.onResume(); // on resume turn on the flash if(hasFlash) turnOnFlash(); } @Override protected void onStart() { super.onStart(); // on starting the app get the camera params getCamera(); } @Override protected void onStop() { super.onStop(); // on stop release the camera if (camera != null) { camera.release(); camera = null; } } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)