Como construir um aplicativo simples de lanterna / TorchLight para Android?
Todos os iniciantes que estão no mundo do desenvolvimento Android devem construir um aplicativo Android simples que pode ligar / desligar a lanterna ou lanterna clicando em um botão. Portanto, no final deste artigo, será possível construir seu próprio aplicativo de lanterna para Android com um layout simples. Um exemplo de GIF é fornecido abaixo para se ter uma ideia sobre o que faremos neste artigo. Observe que vamos implementar este projeto usando a linguagem Java .
Etapas para construir um aplicativo simples lanterna / TorchLight para Android
Etapa 1: Criar um novo projeto
Para criar um novo projeto no Android Studio, consulte Como criar / iniciar um novo projeto no Android Studio . Observe que selecione Java como a linguagem de programação.
Etapa 2: Trabalhando com activity_main.xml
- Este layout contém um TextView simples , View (como divisor) e um ToggleButton para alternar a unidade Flashlight.
- Consulte Como adicionar botão de alternância em um aplicativo Android , para implementar e ver como o botão de alternar funciona.
- Chame o seguinte código no arquivo activity_main.xml ou pode-se projetar widgets customizados.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
tools:ignore="HardcodedText">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:text="Flashlight"
android:textColor="@color/colorPrimary"
android:textSize="50sp"
android:textStyle="bold|italic" />
<!--This is the simple divider between above
TextView and ToggleButton-->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="32dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="32dp"
android:background="@android:color/darker_gray" />
<!--This toggle button by default toggles
between the ON and OFF we no need to
set separate TextView for it-->
<ToggleButton
android:id="@+id/toggle_flashlight"
android:layout_width="200dp"
android:layout_height="75dp"
android:layout_gravity="center"
android:layout_marginTop="32dp"
android:onClick="toggleFlashLight"
android:textSize="25sp" />
</LinearLayout>
A seguinte IU de saída é produzida:
Etapa 3: manipular o widget de botão de alternância para alternar entre LIGADO ou DESLIGADO dentro do arquivo MainActivity.java
O código completo para o arquivo MainActivity.java é fornecido abaixo. Os comentários são adicionados dentro do código para entender o código em mais detalhes.
import android.content.Context;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import android.widget.ToggleButton;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ToggleButton toggleFlashLightOnOff;
private CameraManager cameraManager;
private String getCameraID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Register the ToggleButton with specific ID
toggleFlashLightOnOff = findViewById(R.id.toggle_flashlight);
// cameraManager to interact with camera devices
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
// Exception is handled, because to check whether
// the camera resource is being used by another
// service or not.
try {
// O means back camera unit,
// 1 means front camera unit
getCameraID = cameraManager.getCameraIdList()[0];
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
// RequiresApi is set because, the devices which are
// below API level 10 don't have the flash unit with
// camera.
@RequiresApi(api = Build.VERSION_CODES.M)
public void toggleFlashLight(View view) {
if (toggleFlashLightOnOff.isChecked()) {
// Exception is handled, because to check
// whether the camera resource is being used by
// another service or not.
try {
// true sets the torch in ON mode
cameraManager.setTorchMode(getCameraID, true);
// Inform the user about the flashlight
// status using Toast message
Toast.makeText(MainActivity.this, "Flashlight is turned ON", Toast.LENGTH_SHORT).show();
} catch (CameraAccessException e) {
// prints stack trace on standard error
// output error stream
e.printStackTrace();
}
} else {
// Exception is handled, because to check
// whether the camera resource is being used by
// another service or not.
try {
// true sets the torch in OFF mode
cameraManager.setTorchMode(getCameraID, false);
// Inform the user about the flashlight
// status using Toast message
Toast.makeText(MainActivity.this, "Flashlight is turned OFF", Toast.LENGTH_SHORT).show();
} catch (CameraAccessException e) {
// prints stack trace on standard error
// output error stream
e.printStackTrace();
}
}
}
}
- Leia sobre o printStackTrace() função aqui: Throwable printStackTrace() método em Java com exemplos .
- Depois de manipular o ToggleButton, é necessário testar o aplicativo em dispositivo Android físico . Porque se você executar o aplicativo no emulador que vem com o Android Studio, o aplicativo irá travar assim que o ToggleButton for clicado, porque o dispositivo do emulador não viria com a unidade de flash da câmera.
- Este método de acesso ao hardware da câmera não requer permissão especial do usuário para acessar a unidade da câmera. Pois nisso estamos acessando a unidade de flash apenas através do ID da câmera (seja câmera frontal ou traseira).
A IU do aplicativo é produzida como:
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva