我正在尝试制作使用相机的应用程序。我分到某个类(class)。
- CameraSurface(扩展 SurfaceView)
- ViewElement(扩展 View )
- MainActivity(扩展 ViewElement)
- SecondActivity(扩展 ViewElement)
我在 list 中声明为 Activity 的类只是 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: Unmapping buffer base:0x506f0000 size:1843200 offset:1228800
01-14 16:38:23.899: D/memalloc(12581): /dev/pmem: Unmapping buffer base:0x509b2000 size:614400 offset:0
01-14 16:38:23.899: D/memalloc(12581): /dev/pmem: Unmapping buffer base:0x50ca4000 size:1228800 offset:614400
01-14 16:38:24.389: D/memalloc(12581): /dev/pmem: Unmapping buffer base:0x50dd0000 size:4829184 offset:4804608
最佳答案
我可以想到两个原因: 1)您在两个 Activity 上都调用相机表面,请尝试在启动第二个 Activity 之前释放相机。 2)由于您使用SurfaceView作为Camera,该操作尝试在OpenGL线程上运行。 试试这个
runOnUiThread(new Runnable(){
public void run() {
//make call to your second activity
}
}
关于java - 相机卡住 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108607/