лучший способ передачи setparameters () на поверхности камеры - PullRequest
0 голосов
/ 25 февраля 2011

Я играю с функциями камеры Android. Я пытаюсь динамически изменить параметры камеры, используя меню onCheck, а затем вызываю surfaceChanged, чтобы применить изменения.

public boolean onOptionsItemSelected(MenuItem item) {

            Camera.Parameters parameters = camera.getParameters();
            switch (item.getItemId()) {
            case R.id.EFFECT_AQUA:
                Toast.makeText(this, "AQUA", Toast.LENGTH_SHORT).show();
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                parameters.setColorEffect(Camera.Parameters.EFFECT_AQUA);
                surfaceChanged(null, 0, 0,0);
                return true;

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Camera.Parameters parameters = camera.getParameters();
        camera.setParameters(parameters);
        camera.startPreview();
        }

когда я запускаю приложение, проверка menuItem вызывает surfaceChanged, но выбранные параметры не используются / не устанавливаются командой setparamater.

Я думал о реализации глобального, чтобы захватить изменения, но мне это не нравится. Есть ли другой способ передачи параметров, когда мы делаем surfaceChanged вызов?

1 Ответ

1 голос
/ 09 марта 2011

Из приведенного фрагмента кода я бы сказал, что вы забыли опубликовать измененные параметры на камере.Если вы не вызываете setParameters (Параметры параметров) для экземпляра вашей Камеры, камера будет использовать прежние настройки параметров.

Camera.Parameters parameters = camera.getParameters(); parameters.setColorEffect(Camera.Parameters.EFFECT_AQUA); camera.setParameters(parameters); // add this line to your code

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...