我正在尝试在android中预览相机,但是当我运行它时,应用程序只显示一个黑色窗口,标题和表面视图大小为(0px,0px)
这是我的活动:
package rolilink.test.android;
import java.io.IOException;
import android.hardware.Camera;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
public class CameraView extends Activity{
private SurfaceView surface;
private Camera camera;
private Button stopbutton;
protected void onCreate(Bundle SavedStateInstance){
super.onCreate(SavedStateInstance);
setContentView(R.layout.cameraview);
Log.i("LogCamera", "Setteo el view");
this.getUi();
this.setListeners();
try {
this.startCameraPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
private void getUi(){
this.surface=(SurfaceView) findViewById(R.id.CameraSurface);
this.stopbutton=(Button) findViewById(R.id.btnStopPreview);
}
private void setListeners(){
this.stopbutton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
finishWithCameraPreview();
}
});
}
private void startCameraPreview() throws IOException{
this.camera= Camera.open();
Camera.Parameters parameters = camera.getParameters();
this.camera.setParameters(parameters);
SurfaceHolder holder = this.surface.getHolder();
this.camera.setPreviewDisplay(holder);
camera.startPreview();
Log.i("LogCamera", "Size of SurfaceView:"+this.surface.getHeight()+"x"+this.surface.getWidth());
}
private void finishWithCameraPreview(){
this.camera.stopPreview();
this.camera.release();
}
}
和我的布局cameraview:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center">
<SurfaceView
android:id="@+id/CameraSurface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btnStopPreview"
android:text="Stop Preview"
android:layout_marginTop="2dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>