java - 相机卡住 (Android)

标签 java android android-camera

我正在尝试制作使用相机的应用程序。我分到某个类(class)。

  1. CameraSurface(扩展 SurfaceView)
  2. ViewElement(扩展 View )
  3. MainActivity(扩展 ViewElement)
  4. 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/

相关文章:

java - 我如何在 Wicket 1.5 中模仿 HybridUrlCodingStrategy?

java - 如何使用 jackson mapper 将空字符串映射到 Map

android - 如何在三星设备上设置设备所有者?

java - 使用微调器到转换器

java - Android 保存的图像质量低

android - 为什么进程死亡后Fragment中没有触发onRequestPermissionsResult?

java - 如何在ActiveMQ中抑制排序?

java - 获取 无法创建新 session

Android:缩放可绘制或背景图像?

Android:相机预览旋转