Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
iganshan
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 17
#1

AlertDialog Camera SurfaceView заниженная яркость в превью - Программирование Android

26.09.2015, 22:14. Просмотров 215. Ответов 0
Метки нет (Все метки)

AlertDialog Camera SurfaceView заниженная яркость в превью

Перенес работу с камерой в AlertDialog и получил низкую яркость изображения в превью, такое ощущение, что оно затемняется также, как и куски активити, находящиеся под диалогом.

Скриншот

Сами снимки имеют нормальную яркость, проблема только в превью.

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
public class CameraDialogBuilder
        extends AlertDialog.Builder
        implements SurfaceHolder.Callback, View.OnClickListener, Camera.PictureCallback, Camera.PreviewCallback, Camera.AutoFocusCallback{
 
    public CameraDialogBuilder(final Context context) {
        super(context);
        LinearLayout linearLayout = createMainLayout(context);
        preview = new SurfaceView(context);
        linearLayout.addView(preview);
        surfaceHolder = preview.getHolder();
        surfaceHolder.addCallback(this);
        ClearCamera();
        camera = Camera.open();
        setView(linearLayout);
        setPositiveButton(android.R.string.cancel.OK, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
 
            }
        });
        setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        d = create();
        d.show();
    }
 
    public void surfaceCreated(SurfaceHolder holder)    {
 
        if(camera==null){
            d.dismiss();
            return;
        }
        try
        {
            camera.setPreviewDisplay(holder);
            camera.setPreviewCallback(this);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
 
        Camera.Size previewSize = camera.getParameters().getPreviewSize();
        float aspect = (float) previewSize.width / previewSize.height;
        int previewSurfaceHeight = preview.getHeight();
        ViewGroup.LayoutParams lp = preview.getLayoutParams();
 
        camera.setDisplayOrientation(90);
        lp.height = previewSurfaceHeight;
        lp.width = (int) (previewSurfaceHeight / aspect);
        preview.setLayoutParams(lp);
        camera.startPreview();
    }
    private LinearLayout createMainLayout(Context context) {
        LinearLayout linearLayout = new LinearLayout(context);
        linearLayout.setGravity(Gravity.CENTER_HORIZONTAL);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setMinimumHeight(getLinearLayoutMinHeight(context));
        linearLayout.setPadding(10,10,10,10);
        return linearLayout;
   }
}
открытие диалгоа в mainActivity

Java
1
CameraDialogBuilder cameraDialogBuilder=new CameraDialogBuilder(this).setCameraDialogListener(this);

Если SurfaceView разместить в активити, а не в диалоге, то этотже код не имеет проблем с яркостью превью. Помогите решить проблему.


Пробовал менять уровень затемнения, делать размытым задний фон, все это вообще не вносит никаких изменений.
// WindowManager.LayoutParams lp = d.getWindow().getAttributes();
// lp.dimAmount = 1.0f; // уровень затемнения пробовал 1.0 до 0
// lp.screenBrightness=1.0f;
// d.getWindow().setAttributes(lp);
// d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

Добавлено через 6 часов 26 минут
Решение найдено - на затемнение превью камеры влияет затемнение бекграунда диалога.
Ошибка была в том, что я затемнение прописывал до dialog.show(), а нужно после.
Вот такая полумера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2015, 22:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос AlertDialog Camera SurfaceView заниженная яркость в превью (Программирование Android):

Camera без SurfaceView - Программирование Android
Здравствуйте. Можно ли сделать снимок с помощью класса Camera без предварительного просмотра? Например Camera.open() и потом сразу...

AlertDialog - Программирование Android
ЗДравствуйте! Имеется простая игра. Когда ХП игрока == 0, я останавливаю игру и хочу показать AlerDialog. Рисуется все на канвас. Вот...

AlertDialog и RadioGroup - Программирование Android
Всем привет. Создаю программу, в которой в открывшемся диалоговом окне происходит настройка сортировки списка. И там есть radiogroup,...

Не показывается AlertDialog - Программирование Android
Хочу при запуске проверить есть ли на устройстве Сервисы Google Play public class MainActivity extends FragmentActivity { ...

Не работает AlertDialog - Программирование Android
Почему в данном случае не работает AlertDialog? public class MainActivity : Activity { int count = 1; ...

Закрытие AlertDialog - Программирование Android
Здравствуйте. Такой вопрос. Допустим я вызвал диалог и после этого перевел приложение в паузу, то после очередного обращения к данному...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2015, 22:14
Привет! Вот еще темы с ответами:

AlertDialog Error - Программирование Android
Всем доброго времени суток! Изучал изготовление своего AlertDialog по учебнику и на одном из сайтов, но увы столкнулся с проблемой, после...

Custom AlertDialog - Программирование Android
Помогите люди добрые, что то никак не нагуглю... А желательно кодом;)

Spinner в AlertDialog - Программирование Android
Как Spinner в AlertDialog сделать? AlertDialog вызываю через нажатие fab. AlertDialog.Builder builder = new...

Потоки и AlertDialog - Программирование Android
Помогите, пожалуйста, бьюсь уже несколько дней. Создаю файловый менеджер. Это моя первая программа под Android, поэтому не всегда догоняю. ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru