2012-04-07 3 views
0

У меня проблема с флеш-приложением Android 4.0.4 Nexus S i9020. Я пробовал десятки предложений, размещенных здесь в stackoverflow, но ничего не работало для меня. Приложение работает с Android версии 2.3.6, но с 4.0.4 факел перестает работать.Ошибка с программой-факелом Android 4.0.4 Nexus S i9020

Вот мой вывод и вывод 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 без runnables.

В журнале Logcat возникает ошибка folling после выполнения 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, но это не сработало. Может, я сделал что-то не так.

Приветствия Karim

ответ

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; 
    } 
+0

Большое спасибо это работает. Важно, чтобы поверхность имела минимум 1dip высоту и ширину. –

+0

Я делаю то же самое, но все еще получаю эту ошибку ics + os –