我是 android 编程新手.. 我这里有个问题。
我想做一个应用程序,在相机的顶部真实视图上绘制叠加层。我使用表面视图来保存来自相机的图像。
这是我的主要活动的 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<com.openit.razer.overlayPreview
android:id="@+id/overlayprev"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<com.openit.razer.overlayImage
android:id="@+id/overlayimg"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
这是我的主要活动课程:p
ublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ar);
overPrev = (overlayPreview)findViewById(R.id.overlayprev);
overImg = (overlayImage)findViewById(R.id.overlayimg);
overImg.setZOrderOnTop(true);
overImg.getHolder().setFormat(PixelFormat.TRANSPARENT);
preview=(SurfaceView)findViewById(R.id.preview);
previewHolder=preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(previewHolder);
}
catch (Throwable t) {
Log.e("PreviewDemo-surfaceCallback",
"Exception in setPreviewDisplay()", t);
Toast
.makeText(ARrazerNav.this, t.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
public void surfaceChanged(SurfaceHolder holder,
int format, int width,
int height) {
Camera.Parameters parameters=camera.getParameters();
//Camera.Size size=getBestPreviewSize(width, height,
// parameters);
List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
parameters.setPreviewSize(selected.width, selected.height);
camera.setParameters(parameters);
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
camera.setDisplayOrientation(90);
}
else{
camera.setDisplayOrientation(0);
}
//camera.setDisplayOrientation(90);
//camera.setDisplayOrientation(0);
camera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// no-op
}
};
但我出错了
FATAL EXCEPTION:main
...
...
...
caused by: android.view.InflateException: Binary XML file line #10: Error inflating class blablabla
你能帮我解决我的问题吗?这是我陷入这个问题的 3 天。
以及在其上使用 SurfaceView 和叠加图像实现相机的最佳方法是什么?
提前致谢