java.lang.RuntimeException:release()后调用的方法

2024-05-12

  1. If i am 不使用 相机.release(); in 表面被破坏(....) then 无法从另一个 Activity 再次启动 CameraActivity[简而言之,得到不幸的是应用程序已停止] 错误,即使不释放相机,但如果我确实点击了“主页”按钮 [来自相机活动], 进而再次启动我的应用程序,没有收到任何错误(总之工作正常,打开 CameraActivity 没有任何问题)

  2. 如果我是using *相机.release();* in 表面被破坏(....) then 能够从另一个 Activity 再次启动 CameraActivity and 同时释放相机, but 当我点击“主页”按钮,然后再次启动我的应用程序时,不幸的是应用程序已停止....:

But i 希望两者协同工作(第一的,从 CameraActivity 中点击“主页”,然后再次从 CameraActivity 中启动应用程序- 没有任何错误)和(第二,从另一个活动启动相机- 没有任何错误)

就像我写的那样,这两件事都对我有用,但不能同时发挥作用......

第 33 行是:

        Camera.Parameters parameters = mCamera.getParameters();

完整日志:

12-30 12:18:58.070: W/dalvikvm(14822): threadid=1: thread exiting with uncaught exception (group=0x41ef72a0)
12-30 12:18:58.080: E/AndroidRuntime(14822): FATAL EXCEPTION: main
12-30 12:18:58.080: E/AndroidRuntime(14822): java.lang.RuntimeException: Method called after release()
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.hardware.Camera.native_getParameters(Native Method)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.hardware.Camera.getParameters(Camera.java:1487)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at app.micheal.camr.PreviewSurface.surfaceCreated(PreviewSurface.java:33)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.SurfaceView.updateWindow(SurfaceView.java:609)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:235)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.View.dispatchWindowVisibilityChanged(View.java:7686)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1047)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1047)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1047)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1047)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1047)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1339)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1114)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4520)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.Choreographer.doFrame(Choreographer.java:525)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.os.Handler.handleCallback(Handler.java:615)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.os.Looper.loop(Looper.java:137)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at android.app.ActivityThread.main(ActivityThread.java:4921)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at java.lang.reflect.Method.invokeNative(Native Method)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at java.lang.reflect.Method.invoke(Method.java:511)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
12-30 12:18:58.080: E/AndroidRuntime(14822):    at dalvik.system.NativeStart.main(Native Method)
12-30 12:19:08.095: I/Process(14822): Sending signal. PID: 14822 SIG: 9

PreviewSurface.java:

public class PreviewSurface extends SurfaceView implements
SurfaceHolder.Callback {

    public static final String LOG_TAG = "CameraPreview";
    private SurfaceHolder mSurfaceHolder;

    private Camera mCamera;
    Camera.Parameters parameters = null ;

    // Constructor that obtains context and camera
    @SuppressWarnings("deprecation")
    public PreviewSurface(Context context, Camera camera) {
        super(context);
        this.mCamera = camera;          
        this.mSurfaceHolder = this.getHolder();
        this.mSurfaceHolder.addCallback(this);
        this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        this.mSurfaceHolder.setFixedSize(100, 100);
    }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        try {       
                parameters = mCamera.getParameters();

                if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
                {
                     parameters.set("orientation", "portrait");
                     mCamera.setDisplayOrientation(90);
                     parameters.setRotation(90);
                     mCamera.setPreviewDisplay(surfaceHolder);
                     mCamera.startPreview();
                }
                else 
                {
                     // This is an undocumented although widely known feature
                     parameters.set("orientation", "landscape");
                     // For Android 2.2 and above
                     mCamera.setDisplayOrientation(0);
                     // Uncomment for Android 2.0 and above
                     parameters.setRotation(0);
                }

                mCamera.setPreviewDisplay(surfaceHolder);
                mCamera.startPreview();

            } catch (IOException e) {
                // left blank for now
            }
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {         
        mCamera.stopPreview();
        mCamera.release();          
    }


    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
            int width, int height) {

        try {       
            parameters = mCamera.getParameters();
            if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
                 parameters.set("orientation", "portrait");
                 mCamera.setDisplayOrientation(90);
                 parameters.setRotation(90);

            }
                 else {
                      // This is an undocumented although widely known feature
                      parameters.set("orientation", "landscape");
                      // For Android 2.2 and above
                      mCamera.setDisplayOrientation(0);
                      // Uncomment for Android 2.0 and above
                      parameters.setRotation(0);
            }
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();


        } catch (IOException e) {
            // left blank for now
        }           
    }

}

试试这个,用我的代码替换你的代码,我想这会对你有帮助,我没有尝试过,但看起来它会解决你的错误

      @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {     

        this.getHolder().removeCallback(this);
        mCamera.stopPreview();
        mCamera.release();
    }

