我正在尝试开发用于培训目的的AR应用程序。 有一个主要活动,其中包含一个带有两个视图的FrameLayout:摄像机预览(SurfaceView实现SurfaceHolder.Callback)和另一个自定义曲面,用于在相机预览上绘制文本。 这是FrameLayout里MainActivity的onCreate方法中创建:从其他活动导航时不显示相机预览和AR项目
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
try{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//Panel for AR items
**panelSurface = new PanelSurface(this);**
WindowManager w = getWindowManager();
Display d = w.getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();
panelSurface.setScreenSize(width, height);
loadARItems();
//General frame
FrameLayout rl = new FrameLayout(this);
//Camera Surface
**cv = new CustomCameraView(this);**
rl.addView(cv, width, height);
rl.addView(panelSurface, width, height);
setContentView(rl);
//Initialize sensors
sensorMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ORIENTATION);
locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
}
catch(Exception e){
Log.e(TAG, "Error creating main activity: " + e.getMessage());
}
}
如果此活动是被称为第一个活动:相机预览与我AR项目在它正确显示。 尽管如此,当我来自另一个活动时出现问题: 有一个包含多个按钮的菜单活动。其中一个按钮将呼叫主要活动:
private OnClickListener mapListener = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MenuActivity.this, MainActivity.class);
startActivity(intent);
}
};
从其他活动导航时,相机未显示!屏幕保持黑屏。 而AR项目被绘制一次,但没有刷新,他们再次绘制所有的屏幕画面清洁之前,以显示运动!
为什么具有相同代码的同一活动在从其他活动调用时无法正常工作???
调试我已经检查这两种情况下: 当MainActivity是第一活动,日志: 04-08 13:43:03.498:INFO/ActivityManager(85):显示活动com.lagunitacrew.activities/.MainActivity: 929毫秒(总计929毫秒) 在打开相机前显示。 但是,在第二种情况下,当从菜单活动调用MainActivity时,此跟踪是在打开相机后写入的。
非常感谢!