- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用相机 API 编写一个应用程序:显示预览并拍照。第一个版本效果很好。在类 Preview extends SurfaceView implements SurfaceHolder.Callback
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, acquire the camera and tell it where
// to draw.
camera = Camera.open();
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
hasSurface = true;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// It will be called immediately after surfaceCreated
// I move it to Resume.
setCameraPreviewParameters();
camera.startPreview();
}
在主要 Activity 中:
public class CameraDemo extends Activity
我还设置了一个成员:相机单元用户界面;它是:
public class CameraUnit extends LinearLayout
在onCreate中,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ui = new CameraUnit(this);
setContentView((View) ui);
Log.d(TAG, "onCreate'd");
}
它创建一个 LinearLayout 对象,其中包含 surfaceView 和一个相机按钮。
onResume 是:
@Override
protected void onResume() {
super.onResume();
}
虽然有效,但我认为 onResume 不应该为空。我还看到 surfaceCreated 和 surfaceChanged 在 famous Android app example OCRTest 中为空所以我认为将 surfaceCreated 和 surfaceChanged 中的命令移动到 onResume 会更好,也是可行的。
我认为我的应用程序第一个版本的流聊天应该是:主要 Activity onCreate(创建 LinearLayout 及其 surfaceView、相机按钮的位置),surfaceCreated 和 surfaceChanged 被调用,onResume.
所以我可以简单地将 surfaceCreated 和 surfaceChanged 中的命令移动到 onResume。但它不起作用!我使用 Debug 发现表面为空。我认为 surfaceCreatd 没有被调用。我的应用程序是不同的 OCRTest,它在主要 Activity 中实现 SurfaceHolder.Callback。我在 SurfaceView 中实现 SurfaceHolder.Callback:
class Preview extends SurfaceView implements SurfaceHolder.Callback
所以我在 onResume 中添加了另外两行
ui.preview.surfaceCreated(ui.preview.mHolder);
ui.preview.surfaceChanged(ui.preview.mHolder, 0, 800, 400);
我随机设置了最后三个整数参数。当我开始 Activity 时,Android 手机中的错误窗口弹出。它说“引起:java.lang.RuntimeException:无法连接到相机服务”。但是怎么解决呢????非常感谢!
错误是:
01-07 00:27:57.173: W/dalvikvm(11625): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
01-07 00:27:57.173: E/AndroidRuntime(11625): FATAL EXCEPTION: main
01-07 00:27:57.173: E/AndroidRuntime(11625): java.lang.RuntimeException: Unable to resume activity {com.example/com.example.CameraDemo}: java.lang.RuntimeException: Fail to connect to camera service
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2460)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2481)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1847)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.access$1500(ActivityThread.java:132)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.os.Handler.dispatchMessage(Handler.java:99)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.os.Looper.loop(Looper.java:150)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.main(ActivityThread.java:4263)
01-07 00:27:57.173: E/AndroidRuntime(11625): at java.lang.reflect.Method.invokeNative(Native Method)
01-07 00:27:57.173: E/AndroidRuntime(11625): at java.lang.reflect.Method.invoke(Method.java:507)
01-07 00:27:57.173: E/AndroidRuntime(11625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-07 00:27:57.173: E/AndroidRuntime(11625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-07 00:27:57.173: E/AndroidRuntime(11625): at dalvik.system.NativeStart.main(Native Method)
01-07 00:27:57.173: E/AndroidRuntime(11625): Caused by: java.lang.RuntimeException: Fail to connect to camera service
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.hardware.Camera.native_setup(Native Method)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.hardware.Camera.<init>(Camera.java:265)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.hardware.Camera.open(Camera.java:241)
01-07 00:27:57.173: E/AndroidRuntime(11625): at com.example.Preview.surfaceCreated(Preview.java:60)
01-07 00:27:57.173: E/AndroidRuntime(11625): at com.example.CameraDemo.onResume(CameraDemo.java:64)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1242)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.Activity.performResume(Activity.java:3904)
01-07 00:27:57.173: E/AndroidRuntime(11625): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2450)
01-07 00:27:57.173: E/AndroidRuntime(11625): ... 12 more
01-07 00:27:59.455: I/Process(11625): Sending signal. PID: 11625 SIG: 9
最佳答案
你明白了
java.lang.RuntimeException: Fail to connect to camera service
异常,当其他应用程序正在使用相机时。但我相信其他应用程序就是您的应用程序本身。你必须释放相机。
这些是你应该释放相机的情况:
在预览类中:
public void surfaceDestroyed(SurfaceHolder holder) {
// empty. Take care of releasing the Camera preview in your activity.
if (mCamera != null) {
mCamera.release();
}
}
在 Activity 中:
@Override
public void onBackPressed() {
super.onBackPressed();
if (myCamera != null) {
myCamera.release();
}
finish();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (myCamera != null) {
myCamera.release();
}
}
还有点击“取消”,以及当您完成使用相机时,即当图像被捕获并且您返回 Activity 时。
也试试这个:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if (mHolder.getSurface() == null) {
return;
}
try {
mCamera.stopPreview();
} catch (Exception e) {
//You can ignore this, because this means the Preview doesn't Exist
//So, no need to try stopping
}
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e) {
//Catch this
}
}
关于Android 相机 API 应用程序在 onResume 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191061/
假设我有 3 个 Fragment,BaseFragment,以及第一个 fragment 和第二个 fragment 。 我已经实现了 BaseFragment 的 onResume() 并编写了一
这是我的第一个应用程序,所以这个问题/答案可能非常基本。我目前有 onPause(); ,当玩家离开屏幕时停止播放音乐。我尝试做类似的事情,但使用 onResume,以便再次播放音乐(backgrou
如何重载onResume()以正确的方式工作?我想从 activity 返回到 MainActivity ,我希望在其中具有与应用程序启动后相同的状态。我想使用 recreate() 但它循环了或者类
出于某种原因,当我在代码中声明 onResume() 时,它会无缘无故地让我的程序崩溃,甚至无法打开。 这是我的 onResume() 代码: public void onResume() {
我遇到了一个棘手的问题。我有两个标签页主机 ...标签页主机 A 和标签页主机 B。每个选项卡主机都有三个选项卡(我们称它们为 A1、B1、A2、B2 等)。 选项卡主机 B 从 Activity A
我的应用程序有一个问题,如果我返回到一个 Activity ,我会收到一条错误消息,指出数据库已关闭: ERROR/AndroidRuntime(3566): Caused by: java.lang
在我的 android 应用程序中,我有一个问题已经 3 天无法解决了。我阅读了很多帖子和答案,但仍然找不到我的解决方案。 我的问题是当我按下主页按钮并在很长时间后返回应用程序时它崩溃了(NullPo
我如何实现一个无限滚动到 onResume(),目前是 onCreateView,我实现了一个无限滚动,它工作得很好,但是当涉及到 onResume() 时,它在另一个显示空白数据时不起作用。 这是o
我在我的 Android 应用程序中使用谷歌地图。一切都很好,但是当我没有启用 GPS 服务时,我会显示一条消息来启用。当我启用 GPS 并在我的 Fragment der map 中返回时,仅当我按
我一直在搜索这个,但不知道会发生什么...... 当我回到上一个 Activity 时,我的组件已正确初始化,但它们上面有一个新组件... 我的意思是,在 Debug模式下,我遵循并执行了 onRes
我读过一些与我的问题相似的帖子,最相似的问题在这里:Strange onPause(), onResume() behaviour in fragments 我正在使用 FragmentPagerAd
我已经阅读了关于 onResume() 和 onStart() 的文档,但我仍然不明白的一件事是 onResume() 在没有 onStart() 之前被调用? 最佳答案 请引用Android Act
我正在尝试制作一个简单的记事本应用程序,我想在“新建笔记” Activity 完成且主屏幕恢复时刷新笔记。但是,当我尝试使用此代码打开应用程序时,我会强制关闭。如果我删除 OnResume 东西,它不
这个问题在这里已经有了答案: Android: Under what circumstances would a Dialog appearing cause onPause() to be cal
我有一个问题。在为预览初始化相机并将另一个应用程序聚焦后,然后返回我的应用程序:预览显示为黑色。如果我继续拍照,它会拍摄我正常指向相机的位置的照片。 我在 OnResume() 覆盖上做错了什么吗?相
我正在使用列表适配器来显示不同的商店,当有人选择商店时,它会将他们带到一个新的 Activity 中,他们可以在该 Activity 中将商店添加到该屏幕上的收藏夹。 有一个调用 finish();
我有一个 Intent,它通过一个长的 Extra 从我的数据库中获取信息。它还通过 String Extra 设置 Activity 的标题。 现在,当我第一次启动 Activity 时,一切都完美
所以我有我的主要 Activity ,当您按下按钮时,它会启动 Activity 2。启动 activity2 后,我按下主页按钮,它将在 activity2 触发 onPause,然后 androi
我正在编写一个购物车应用,其中我允许用户选择要购买的商品并将他们需要的商品添加到购物车,为此我给出了两种不同的标签, 第一个标签,浏览产品 第二个标签,浏览购物车中的商品 [用户添加] 这里我遇到了一
我有问题。当我第一次启动我的 android 应用程序时,在主要 Activity 中 onCreate 和 onResume 都会被调用。但我只想被称为 onCreate。 我能做什么? 最佳答案
我是一名优秀的程序员,十分优秀!