手机应用程序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();
}
}
我还试图在没有runnables的情况下执行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,但它没有用。也许我做错了什么。
干杯卡里姆
答案 0 :(得分:0)
你正在做的一切都很好,在版本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;
}