Авторизация
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
После регистрации вы можете задавать вопросы и отвечать на них, зарабатывая деньги. Ознакомьтесь с правилами, будем рады видеть вас в числе наших авторов!
Вы должны войти или зарегистрироваться, чтобы добавить ответ.
Для того чтобы сделать вспышку при звонке на устройстве Android, вам понадобится использовать функцию доступа к камере и управления вспышкой. Вот пример кода на языке Java, который позволит вам реализовать это:
1. Добавьте разрешение в файле AndroidManifest.xml:
«`xml
«`
2. В вашей активности или фрагменте добавьте следующий код:
«`java
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private CameraManager cameraManager;
private String cameraId;
private boolean isFlashOn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Получение CameraManager
cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
// Получение ID камеры с вспышкой
try {
cameraId = cameraManager.getCameraIdList()[0];
} catch (CameraAccessException e) {
e.printStackTrace();
}
// Создание слушателя состояния звонка
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
// Включение вспышки при звонке
turnOnFlash();
break;
case TelephonyManager.CALL_STATE_IDLE:
case TelephonyManager.CALL_STATE_OFFHOOK:
// Выключение вспышки после звонка
turnOffFlash();
break;
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
}
// Метод для включения вспышки
private void turnOnFlash() {
try {
cameraManager.setTorchMode(cameraId, true);
isFlashOn = true;
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
// Метод для выключения вспышки
private void turnOffFlash() {
try {
cameraManager.setTorchMode(cameraId, false);
isFlashOn = false;
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
}
«`
Обратите внимание, что этот код работает с использованием Camera2 API, которое доступно начиная с Android 5.0 (API уровень 21) и выше. Если вы планируете поддерживать более старые версии Android, вам нужно будет использовать Camera API, которое имеет другой набор классов и методов.