У меня странная ошибка.У меня есть приложение с 5 вкладками.В одной из этих вкладок я использую камеру.У меня есть кнопка Пуск и Стоп, чтобы запустить и остановить предварительный просмотр камеры.Если я запускаю камеру, то я останавливаю ее, затем перехожу на другую вкладку и, наконец, возвращаюсь на вкладку камеры, камера работает нормально, если я нажимаю кнопку запуска.
Но если я вызову галерею или браузер файлов из другой вкладки, когда я вернусь к вкладке камеры, камера больше не будет работать, без предварительного просмотра, идея?
Это исходный код вкладки камеры:
public class CamActivity extends Activity implements SurfaceHolder.Callback
{
Button startButton;
boolean stop;
Camera.Size cameraSize;
Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean previewing = false;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.cam);
startButton = (Button) findViewById(R.id.startButton);
surfaceView = (SurfaceView)findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera = Camera.open(0);
camera.setDisplayOrientation(90);
camera.getParameters().setPreviewFpsRange(1000, 2000);
startButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!previewing){
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewing = true;
startButton.setText("Stop camera");
} catch (IOException e) {}
}
else
{
startButton.setText("Start camera");
previewing = false;
camera.stopPreview();
}
}
});
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
if(previewing)
sendFrame(_data);
}
});
}
public void sendFrame(byte[] _data)
{
// ...
}
protected void onPause() {
super.onPause();
if(previewing)
{
camera.stopPreview();
previewing = false;
startButton.setText("Start camera");
}
// camera.release();
}
/*
protected void onResume() {
super.onResume();
camera = Camera.open(0);
camera.setDisplayOrientation(90); // Pour le Galaxy S2
camera.getParameters().setPreviewFpsRange(1000, 2000); //Android 2.3.3
//camera.getParameters().setPreviewFrameRate(10); Android 2.2
}
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
Другое дело, что если я поставлю onResume и отпущу камеру, когда вкладка находится в состоянии OnPause, произойдет сбой приложения.
Пожалуйста, если у вас есть идеи?