Форум программистов, компьютерный форум CyberForum.ru

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

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

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

26.09.2015, 22:14. Просмотров 188. Ответов 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(), а нужно после.
Вот такая полумера.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2015, 22:14     AlertDialog Camera SurfaceView заниженная яркость в превью
Посмотрите здесь:

Android AlertDialog Error
Android Ошибка в SurfaceView
Android Не показывается AlertDialog
Потоки и AlertDialog Android
Custom AlertDialog Android
Android Camera без SurfaceView
AlertDialog Android
Android Работа с SurfaceView
Android TextView а AlertDialog
Не работает AlertDialog Android
Android Spinner в AlertDialog
Android AlertDialog и RadioGroup

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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