camera 必须先开启预览才能拍照 除非底层支持,建议楼主不要挣扎了。楼主可以开启一个service 然后一段时间发一个广播,在camera 的activity里面接收这个广播,然后该干嘛干嘛service 里面可以用定时器,可以其他具体技术自己选择

解决方案 »

  1.   

    可以设置一个很小的Activtiy,悬浮在桌面上,preview,反正别个也看不到
      

  2.   

    好吧。那用哪一种线程方式比较好呢?官方指导说service不适合长时间用。
      

  3.   

    我在api10可以做到,为什么到了api15却不行呢?
      

  4.   

    用service就行,后台运行的都是service,例如后台播放音乐。
      

  5.   

    用handler发送延迟消息,接收到消息后拍照保存就可以。
      

  6.   

    我现在的做法是 在camera.takePicture()之前,先camera.startPreview()。我现在已经完成了。这个程序在api10的手机上是好使的,但是到了api15却不行了。您知道有没有什么解决方法吗?
      

  7.   

    我现在的做法是 在camera.takePicture()之前,先camera.startPreview()。我现在已经完成了。这个程序在api10的手机上是好使的,但是到了api15却不行了。您知道有没有什么解决方法吗?

    这个不清除,是否与手机硬件/系统有关?
    楼主可以对照下Camera的API,看看api10以上有什么变化。
    http://developer.android.com/reference/android/hardware/Camera.html
      

  8.   

    我现在的做法是 在camera.takePicture()之前,先camera.startPreview()。我现在已经完成了。这个程序在api10的手机上是好使的,但是到了api15却不行了。您知道有没有什么解决方法吗?

    这个不清除,是否与手机硬件/系统有关?
    楼主可以对照下Camera的API,看看api10以上有什么变化。
    http://developer.android.com/reference/android/hardware/Camera.html
    我在网上搜好像是说api15在照相这一功能上重写过了,因为谷歌眼镜也是用的api15。现在在camera.startPreview()之前必须调用camera.setPreviewDisplay()或者是camera.setPreviewTexture()。有没有可能用一种方式“骗过”camera呢?谢谢
      

  9.   

    再请教给位大神一个问题:官网上说service 是再后台运行的,不需要交互。但是又说service如果有耗时的操作会阻塞前台。(Remember that if you do use a service, it still runs in your application's main thread by default, so you should still create a new thread within the service if it performs intensive or blocking operations.)
    这不是耍我吗?
      

  10.   

    service的确是在后台运行的,service运行在主线程中会阻塞UI操作,如果service有耗时操作可以在service中开启新线程执行耗时操作。
      

  11.   

    service的确是在后台运行的,service运行在主线程中会阻塞UI操作,如果service有耗时操作可以在service中开启新线程执行耗时操作。
    就是不理解为什么既然再后台运行,但是却会阻塞UI操作呢?这不可能阿。
      

  12.   

    service的确是在后台运行的,service运行在主线程中会阻塞UI操作,如果service有耗时操作可以在service中开启新线程执行耗时操作。
    就是不理解为什么既然再后台运行,但是却会阻塞UI操作呢?这不可能阿。
    后台运行有可能也在主线程里面运行,例如service有个reset方法,UI上有个“重置”按钮,点击重置按钮就在主线程调用service的reset方法,reset方法如果很耗时又没有放在新线程中执行的话就会导致主线程阻塞发生ANR.
    service只是没有界面,可以后台运行,用户看不到而已。
      

  13.   

    service的确是在后台运行的,service运行在主线程中会阻塞UI操作,如果service有耗时操作可以在service中开启新线程执行耗时操作。
    就是不理解为什么既然再后台运行,但是却会阻塞UI操作呢?这不可能阿。
    后台运行有可能也在主线程里面运行,例如service有个reset方法,UI上有个“重置”按钮,点击重置按钮就在主线程调用service的reset方法,reset方法如果很耗时又没有放在新线程中执行的话就会导致主线程阻塞发生ANR.
    service只是没有界面,可以后台运行,用户看不到而已。
    谢谢,最后一个问题:现在可以定时拍照了,但是还需要自动上传,如果没有网络就先存入本地,然后有网络就继续上传。现在遇到的问题是,网络恢复正常之后,本地的照片上传和自动拍照的即时上传如何不冲突?使用哪一种android多线程类比较好?
      

  14.   

    用SQLite记录那个已经上传完毕了。多线程是一种辅助主线程使用的工具,这个功能用那个都差不多