我尝试制作使用相机的应用程序。我分到了一些班级。
我在清单中声明为MainActivity和SecondActivity的活动的类。首先,当应用程序运行时,它将执行将显示CameraSurface的MainActivity(ViewElement中有CameraSurface类的实例,它添加到ViewElement类中的ContentView)。 在MainActivity中,有一个按钮将移动到MainActivity到SecondActivity。我使用这段代码:
new Handler().postDelayed(new Runnable()
{
public void run()
{
MainActivity.this.startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
}
, 5000L);
SecondActivity与MainActivity相同(只是有不同的按钮,但仍然使用相机),问题是当应用程序执行SecondActivity相机变得冻结时。我仍然不知道为什么会这样。在CameraSurface类中有一部分用于释放相机,如果相机实例不等于null。有谁知道我的申请会发生什么?
有关其他信息,请在logcat上获取此信息:
01-14 16:38:23.899:D / memalloc(12581):/ dev / pmem:取消映射缓冲区:0x506f0000大小:1843200偏移量:1228800
01-14 16:38:23.899:D / memalloc(12581):/ dev / pmem:取消映射缓冲区基数:0x509b2000大小:614400偏移量:0
01-14 16:38:23.899:D / memalloc(12581):/ dev / pmem:取消映射缓冲区:0x50ca4000大小:1228800偏移量:614400
01-14 16:38:24.389:D / memalloc(12581):/ dev / pmem:取消映射缓冲区:0x50dd0000大小:4829184偏移量:4804608
答案 0 :(得分:0)
我可以想到两个原因: 1)您正在调用两个活动的摄像头表面,尝试在启动第二个活动之前释放摄像头。 2)由于您使用的是SurfaceView for Camera,因此操作尝试在OpenGL线程上运行。 试试这个
runOnUiThread(new Runnable(){
public void run() {
//make call to your second activity
}
}