【问题标题】:Error with torch app Android 4.0.4 Nexus S i9020火炬应用 Android 4.0.4 Nexus S i9020 出错
【发布时间】:2012-04-07 12:22:31
【问题描述】:

我在使用 Android 4.0.4 Nexus S i9020 的手电筒应用时遇到问题。 我已经尝试过在 stackoverflow 上发布的数十条建议,但对我没有任何帮助。 该应用适用于 Android 版本 2.3.6,但自 4.0.4 起,手电筒已停止工作。

这是我的 impl 和 logcat 输出。

@Override
protected void onResume()
{
    super.onResume();
    _Camera = Camera.open();
}

@Override
protected void onPause()
{
    if (_Camera != null)
    {
         _Camera.release();
    }
}

//called within runnable and post to a handler
private void processOffClick()
{

    if (_Camera != null)
    {
        Parameters params = _Camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_OFF);
        _Camera.setParameters(params);
        _Camera.stopPreview();
    }
}

//called within runnable and post to a handler
private void processOnClick()
{
    if (_Camera != null)
    {
        Parameters params = _Camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        _Camera.setParameters(params);
        _Camera.startPreview();
    }
}

我也尝试在没有可运行文件的情况下执行 onclick offclick 方法。

在 Logcat 中,执行 onclick 后会出现以下错误。

 04-07 14:10:02.719: E/CameraHardwareSec(82): preview window is NULL!
 04-07 14:10:02.719: I/CameraHardwareSec(82): virtual android::status_t android::CameraHardwareSec::startPreview() : deferring

市场上有一些适用于我的手机的相机应用程序。所以一定有办法让手电筒亮起来。

我也尝试添加 SurfaceView/Holder,但没有成功。也许我做错了什么。

干杯卡里姆

【问题讨论】:

    标签: android nexus-s flashlight


    【解决方案1】:

    一切正常,在 4.0+ 版本中,您需要一个表面视图。在你的 layout.xml 中声明一个

    然后做这样的事情:

    实现 SurfaceHolder.Callback

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //init your layout
            this._surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
            this._surfaceHolder = this._surfaceView.getHolder();
            this._surfaceHolder.addCallback(this);
            this._surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    
    }
    
    @Override
    protected void onResume()
    {
        super.onResume();
        _Camera = Camera.open();
        this._camera.startPreview();
        this._camera.setPreviewDisplay(this._surfaceHolder);
    }
    
    
    @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            //this._surfaceHolder = holder;
        }
    
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            //this._surfaceHolder = null;
        }
    

    【讨论】:

    • 非常感谢它有效。重要的是,surfaceview 的高度和宽度至少为 1dip。
    • 我在做同样的事情,但仍然收到这个错误 ics+ os
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2023-04-01
    • 2022-08-04
    • 2016-10-10
    • 2018-09-02
    • 2017-02-23
    相关资源
    最近更新 更多