Come creare un App Torcia Android con Java

In questo tutorial andremo a progettare una semplice app Torcia utilizzando un ToggleButton per per accedere e spegnere e spegnere il flash dello smartphone:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”>

<ToggleButton
android:layout_width=”90dp”
android:layout_height=”60dp”
android:id=”@+id/btn”
android:background=”#E5473D”
android:textSize=”40sp”/>

</LinearLayout>

Per attivare la torcia in Android, è necessario utilizzare la classe CameraManager.
Nel metodo onCreate() otteniamo l’ oggetto CameraManager . Quindi impostiamo OnClickListener() per il pulsante di accensione e   il metodo CameraManager.setTorchMode() per attivare o disattivare la modalità torcia dell’unità flash:

package com.exsample.flashLight.activities;

import android.app.Activity;
import android.os.Bundle;
import com.exsample.contaPassi.R;
import android.widget.Button;
import android.widget.*;
import android.content.pm.*;
import android.hardware.camera2.*;
import android.content.*;

public class MainActivity extends Activity {

CameraManager cameraManager;
String cameraId;
boolean flashAvailable;

ToggleButton btn;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.btn);

flashAvailable = getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT);




cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
cameraId = cameraManager.getCameraIdList()[0];
} catch (CameraAccessException e) {
e.printStackTrace();
}


btn= findViewById(R.id.btn);
btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switchFlashLight(isChecked);
}
});
}

public void switchFlashLight(boolean status) {
try {
cameraManager.setTorchMode(cameraId, status);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
}