Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 15.12.2019
Сообщений: 107

Android Studio. Как дать приложению возможность использовать фронтальную вспышку?

15.12.2019, 20:05. Показов 1871. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На устройстве имеется 2 вспышки - основная и фронтальная (на передней части телефона)
Уже написал приложение "фонарик", которое при нажатии кнопки включает основной фонарик. Мне нужно, чтобы так же можно было на вторую кнопку включать фронтальный. Как это можно реализовать? Для фронтального фонаря есть какие-то специальные разрешения?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2019, 20:05
Ответы с готовыми решениями:

Как подключить к приложению уже готовую базу данных в Android Studio?
Здравствуйте. Есть готовая модель базы данных, созданная в ERwin Data Modeler, и сгенерированная в Access. Как в Android Studio в...

Как дать своему приложению привилегии Root?
Нужно записать данные в файл, который имеет права доступа RW-R--R--, соответственно нужен рут. Следующий код не пишет в файл, получаю...

Как не дать стороннему приложению закрыть программу
Что нужно сделать чтобы мою программу не закрывало левое приложение! Вообщем когда запускаю другое приложения, то моя программа...

3
93 / 66 / 27
Регистрация: 23.06.2019
Сообщений: 483
15.12.2019, 22:39
https://stackoverflow.com/ques... h-of-phone
0
0 / 0 / 1
Регистрация: 15.12.2019
Сообщений: 107
19.02.2020, 18:20  [ТС]
Вообщем, уже сколько времени прошло, а у меня так и не получилось реализовать эту идею.
Что я делаю не так?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import android.os.Bundle;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
 
    Button btn;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        CameraManager cameraManager = (CameraManager)getSystemService(CAMERA_SERVICE);
        try {
            if (hasFlashForFrontCamera(cameraManager)) {
            }
 
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
 
        boolean hasFlashForFrontCamera(CameraManager cManager) throws CameraAccessException {
            for(final String cameraId : cManager.getCameraIdList()){
                CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId);
                int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
                if(cOrientation == CameraCharacteristics.LENS_FACING_FRONT) {
                    return characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
                }
            }
            return false;
        }
 
        btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cameraManager.setTorchMode(frontCameraId, true);
            }
        });
 
    }
}
0
0 / 0 / 1
Регистрация: 15.12.2019
Сообщений: 107
19.02.2020, 18:40  [ТС]
Верхняя часть кода - обычный фонарик, ниже я попытался подключить еще и фронтальный, но почему-то не определяется frontCameraId

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity {
 
    Button button1 = null;
    Button btn;
 
    private Camera camera = null;
    private boolean isFlashOn;
    private boolean hasFlash;
    Camera.Parameters params;
 
    public void errorDialog(){
 
        AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).create();
        dialog.setTitle("Error!");
        dialog.setMessage("Your device not support flashlight!");
        dialog.setButton("OK", new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int which){
             finish();
            }
        });
 
        dialog.show();
        return;
 
    }
 
    private void getCamera(){
 
        if(camera == null){
            try{
                camera = Camera.open();
                params = camera.getParameters();
            }catch (RuntimeException e){
                e.printStackTrace();
            }
        }
 
    }
 
    private void turnOn(){
        if(!isFlashOn){
            if(camera == null || params == null){
                return;
            }
            params = camera.getParameters();
            params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
            camera.setParameters(params);
            camera.startPreview();
            isFlashOn = true;
 
        }
    }
 
    private void turnOff(){
        if(isFlashOn){
            if(camera == null || params == null){
                return;
            }
            params = camera.getParameters();
            params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);
            camera.stopPreview();
            isFlashOn = false;
 
        }
    }
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button1 = (Button)findViewById(R.id.button1);
        btn = (Button)findViewById(R.id.koo);
 
        hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
 
        if(!hasFlash){
 
            errorDialog();
 
        }
 
        getCamera();
 
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isFlashOn){
                    turnOff();
                }else{
                    turnOn();
                }
            }
        });
 
    }
 
    //попытка фронтальной вспышки, вот тут и есть проблема, frontCameraId ошибка "Cannot resolve symbol frontCameraId"
    CameraManager cameraManager = (CameraManager)getSystemService(CAMERA_SERVICE);
    {
        try {
            if (hasFlashForFrontCamera(cameraManager)) {
                cameraManager.setTorchMode(frontCameraId, true);
            }
 
        } catch (CameraAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 
    //проверка наличия фронатльной вспышки
    boolean hasFlashForFrontCamera(CameraManager cManager) throws CameraAccessException {
        for(final String cameraId : cManager.getCameraIdList()){
            CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId);
            int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
            if(cOrientation == CameraCharacteristics.LENS_FACING_FRONT) {
                return characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
            }
        }
        return false;
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2020, 18:40
Помогаю со студенческими работами здесь

Как выполнить событие в FormClosing и только потом дать закрыться приложению?
Здравствуйте!Как выполнить какое либо действие в событии FormClosing до его стандартного закрытия? Т.е. допустим при клике на крестик мне...

Как в MS SQL 2014 убрать возможность у серверной роли sysadmin возможность использовать shutdown ?
Как в MS SQL 2014 express убрать возможность у серверной роли sysadmin возможность использовать shutdown? Ситуация такая: Я создал...

Как ускорить вычисления/дать больше ресурсов скомпилированному приложению в Borland C++ Builder
Уважаемые форумчане, В своей научной работе еще давно начал использовать Borland C++ Builder 6. Дело в том, что понадобилось выполнить...

Есть ли возможность быстро и легко настроить B4A? Или сразу перейти на Android Studio?
Не люблю софт который не может сразу работать после инсталляции. Мне лень указывать javac.exe, android.jar, ADV. И что там еще нужно в B4A?...

Как дать возможность узнать о своей программе?
Представим себе что написали на наш взгляд довольно таки полезную программу а как сделать так чтобы о ней узнали?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru