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();
}
}
}