CodeDocu.com

 

 

This Android app creates a Toggle button that turns the light on the Android smartphone ON and OFF.

In addition, you can switch to Pulse Strobo, where the HIGH pulse and LOW pulses are displayed as flashes in the mobile phone camera

 

with Java Code in Android

 

 

Java Code

In java/project

MainActivity.java

Android App: Flash Torch with Impulses

 

 

package com.example.flashimpulser;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.PackageManager;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.view.View;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.ToggleButton;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

   
//--< Variables for Flash >--
   
boolean _isFlashAvailable;
    
CameraManager _CameraManager;
   
String _CameraId;
   
boolean _flashIsOn = false;
   
//--</ Variables for Flash >--

   
Switch _switchImpuler;
   
ToggleButton _toggleButton;
   
int _milliSeconds_HIGH =1000;
   
int _milliSedonds_LOW =1000;

   
//========< #region: Activity >========
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
//--------< onCreate() >--------
       
super.onCreate(savedInstanceState);
        setContentView(
R.layout.activity_main);

       
//----< init >----

       
_switchImpuler=findViewById(R.id.switchFlasher);
       
_toggleButton= findViewById(R.id.btnToggleLight);

       
//---< SeekBars >---
       
SeekBar seekbarHIGH =findViewById(R.id.seekBarHIGH);
        
_milliSeconds_HIGH =seekbarHIGH.getMax();
       
seekbarHIGH.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
           
@Override
           
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
               
_milliSeconds_HIGH =i;
            }

           
@Override
           
public void onStartTrackingTouch(SeekBar seekBar) {
            }

           
@Override
           
public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

       
SeekBar seekbarLOW =findViewById(R.id.seekBarLOW);
       
_milliSedonds_LOW =seekbarLOW.getMax();
       
seekbarLOW.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
           
@Override
           
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
               
_milliSedonds_LOW =i;
            }

           
@Override
           
public void onStartTrackingTouch(SeekBar seekBar) {
            }

           
@Override
           
public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

       
//---< SeekBars >---

        //-< FlashLight >-
        //*flashlight is part of camera
       
_isFlashAvailable = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
       
_CameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
       
try {
           
_CameraId = _CameraManager.getCameraIdList()[0];
        }
catch (CameraAccessException e) {
           
//e.printStackTrace();
       
}
       
//-</ FlashLight >-
        //----</ init >----
        //--------</ onCreate() >--------
   
}
   
//========</ #region: Activity >========

    //========< #region: Buttons+Views >========
   
public void btnToggleLight(View view) {
       
//--------< btnToggleLight() >--------
       
flashLightMain();
       
//--------</ btnToggleLight() >--------
   
}
   
public void switchImpulses(View view) {
        flashLightMain();
    }
   
//========</ #region: Buttons+Views >========


    //========< #region: Methods >========
   
