【问题标题】:camera crashes if called by intent如果有意调用,相机会崩溃
【发布时间】:2014-05-12 03:51:17
【问题描述】:

如果被 Intent 调用,我的个性化相机会崩溃,但如果应用程序直接启动到相机,它可以工作。我的问题是,如果相机未设置为启动器,并且如果通过意图调用相机,则会显示相机,但如果按下捕获按钮,它将崩溃。

我有两堂课,第一堂课是startup screen,第二堂课是camera。启动屏幕是启动器,相机类是清单声明中的默认值。如果我运行应用程序,将显示启动屏幕,并且如果用户单击“启动相机”按钮,它将通过意图调用相机类,现在如果我点击/单击捕获按钮,相机会崩溃并停止。

这是我调用相机类的意图代码;

public void startCamera(View paramView)
 {
   Intent stCam = new Intent(GPSInitialize.this, MainActivity.class);
   stCam.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
   stCam.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(stCam);
   locationManager.removeUpdates((LocationListener) GPSInitialize.this);
   finish();
 }

日志猫:

05-12 00:17:25.368: E/AndroidRuntime(1563): java.lang.OutOfMemoryError
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.graphics.Bitmap.nativeCopy(Native Method)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.graphics.Bitmap.copy(Bitmap.java:555)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at com.joules.camera3100.MainActivity$3.onPictureTaken(MainActivity.java:443)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:917)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.os.Looper.loop(Looper.java:136)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at java.lang.reflect.Method.invokeNative(Native Method)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at java.lang.reflect.Method.invoke(Method.java:515)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-12 00:17:25.368: E/AndroidRuntime(1563):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你为什么要调用“finish();”在“startActivity(stCam);”之后?? finish() 将关闭活动。
  • 我使用finish 来结束第一个活动或启动类。这就是为什么我把finish();实际上我会在调用另一个类之前关闭启动类,在这个视图中,如果预览相机,将使用最少的内存。这个方法是不是错了?
  • 分享你的相机类和logcat的代码。
  • 您在 onPictureTaken() 中进行了内存复制,导致 OutOfMemoryError。注意数据大小。

标签: android android-intent camera


【解决方案1】:

您好,您的问题不是相机问题,而是内存问题。拍摄图像时请检查您的内存,因为没有存储新图像的内存。首先检查内存可用性,然后捕获图像。

【讨论】:

  • 如何检查内存?我会检查存储内存并显示可用空间为 9.83gb。我认为这对于图像来说已经足够大了。
  • 转到设置->存储并检查内部存储器,或者只是从图库中删除未使用的图像或从设备中删除应用程序。
  • 您检查过您的内存或 SD 卡大小吗?因为您的图像存储在内存中。
  • 是的,我的内部可用内存为 9.83gb,外部内存可用空间为 12.65gb。
  • 如果我将清单启动器直接更改为相机,应用程序可以工作,但如果我将启动器更改为我的启动类,然后从启动类的按钮调用相机,相机显示但它如果我开始捕捉图像会崩溃。
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2012-03-11
相关资源
最近更新 更多