【问题标题】:Detecting camera phone parameters检测拍照手机参数
【发布时间】:2014-03-29 12:28:31
【问题描述】:

我已经创建了一种可能的方法,因此我可以通过一个简单的列表来检测适合每部手机的参数。虽然现在当我运行它时,它会崩溃,

public void turnOn() {

在这条线上:List<String> flashMods = params.getSupportedFlashModes();

                 if (flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO)) {

                    params = mCamera.getParameters();
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
                    mCamera.setParameters(params);
                    mCamera.startPreview();
                    on = true;
                  Toast.makeText(getApplicationContext(), 
                            "2",
                             Toast.LENGTH_SHORT).show();
                    }
                     if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_ON)) {

                        params = mCamera.getParameters();
                        params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
                        mCamera.setParameters(params);
                        mCamera.startPreview();
                        on = true;
                  Toast.makeText(getApplicationContext(), 
                            "3",
                             Toast.LENGTH_SHORT).show();
                        }
                    if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) {

                        params = mCamera.getParameters();
                        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                        mCamera.setParameters(params);
                        mCamera.startPreview();
                        on = true;

                  Toast.makeText(getApplicationContext(), 
                            "4",
                             Toast.LENGTH_SHORT).show();
                        }
                     if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_RED_EYE)) {

                         params = mCamera.getParameters();
                         params.setFlashMode(Camera.Parameters.FLASH_MODE_RED_EYE);
                         mCamera.setParameters(params);
                         mCamera.startPreview();
                         on = true;
                  Toast.makeText(getApplicationContext(), 
                            "5",
                             Toast.LENGTH_SHORT).show();
                        }
            }

    }

提前致谢!

【问题讨论】:

    标签: android list flash parameters camera


    【解决方案1】:

    您是否启用了“CAMERA”权限?

    您是否分配了 params 对象 - 它可能为空。

    我是这样做的(在 Mono / C# 中,恐怕不是 Java):

    private void SetUpCamera()
        {
            if (m_camera == null)
                m_camera = Android.Hardware.Camera.Open();
    
            var holder = m_surface.Holder;
            holder.AddCallback(this);
            holder.SetType(Android.Views.SurfaceType.PushBuffers);
            SetCameraDisplayOrientation();
            GetSurfaceSize(m_camera.GetParameters());
            GetFlashModes(m_camera.GetParameters());
    
        } 
    

    然后:

    private void GetFlashModes(Android.Hardware.Camera.Parameters parameters)
        {
            IList<String> flashModes = parameters.SupportedFlashModes;
    
            m_flashModes = new List<string>();
    
            if (flashModes == null)//not supported
                return;
    
            foreach (string mode in flashModes)
                m_flashModes.Add(mode);
    
            if (m_currentMode != null)//mode has been saved, need to set it to this mode
                SetFlashMode(m_currentMode);
            else
                m_currentMode = GetFlashMode();
        }
    

    【讨论】:

    • 您可能还需要启用手电筒权限。
    • 我的清单和权限都还可以,我相信,因为如果我在没有数组的情况下单独运行这些参数中的每一个,则工作正常,但我想涵盖所有可能性
    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2015-05-10
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多