private  void flashLightMain(){
       
//--------< flashLightMain() >--------


       
if (_toggleButton.isChecked() ==true) {
           
//----< Button==ON >----
           
if (_switchImpuler.isChecked())
            {
                
//--< Impulses >--
               
start_flash_Impule_HIGH();
               
//--</ Impulses >--
           
}
           
else
           
{
               
//--< Full >--
               
setFlashLightON();
               
//--</ Full >--
            
}
           
//----</ Button==ON >----
       
}
       
else
       
{
           
//----< Button==OFF >----
           
setFlashLightOFF();
            set_FlashImpulses_OFF();
           
//----</ Button==OFF >----
       
}
       
//--------</ flashLightMain() >--------
   
}

   
private void setFlashLightON()    {
       
//--------< setFlashLightON() >--------
        //*switch Flash Light ON / OFF
       
try {
               
_flashIsOn = true;
               
_CameraManager.setTorchMode(_CameraId, true);
        }
catch (CameraAccessException e) {
            e.printStackTrace();
        }
       
//--------</ setFlashLightON() >--------
   
}

   
private void setFlashLightOFF()    {
       
//--------< flashLightON() >--------
        //*switch Flash Light ON / OFF
       
try {
           
_flashIsOn = false;
           
_CameraManager.setTorchMode(_CameraId, false);
        }
catch (CameraAccessException e) {
            e.printStackTrace();
        }
       
//--------</ flashLightON() >--------
   
}



   
public void start_flash_Impule_HIGH()
    {
       
//----< start_flash_Impule_HIGH() >----
        //< check >
       
if (!_toggleButton.isChecked()) return;
       
if (!_switchImpuler.isChecked()) return;


        
Timer _timerPulsHIGH = new Timer();
       
_timerPulsHIGH.schedule(new TimerTask() {
           
@Override
           
public void run()
            {
               
try {
                   
_flashIsOn = true;
                   
_CameraManager.setTorchMode(_CameraId, true);
                    start_flash_Impule_LOW();
                }
               
catch (CameraAccessException e) {
                    e.printStackTrace();
                }
            }
        },
_milliSedonds_LOW);
       
//----</ Pstart_flash_Impule_HIGH() >--

   
}

   
public void start_flash_Impule_LOW()
    {
       
//----< start_flash_Impule_LOW() >----
       
Timer _timerPulsLOW = new Timer();
       
_timerPulsLOW.schedule(new TimerTask() {
           
@Override
            
public void run()
            {
               
try {
                   
_flashIsOn = false;
                   
_CameraManager.setTorchMode(_CameraId, false);
                    start_flash_Impule_HIGH();
                }
               
catch (CameraAccessException e) {
                    e.printStackTrace();
                }

            }
        },
_milliSeconds_HIGH);

       
//----</ start_flash_Impule_LOW() >--

   
}


   
private void set_FlashImpulses_OFF()
    {
       
//--------< set_FlashImpulses_OFF() >--------
        //--< Flashlight OFF >--
       
try {
           
_CameraManager.setTorchMode(_CameraId, false);
           
_flashIsOn = false;

        }
catch (CameraAccessException e) {
            e.printStackTrace();
        }
       
//--</ Flashlight OFF >--
        //--------</ set_FlashImpulses_OFF() >--------
   
}


   
//========</ #region: Methods >========
}

 

 

 

Layout:

Activity_main.xml

In res/layout

Android App: Flash Torch with Impulses

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".MainActivity"
   
android:orientation="vertical"
   
android:padding="44sp"
   
>


    <
ToggleButton
       
android:id="@+id/btnToggleLight"
       
android:layout_width="200sp"
       
android:layout_height="wrap_content"
       
android:layout_gravity="center_horizontal"
       
android:onClick="btnToggleLight"

       
/>

    <
Switch
       
android:id="@+id/switchFlasher"
       
android:layout_height="wrap_content"
       
android:layout_width="200sp"
       
android:layout_gravity="center_horizontal"
       
android:layout_margin="10sp"
       
android:text="@string/text_SwitchStrobo"
       
android:onClick="switchImpulses"

       
android:layout_marginBottom="44sp"
       
tools:ignore="UseSwitchCompatOrMaterialXml"
       
/>


    <
TextView
       
android:layout_width="match_parent"
        
android:layout_height="wrap_content"
       
android:text="@string/text_Slider_high"
       
android:textSize="16sp"
       
       
android:layout_marginTop="33dp"
       
/>

    <
SeekBar
       
android:id="@+id/seekBarHIGH"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_gravity="center_horizontal"
       
android:progress="1000"
       
android:max="1000"
       
/>

    <
TextView
       
android:layout_marginTop="11dp"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:text="@string/text_Slider_low"
       
android:textSize="16sp"
       
/>

    <
SeekBar
       
android:id="@+id/seekBarLOW"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_gravity="center_horizontal"
       
android:progress="1000"
       
android:max="1000"
       
/>


</
LinearLayout>

 

 

 

AndroidManifest.xml

In the Android manifest noch the entry must be made that FlashLight is allowed

Android App: Flash Torch with Impulses

 

<uses-permission android:name="android.permission.FLASHLIGHT"/>

 

 


Software Entwicklung Stuttgart NĂ¼rtingen
Suche Projekte C#, WPF, Windows App,ASP.Net, vb.Net, WinForms, SQL Server, Access, Excel