尽快让我知道...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.RuntimeException:release()后调用的方法 的相关文章

  • RecyclerView每隔几个项目都是相同的 - 可扩展项目

    我的 recyclerView 有问题 我正在使用此布局来扩展 recyclerView 中的 cardView https github com AAkira ExpandableLayout https github com AAkir
  • 是否仍然建议使用 AsyncTask 在后台加载 listView 项目?

    背景 我听说有一些在后台加载数据的新解决方案比 AsyncTask 更值得推荐 例如loaders http developer android com reference android content Loader html 问题 As
  • 在运行时绘制HSV圆

    我想在我的应用程序中有一个颜色选择器 如下所示 我尝试过逐像素填充位图 尝试使用画布drawArc 方法 这两种方式都不利于性能 有任何想法吗 它可能不完全是它应该的样子 与颜色 饱和度等有关 但是这是一些东西 http i1272 pho
  • 无法禁用 Firestore 中的离线数据

    从我的数据中删除数据后Firestore Database 这需要我的Android app一段时间后才意识到数据已被删除 我认为这是由于自动数据缓存而发生的 我的应用程序与离线使用无关 我想禁用此功能 我已将其添加到我的自定义中Appli
  • Android异步服务调用策略

    这是场景 客户端对服务进行远程调用 返回 void 并提供 回调对象 服务在后台线程上执行一些长时间运行的逻辑 然后使用回调对象来触发以太成功或失败 因为这些操作视觉元素 执行 Activity runOnUiThread 块 该场景运行良
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • 意图过滤器到底是什么?

    我读过很多关于意图过滤器的文章 但我真的无法理解它们到底是做什么的 那么 如果有人可以用一个清晰 的例子向我解释意图过滤器的作用到底是什么 thanks 我认为这是有据可查的here http developer android com g
  • Android/java:从 ProGuard 过渡/迁移到 R8?

    我想知道如何从ProGuard to R8 我是否应该从 Gradle 文件中删除与 Proguard 相关的行并添加android enableR8 true线代替 Thanks Proguard 由 GuardSquare 开发和维护
  • Android:NotificationCompat.MediaStyle 操作按钮不执行任何操作

    我有一个简单的 Android 应用程序 其中包含一个Activity and a Service源自于MediaBrowserServiceCompat 我已成功将其设置为通过使用播放我的主要活动中的音频MediaBrowserCompa
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 在应用程序之间共享自定义帐户验证器

    我有一个为使用自定义 AccountAuthenticator 的客户端构建的应用程序 它工作得非常好 并且满足了客户的需求 但是 这只是将使用相同身份验证管理器的应用程序集合中的第一个应用程序 这就是我不确定如何继续的地方 我无法知道任何
  • Eclipse Android 模拟器 - 键盘不工作

    我刚刚更新到最新的 SDK 版本 16 使用最新版本的 API 16 创建了新版本的 AVD 并且我的硬件键盘在模拟器上不再工作 甚至我的其他 avd 使用旧版本的 sdk 任何想法如何解决这一问题 您的 AVD 的 键盘支持 硬件属性是否
  • 测试应用内结算:“发布者无法购买此商品”

    我的应用程序似乎已准备好在我的设备上进行应用内购买程序的 现实生活 测试 但是 我在 Play 商店中收到 发布商无法购买此商品 的错误消息 现在 我应该如何测试这个 我不想通过仅用于测试的虚拟帐户重新安装手机来丢失手机的配置 在开发者控制
  • 安卓独立包

    我有一个很大的 UI 大约 20 25 个屏幕 我应该如何组织我的代码 我应该按功能分成不同的包吗 我是否应该为所有 UI 类创建一个包 然后创建子包进行组织 或者我不应该创建单独的包并组织到文件夹中 任何帮助将不胜感激 当您创建文件夹时
  • 使用磁场计算旋转矩阵

    在获取旋转矩阵值时它包含public static boolean getRotationMatrix float R float I float gravity float geomagnetic 这里我如何计算float gravity
  • 当应用程序从最近的应用程序中滑动时,前台服务会被终止,通知也会被删除

    我有一个foreground service有通知 当应用程序从最近的应用程序托盘中滑出时 服务将被终止 通知也会被删除 这是我的服务的代码VoiceService class Override public IBinder onBind
  • 如何在jetpack compose中删除文本基线下方的空间?

    目前我得到这个 但我想要这样的东西 而且 50 和 min 中的文本也应该与顶部对齐 My code Row verticalAlignment Alignment Bottom Text text 18 color MaterialThe
  • 如何在 Android 的应用程序中使用 LDAP 身份验证?

    我想在我们的应用程序中添加 LDAP 身份验证 我在 Github 上搜索并找到了两个应用程序 但它们无法连接到服务器 通过ldap连接服务器的必要条件是什么 查看 UnboundID SDK 他们有一个适用于 Android 的套件 该应
  • 活动构建变体没有测试工件

    我基于 调试 构建变体创建了一个名为 bitrise 的新构建类型 使用 debug 构建变体时 经过检测的 androidTests 构建并运行良好 但是当我切换到新的 bitrise 构建变体时 出现以下错误 Process finis
  • 带有包含布局的导航抽屉布局

    我认为我的问题实际上很简单 但我不知道如何解决 有一个工作导航抽屉 代码如下

随机推荐