Java 相机冻结(安卓)
我正在尝试制作使用摄像头的应用程序。我分班上课Java 相机冻结(安卓),java,android,android-camera,Java,Android,Android Camera,我正在尝试制作使用摄像头的应用程序。我分班上课 摄像机表面(延伸表面视图) ViewElement(扩展视图) MainActivity(扩展ViewElement) 第二个活动(扩展ViewElement) 我在清单中声明为活动的类,仅限于MainActivity和SecondActivity。首先,当应用程序运行时,它将执行显示CameraSurface的MainActivity(ViewElement中有CameraSurface类的实例,该实例添加到ViewElement类中的Conte
new Handler().postDelayed(new Runnable()
{
public void run()
{
MainActivity.this.startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
}
, 5000L);
SecondActivity与MainActivity相同(只有Different按钮,但仍使用camera),问题是当应用程序执行SecondActivity时,camera变为冻结。我还是不知道为什么会这样。在CameraSurface类中,如果摄影机实例不等于null,则该类具有用于释放摄影机的零件。有人知道我的申请结果吗
有关更多信息,我在logcat上获得:
01-14 16:38:23.899:D/memalloc(12581):/dev/pmem:Unmapping buffer base:0x506f0000大小:1843200偏移量: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) 如果您正在两个活动上调用摄影机曲面,请在启动第二个活动之前尝试释放摄影机。 2) 由于您使用的是SurfaceView for Camera,因此该操作尝试在OpenGL线程上运行。 试试这个
runOnUiThread(new Runnable(){
public void run() {
//make call to your second activity
}
}
我还是不知道从你的回答中我得到了什么。所以,在启动第二个活动之前,我必须首先释放摄像机。这意味着在此代码之前
new Handler().postDelayed(new Runnable(){public void run(){MainActivity.this.startActivity(new Intent(MainActivity.this,SecondActivity.class));}},5000L)
并使用您提供的代码更改我的代码以调用secondActivity,对吗?我不确定相机冻结的原因。这两个是我给出的可能的解决方案(可能对你有用)。是的,使用rununuimThread with runnable启动run()方法中的第二个活动我使用了你的两个建议,并在2台设备上试用,第一台设备我遇到了同样的问题,相机冻结。第二个设备我得到了黑色背景。好的,只是为了调试,您可以直接启动第二个活动(将其作为主活动)以查看您的第二个活动是否成功创建摄影机曲面。我将第二个活动设置为在运行应用程序时首先执行,以确保成功创建摄影机曲面。