¿Cómo crear una aplicación Antorcha simple en Android usando Kotlin?

Torch Application es una aplicación muy básica que todo desarrollador de Android de nivel principiante definitivamente debería intentar construir mientras aprende Android. En este artículo, crearemos una aplicación en la que simplemente mostraremos un botón para encender y apagar la linterna. 

Nota : si está buscando implementar la aplicación Torch en Android usando Java. Consulte el siguiente artículo: Aplicación Torch en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <!--on below line we are creating a simple text view
        for displaying the current status of the torch-->
    <TextView
        android:id="@+id/idTVTorchStatus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="200dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="Torch Off"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="25sp"
        android:textStyle="bold" />
 
    <!--on below line we are simply displaying a
         toggle button for making torch on and off-->
    <ToggleButton
        android:id="@+id/idBtnSwitch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVTorchStatus"
        android:layout_margin="20dp"
        android:backgroundTint="@color/purple_200"
        android:padding="5dp"
        android:textAllCaps="false"
        android:textColor="@color/white"
        android:textStyle="bold" />
 
</RelativeLayout>

Paso 3: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.content.Context
import android.hardware.camera2.CameraManager
import android.os.Build
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
import android.widget.ToggleButton
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity : AppCompatActivity() {
 
    // on below line we are creating variable
    // for toggle button, text view for torch status.
    lateinit var toggleBtn: ToggleButton
    lateinit var torchStatusTV: TextView
 
    // on below line we are creating
    // a variable for camera manager.
    lateinit var cameraManager: CameraManager
 
    // one below line we are
    // creating a string for camera ID
    lateinit var cameraID: String
 
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
         
        // on below line we are initializing our
        // toggle button and torch status text view.
        toggleBtn = findViewById(R.id.idBtnSwitch)
        torchStatusTV = findViewById(R.id.idTVTorchStatus)
         
        // on below line we are initializing our camera manager.
        cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
        try {
            // O means back camera unit,
            // 1 means front camera unit
            // on below line we are getting camera id
            // for back camera as we will be using
            // torch for back camera
            cameraID = cameraManager.cameraIdList[0]
        } catch (e: Exception) {
            // on below line we are handling exception.
            e.printStackTrace()
        }
 
        // on below line we are adding on
        // click listener for toggle button.
        toggleBtn.setOnClickListener {
            // on below line we are checking
            // if the toggle button is checked.
            if (toggleBtn.isChecked) {
                try {
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                         // if button is checked we are simply
                         // initializing our camera manager and
                         // setting torch mode for back camera
                         // as true to switch on torch
                        cameraManager.setTorchMode(cameraID, true)
                         
                        // on the below line we are simply displaying
                        // a toast message for torch on.
                        Toast.makeText(this@MainActivity, "Torch turned on..", Toast.LENGTH_LONG)
                            .show()
                         
                        // on below line we are setting text
                        // to our text view as torch on.
                        torchStatusTV.setText("Torch On")
                    }
                } catch (e: Exception) {
                    // on below line we are handling exception.
                    e.printStackTrace()
                }
            } else {
                // this condition will be called
                // when toggle button is off.
                try {
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                        // if button is unchecked this method will be called.
                        // In this method we will initializing our camera
                        // manager with camera id and setting torch to off.
                        cameraManager.setTorchMode(cameraID, false)
                         
                        // on below line we are simply displaying a toast message.
                        Toast.makeText(this@MainActivity, "Torch turned off..", Toast.LENGTH_SHORT)
                            .show()
                         
                        // on below line we are setting text to text view.
                        torchStatusTV.setText("Torch Off")
                    }
                  // on below line we are handling exception
                } catch (e: Exception) {
                    e.printStackTrace()
                }
            }
        }
    }
 
    // on below line we are switching the torch off
    // when the application is killed in between.
    override fun finish() {
        super.finish()
        // this method will be called
        // when the application closes.
        try {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                // in this method we will be setting camera manager
                // torch mode to false to switch off the camera.
                cameraManager.setTorchMode(cameraID, false)
            }
            // on below line we are displaying a toast message as torch off.
            Toast.makeText(this@MainActivity, "Torch turned off..", Toast.LENGTH_SHORT)
                .show()
          // on below line we are handling exception.
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *