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()后调用的方法 的相关文章

  • 在第一个框中输入字符后,将焦点转到下一个框

    我必须实现一个应用程序 其中我设置了较小的值edittext用于输入 PIN 码和手机号码 每个编辑文本一次包含 1 个字符 现在 当我运行这个应用程序时 我发现对于每个框 我需要将焦点放在每个框上edittext 因此 在这种情况下 是否
  • Android 在画布上遮罩位图生成黑色空间

    我有一个蒙版位图 一半是红色 一半是透明的 如下所示https www dropbox com s 931ixef6myzusi0 s 2 png https www dropbox com s 931ixef6myzusi0 s 2 pn
  • Android 卷页动画

    我对 Android 动画有点陌生 目前我正在开发一个故事活动 需要像 iPhone 中那样使用卷页动画 我发现 iPhone 中有一种方法可以做到这一点 但我仍然找不到在android中做的方法 所以请帮我解决这个问题 谢谢大家 谷歌代码
  • PopupWindow onitemclick 中的 Android Listview 在某些设备上不起作用

    我的 ListView 在 PopupWindow 内 当我显示 PopupWindow 并单击设备 ASUS K00z 中的 Listview 行时 fonepad 工作得很好 但在 HTC Z715e 中不起作用 项目单击事件未触发 1
  • 包管理器已去世

    我收到一位安装了很多应用程序的用户发来的邮件 称当我的应用程序使用以下代码收集活动信息时 他遇到了问题 getPackageManager queryIntentActivities mAinIntent 0 完整来源在这里 https g
  • 如何在android中批量插入sqlite

    我正在使用 SQLiteOpenHelper 进行数据插入 我需要插入2500个id和2500个名字 所以花费了太多时间 请任何人帮助我如何减少插入时间 我们可以一次插入多条记录吗 任何人都可以帮助我 先感谢您 代码 public clas
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 作为附件的 Android 设备

    我有 2 个 Android 设备 我想用 USB OTG 电缆连接它们 并在两个设备之间进行来回通信 据我了解 一台 Android 设备将充当 USB 主机 运行 4 4 的 Nexus 7 另一台 Android 设备将充当 USB
  • Android 媒体播放器搜索栏

    我有一个创建 播放和处理媒体播放器 只是音频 的服务 但我在主要活动中有一个搜索栏 我想自然地显示音频文件的进度并允许用户搜索到不同的位置 我花了很长时间才弄清楚 将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么 我将这样
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • phonegap html5 android 同步文件系统 IO

    如何使用 PhoneGaps 文件系统 API 同步读写文件 有可用的同步包装器吗 无法通过提供的 api 同步访问文件 从phonegap的实现方式猜测 我怀疑您是否可以编写一个插件来同步执行此操作
  • 将触摸事件从 NestedScrollView 传递到父视图

    我在 NestedScrollView 下方有一个 ViewPager 宽度一些顶部填充 以及 ClipToPadding false 和透明背景 如图像 我的 ViewPager 无法获取触摸事件并且无法工作 我怎么解决这个问题 我无法更
  • Android 10 请求 ACTIVITY_RECOGNITION 权限

    我试图遵守 Google 的要求 为 Android 10 请求 ACTIVITY RECOGNITION 权限 但我似乎不明白为什么没有显示权限弹出窗口 就像其他权限 即位置 存储等 一样 我的代码是 if ContextCompat c
  • 推特更新状态

    我正在通过 twitter4j 将 Twitter 集成到 Android 我可以成功阅读我发布的推文 现在我试图用它发布推文 但我不能 我收到如下奇怪的警告 02 01 16 28 43 298 WARN System err 729 4
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p
  • Android Studio 中自动打开“运行设备”选项卡

    在 Android Studio Flamingo 中有一个名为跑步设备并且它会在每次之后自动打开运行应用程序 有办法禁止这个自动打开吗 我尝试禁用启用物理 Android 设备的镜像选项 但选项卡仍然自动打开 基于此issue https
  • Android - 如何简单地拖放按钮?

    我在这里找到了一个适合初学者的教程 http androidrox wordpress com 2011 05 13 android sample app drag and drop image using touch http andro
  • 在 Qt 中构建 Android 项目不再有效

    所以我对 Android SDK NDK 和 Apache Ant 进行了一些更新 现在我无法构建任何 Android 项目 我收到一条警告 然后它说找不到 build xml 文件 错误 Warning Android platform

随机推荐