0

写真を撮るための私のコードは、takePicture でハングします。このコードは、Android 2.2 または 4.0 を実行しているデバイスで正常に動作します。2.3 を実行している私の Huawei では実行されません。現時点では、それがデバイスなのか API なのかわかりません。デバイスが疑わしいのですが、システム カメラ アプリが動作しているため、これは奇妙に感じます。これは、takePicture メソッドが実行された時点で記録した LogCat エントリです。誰かがヒントを与えるかもしれない何かを見つけることができますか?

01-10 13:09:42.589: I/QualcommCameraHardware(113): Found a matching camera info for ID 0
01-10 13:09:42.589: I/QualcommCameraHardware(113): HAL_getCameraInfo: orientation = 90
01-10 13:09:42.589: I/QualcommCameraHardware(113): HAL_getCameraInfo: modes supported = 5
01-10 13:09:42.599: I/QualcommCameraHardware(113): openCameraHardware: call createInstance
01-10 13:09:42.599: I/QualcommCameraHardware(113): openCameraHardware:Valid camera ID 0
01-10 13:09:42.599: I/QualcommCameraHardware(113): openCameraHardware:camera mode 1
01-10 13:09:42.599: I/QualcommCameraHardware(113): HAL_openCameraHardware: HAL_currentSnapshotMode = 4
01-10 13:09:42.599: I/QualcommCameraHardware(113): createInstance: E
01-10 13:09:42.599: I/QualcommCameraHardware(113): QualcommCameraHardware constructor E
01-10 13:09:42.619: I/QualcommCameraHardware(113): createInstance: created hardware=0x10a68
01-10 13:09:42.759: E/CAM_FD(113): sensor_load_chromatix: Sensor name: s5k5ca cnt=3
01-10 13:09:42.759: E/mm-camera(113): s5k5ca_setup_camctrl_tbl:get af supported false!
01-10 13:09:42.769: E/mm-camera(113): camera_query_parms: pict_max_size   max_width 2048 max_height 1536
01-10 13:09:42.769: E/QualcommCameraHardware(113): startCamera X: max pic   width:2048   height:1536
01-10 13:09:42.769: I/QualcommCameraHardware(113): initDefaultParameters E
01-10 13:09:42.859: I/QualcommCameraHardware(113): AutoFocus is not supported
01-10 13:09:42.859: E/QualcommCameraHardware(113): filterPictureSizes   picture_sizes[3].width:2048  picture_sizes[3].height:1536 .
01-10 13:09:42.869: E/QualcommCameraHardware(113): Maximum zoom value is 61
01-10 13:09:42.869: I/QualcommCameraHardware(113): initDefaultParameters: setting num-snaps-per-shutter to 1
01-10 13:09:42.869: I/QualcommCameraHardware(113): setRecordSize: preview dimensions: 640x480
01-10 13:09:42.869: I/QualcommCameraHardware(113): setRecordSize: video dimensions: 640x480
01-10 13:09:42.869: I/QualcommCameraHardware(113): Parameter Rolloff is not supported for this sensor
01-10 13:09:42.869: I/QualcommCameraHardware(113): Parameter MCE is not supported for this sensor
01-10 13:09:42.869: I/QualcommCameraHardware(113): Sharpness not supported for this sensor
01-10 13:09:42.869: I/QualcommCameraHardware(113): Saturation not supported for this sensor
01-10 13:09:42.869: E/QualcommCameraHardware(113): Parameter Scenemode is not supported for this sensor
01-10 13:09:42.869: I/QualcommCameraHardware(113): Contrast not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): Parameter AntiBanding is not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): setRedeyeReduction: setting Redeye Reduction value of disable
01-10 13:09:42.879: E/CAM_FD(113): config_proc_CAMERA_SET_REDEYE_REDUCTION: mode =0
01-10 13:09:42.879: E/CAM_FD(113): config_proc_CAMERA_SET_REDEYE_REDUCTION: FAILED
01-10 13:09:42.879: E/QualcommCameraHardware(113): native_set_parms failed: type 50 length 1 error No such file or directory
01-10 13:09:42.879: E/QualcommCameraHardware(113): Wavelet Denoise is not supported for this sensor
01-10 13:09:42.879: E/QualcommCameraHardware(113): FPS Range Values: 5000x31000
01-10 13:09:42.879: I/QualcommCameraHardware(113): Set fps is not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): set fps mode is not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): Auto Exposure not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): Exposure Compensation is not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): setFlash: flash not supported
01-10 13:09:42.879: I/QualcommCameraHardware(113): Set Brightness not supported for this sensor
01-10 13:09:42.879: E/QualcommCameraHardware(113): Parameter ISO Value is not supported for this sensor
01-10 13:09:42.879: I/QualcommCameraHardware(113): setHighFrameRate: setting HFR value of off(1)
01-10 13:09:42.879: I/QualcommCameraHardware(113): initDefaultParameters X
01-10 13:09:42.879: I/QualcommCameraHardware(113): createInstance: X
01-10 13:09:42.879: I/QualcommCameraHardware(113): Found a matching camera info for ID 0
01-10 13:09:42.879: I/QualcommCameraHardware(113): HAL_getCameraInfo: orientation = 90
01-10 13:09:42.879: I/QualcommCameraHardware(113): HAL_getCameraInfo: modes supported = 5
01-10 13:09:42.879: E/CameraService(113): takePicture   return mHardware->takePicture(mSurface)
01-10 13:09:42.879: E/QualcommCameraHardware(113): takePicture(2511)
01-10 13:09:42.879: E/mm-camera(113): PROFILE Camera_interface pre_prepare snap : 1357819782.890308291
01-10 13:09:42.879: E/mm-camera(113): PROFILE Camera_interface post prepare_snap: 1357819782.890339957
01-10 13:09:42.879: I/QualcommCameraHardware(113): stopPreviewInternal E: 0
01-10 13:09:42.879: I/QualcommCameraHardware(113): stopPreviewInternal X: 0
01-10 13:09:42.899: D/MediaPlayer(113): setDataSource(/system/media/audio/ui/camera_click.ogg)
01-10 13:09:42.899: E/QualcommCameraHardware(113): initRaw   getPictureSize   mPictureWidth:640   mPictureHeight:480
01-10 13:09:42.899: E/mm-camera(113): camera_set_parms  CAMERA_PARM_NEED_TO_RESIZE   *((bool*)p_value):0
01-10 13:09:42.909: E/mm-camera(113): snapshot_set_need_resize: exit status 0,  is_need_resize:0
01-10 13:09:42.909: E/QualcommCameraHardware(113): rawsize = 460800 cbcr offset =307200
01-10 13:09:42.909: V/MediaPlayerService(113): Client(1) constructor
01-10 13:09:42.909: V/MediaPlayerService(113): Create new client(1) from pid 113, url=/system/media/audio/ui/camera_click.ogg, connId=1, audioSessionId=3
01-10 13:09:42.909: D/MediaPlayerService(113): setDataSource(/system/media/audio/ui/camera_click.ogg)
01-10 13:09:42.929: V/MediaPlayerService(113): usePVPlayer: did not detect file to be with LPA implementation
01-10 13:09:42.929: I/MediaPlayerService(113): The Default player that is returned is STAGEFRIGHT**************
01-10 13:09:42.929: V/MediaPlayerService(113): player type = 4
01-10 13:09:42.929: V/MediaPlayerService(113):  create StagefrightPlayer
01-10 13:09:42.939: V/AudioSink(113): AudioOutput(3)
01-10 13:09:42.939: V/MediaPlayerService(113):  setDataSource
01-10 13:09:42.939: V/MediaPlayerService(113): [1] setAudioStreamType(10)
01-10 13:09:42.939: V/MediaPlayerService(113): [1] prepareAsync
01-10 13:09:42.989: V/MediaPlayerService(113): [1] notify (0x16e78, 5, 0, 0)
01-10 13:09:42.989: V/MediaPlayerService(113): [1] notify (0x16e78, 1, 0, 0)
01-10 13:09:42.989: D/MediaPlayer(113): setDataSource(/system/media/audio/ui/VideoRecord.ogg)
01-10 13:09:42.989: V/MediaPlayerService(113): Client(2) constructor
01-10 13:09:42.989: V/MediaPlayerService(113): Create new client(2) from pid 113, url=/system/media/audio/ui/VideoRecord.ogg, connId=2, audioSessionId=4
01-10 13:09:42.989: D/MediaPlayerService(113): setDataSource(/system/media/audio/ui/VideoRecord.ogg)
01-10 13:09:42.989: V/MediaPlayerService(113): usePVPlayer: did not detect file to be with LPA implementation
01-10 13:09:42.989: I/MediaPlayerService(113): The Default player that is returned is STAGEFRIGHT**************
01-10 13:09:42.989: V/MediaPlayerService(113): player type = 4
01-10 13:09:42.989: V/MediaPlayerService(113):  create StagefrightPlayer
01-10 13:09:42.999: V/AudioSink(113): AudioOutput(4)
01-10 13:09:42.999: V/MediaPlayerService(113):  setDataSource
01-10 13:09:42.999: V/MediaPlayerService(113): [2] setAudioStreamType(10)
01-10 13:09:42.999: V/MediaPlayerService(113): [2] prepareAsync
01-10 13:09:43.009: V/MediaPlayerService(113): [2] notify (0x254e8, 5, 0, 0)
01-10 13:09:43.009: V/MediaPlayerService(113): [2] notify (0x254e8, 1, 0, 0)
01-10 13:09:48.909: E/CAM_FD(113): ...config thread select timeout...
01-10 13:09:48.969: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=SyncManagerHandleSyncAlarm
01-10 13:09:48.979: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=AlarmManager
01-10 13:09:48.979: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=AlarmManager
01-10 13:09:48.979: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=SyncManagerHandleSyncAlarm
01-10 13:09:54.919: E/CAM_FD(113): ...config thread select timeout...
01-10 13:09:59.999: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=AlarmManager
01-10 13:10:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver onReceive
01-10 13:10:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver actionandroid.intent.action.TIME_TICK
01-10 13:10:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver msg.what=1001
01-10 13:10:00.039: I/WeatherMediumWidgetProvider(732): updateUI(Context context)
01-10 13:10:00.049: D/WeatherMediumWidgetProvider(732): updateUI(Context context, AppWidgetManager widgetManager, int[] appWidgetId)
01-10 13:10:00.059: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:10:00.059: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=AlarmManager
01-10 13:10:00.069: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:10:00.069: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:10:00.069: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:10:00.069: D/WidgetUtils(732): setWeatherUpdateClickListener
01-10 13:10:00.069: D/WidgetUtils(732): setAccuWeatherCickListener
01-10 13:10:00.069: E/WidgetUtils(732): cityCode=cityId:167705
01-10 13:10:00.069: D/WidgetUtils(732): updateWeatherInfo
01-10 13:10:00.069: D/Utils(732): isDataOK
01-10 13:10:00.069: D/Utils(732): dataOverdue
01-10 13:10:00.069: D/WidgetUtils(732): updateWeatherInfo temperature =3.3333333,time1357482579481,weatherDes=Mostly Cloudy,invalidDay=4
01-10 13:10:00.069: D/WidgetUtils(732): updateWeatherInfo weatherDayDataInfo =HighTemperature =3.3333333 LowTemperature =-0.5555556 WeatherIcon =7 TextShort=Cloudy and colder TextLong=Cloudy and colder with a rain and snow shower possible WindSpeed=5 WindDirection=W
01-10 13:10:00.079: D/WidgetUtils(732): updateCityDateTime 
01-10 13:10:00.079: D/WidgetUtils(732): getCurCityCalendar
01-10 13:10:00.079: D/WidgetUtils(732): builder=2013/01/10  Thursday,dayOfWeek=Thursday,dayFormat=2013/01/10
01-10 13:10:00.079: D/WidgetUtils(732): calender2ClockImgIdx
01-10 13:10:00.079: D/WidgetUtils(732): updateRefreshTime
01-10 13:10:00.079: D/Utils(732): isUpdating
01-10 13:10:00.079: D/Utils(732): isDataOK
01-10 13:10:00.079: D/Utils(732): dataOverdue
01-10 13:10:00.089: D/WidgetUtils(732): getUpdateTime relativeDay=4
01-10 13:10:00.929: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:06.929: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:12.939: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:18.939: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:24.939: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:30.949: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:36.959: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:42.959: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:48.969: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:54.979: E/CAM_FD(113): ...config thread select timeout...
01-10 13:10:59.999: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=AlarmManager
01-10 13:11:00.029: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver onReceive
01-10 13:11:00.029: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver actionandroid.intent.action.TIME_TICK
01-10 13:11:00.029: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver msg.what=1001
01-10 13:11:00.029: I/WeatherMediumWidgetProvider(732): updateUI(Context context)
01-10 13:11:00.029: D/WeatherMediumWidgetProvider(732): updateUI(Context context, AppWidgetManager widgetManager, int[] appWidgetId)
01-10 13:11:00.039: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:11:00.039: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:11:00.049: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:11:00.049: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:11:00.059: D/WidgetUtils(732): setWeatherUpdateClickListener
01-10 13:11:00.059: D/WidgetUtils(732): setAccuWeatherCickListener
01-10 13:11:00.059: E/WidgetUtils(732): cityCode=cityId:167705
01-10 13:11:00.059: D/WidgetUtils(732): updateWeatherInfo
01-10 13:11:00.059: D/Utils(732): isDataOK
01-10 13:11:00.059: D/Utils(732): dataOverdue
01-10 13:11:00.059: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=AlarmManager
01-10 13:11:00.069: D/WidgetUtils(732): updateWeatherInfo temperature =3.3333333,time1357482579481,weatherDes=Mostly Cloudy,invalidDay=4
01-10 13:11:00.069: D/WidgetUtils(732): updateWeatherInfo weatherDayDataInfo =HighTemperature =3.3333333 LowTemperature =-0.5555556 WeatherIcon =7 TextShort=Cloudy and colder TextLong=Cloudy and colder with a rain and snow shower possible WindSpeed=5 WindDirection=W
01-10 13:11:00.069: D/WidgetUtils(732): updateCityDateTime 
01-10 13:11:00.069: D/WidgetUtils(732): getCurCityCalendar
01-10 13:11:00.069: D/WidgetUtils(732): builder=2013/01/10  Thursday,dayOfWeek=Thursday,dayFormat=2013/01/10
01-10 13:11:00.069: D/WidgetUtils(732): calender2ClockImgIdx
01-10 13:11:00.069: D/WidgetUtils(732): updateRefreshTime
01-10 13:11:00.069: D/Utils(732): isUpdating
01-10 13:11:00.069: D/Utils(732): isDataOK
01-10 13:11:00.069: D/Utils(732): dataOverdue
01-10 13:11:00.069: D/WidgetUtils(732): getUpdateTime relativeDay=4
01-10 13:11:00.979: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:06.989: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:12.989: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:18.999: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:24.999: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:31.009: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:37.009: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:43.009: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:49.019: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:55.019: E/CAM_FD(113): ...config thread select timeout...
01-10 13:11:59.999: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=AlarmManager
01-10 13:12:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver onReceive
01-10 13:12:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver actionandroid.intent.action.TIME_TICK
01-10 13:12:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver msg.what=1001
01-10 13:12:00.039: I/WeatherMediumWidgetProvider(732): updateUI(Context context)
01-10 13:12:00.049: D/WeatherMediumWidgetProvider(732): updateUI(Context context, AppWidgetManager widgetManager, int[] appWidgetId)
01-10 13:12:00.049: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:12:00.049: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:12:00.049: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:12:00.049: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:12:00.049: D/WidgetUtils(732): setWeatherUpdateClickListener
01-10 13:12:00.059: D/WidgetUtils(732): setAccuWeatherCickListener
01-10 13:12:00.059: E/WidgetUtils(732): cityCode=cityId:167705
01-10 13:12:00.069: D/WidgetUtils(732): updateWeatherInfo
01-10 13:12:00.069: D/Utils(732): isDataOK
01-10 13:12:00.069: D/Utils(732): dataOverdue
01-10 13:12:00.069: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=AlarmManager
01-10 13:12:00.069: D/WidgetUtils(732): updateWeatherInfo temperature =3.3333333,time1357482579481,weatherDes=Mostly Cloudy,invalidDay=4
01-10 13:12:00.069: D/WidgetUtils(732): updateWeatherInfo weatherDayDataInfo =HighTemperature =3.3333333 LowTemperature =-0.5555556 WeatherIcon =7 TextShort=Cloudy and colder TextLong=Cloudy and colder with a rain and snow shower possible WindSpeed=5 WindDirection=W
01-10 13:12:00.069: D/WidgetUtils(732): updateCityDateTime 
01-10 13:12:00.069: D/WidgetUtils(732): getCurCityCalendar
01-10 13:12:00.069: D/WidgetUtils(732): builder=2013/01/10  Thursday,dayOfWeek=Thursday,dayFormat=2013/01/10
01-10 13:12:00.069: D/WidgetUtils(732): calender2ClockImgIdx
01-10 13:12:00.069: D/WidgetUtils(732): updateRefreshTime
01-10 13:12:00.069: D/Utils(732): isUpdating
01-10 13:12:00.069: D/Utils(732): isDataOK
01-10 13:12:00.069: D/Utils(732): dataOverdue
01-10 13:12:00.079: D/WidgetUtils(732): getUpdateTime relativeDay=4
01-10 13:12:01.029: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:07.029: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:13.039: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:19.039: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:25.049: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:31.049: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:37.059: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:43.069: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:49.069: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:55.069: E/CAM_FD(113): ...config thread select timeout...
01-10 13:12:59.999: D/PowerManagerService(199): acquireWakeLock flags=0x1 tag=AlarmManager
01-10 13:13:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver onReceive
01-10 13:13:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver actionandroid.intent.action.TIME_TICK
01-10 13:13:00.039: D/WeatherWidgetServerLite(732): WeatherWidgetReceiver msg.what=1001
01-10 13:13:00.039: I/WeatherMediumWidgetProvider(732): updateUI(Context context)
01-10 13:13:00.039: D/WeatherMediumWidgetProvider(732): updateUI(Context context, AppWidgetManager widgetManager, int[] appWidgetId)
01-10 13:13:00.039: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:13:00.039: D/WidgetUtils(732): setWeatherHomeClickListener
01-10 13:13:00.049: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:13:00.059: D/WidgetUtils(732): setAlarmClockClickListener
01-10 13:13:00.059: D/WidgetUtils(732): setWeatherUpdateClickListener
01-10 13:13:00.059: D/WidgetUtils(732): setAccuWeatherCickListener
01-10 13:13:00.059: E/WidgetUtils(732): cityCode=cityId:167705
01-10 13:13:00.059: D/WidgetUtils(732): updateWeatherInfo
01-10 13:13:00.059: D/Utils(732): isDataOK
01-10 13:13:00.059: D/Utils(732): dataOverdue
01-10 13:13:00.059: D/PowerManagerService(199): releaseWakeLock flags=0x1 tag=AlarmManager
01-10 13:13:00.069: D/WidgetUtils(732): updateWeatherInfo temperature =3.3333333,time1357482579481,weatherDes=Mostly Cloudy,invalidDay=4
01-10 13:13:00.069: D/WidgetUtils(732): updateWeatherInfo weatherDayDataInfo =HighTemperature =3.3333333 LowTemperature =-0.5555556 WeatherIcon =7 TextShort=Cloudy and colder TextLong=Cloudy and colder with a rain and snow shower possible WindSpeed=5 WindDirection=W
01-10 13:13:00.069: D/WidgetUtils(732): updateCityDateTime 
01-10 13:13:00.069: D/WidgetUtils(732): getCurCityCalendar
01-10 13:13:00.069: D/WidgetUtils(732): builder=2013/01/10  Thursday,dayOfWeek=Thursday,dayFormat=2013/01/10
01-10 13:13:00.069: D/WidgetUtils(732): calender2ClockImgIdx
01-10 13:13:00.069: D/WidgetUtils(732): updateRefreshTime
01-10 13:13:00.069: D/Utils(732): isUpdating
01-10 13:13:00.069: D/Utils(732): isDataOK
01-10 13:13:00.069: D/Utils(732): dataOverdue
01-10 13:13:00.069: D/WidgetUtils(732): getUpdateTime relativeDay=4
4

2 に答える 2

0

これを試して..

カメラが写真の撮影でハングアップする場合は、これを試してみてください..

camera.setPreviewCallback(new PreviewCallback() {

        @Override
        public synchronized void onPreviewFrame(byte[] data, Camera arg1) {
            if (!mTakePicture) {
                CameraPreview.this.invalidate();
            } else {

                if (mTakePictureCallback != null && !mPictureTaken) {
                    int rgb[] = new int[previewSize.width*previewSize.height];
                    decodeYUV420SP(rgb, data, previewSize.width, previewSize.height);
                    Bitmap memoryImage = Bitmap.createBitmap(rgb, previewSize.width, previewSize.height, Bitmap.Config.ARGB_8888);
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    memoryImage.compress(CompressFormat.JPEG, 100, baos);
                    shutterSound();
                    setBackgroundDrawable(new BitmapDrawable(getContext().getResources(), memoryImage));
                    mTakePictureCallback.onPictureTaken(baos.toByteArray(), arg1);
                }
                mPictureTaken = true;
                camera.stopPreview();
            }
        }
    });

//それ以外の場合は、これを選択できます..

public class CamaraView extends Activity implements SurfaceHolder.Callback,
        OnClickListener {
    static final int FOTO_MODE = 0;
    private static final String TAG = "CameraTest";
    Camera mCamera;
    boolean mPreviewRunning = false;
    private Context mContext = this;


    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        Log.e(TAG, "onCreate");

        Bundle extras = getIntent().getExtras();


        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.surface_camera);
        mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
        mSurfaceView.setOnClickListener(this);
        mSurfaceHolder = mSurfaceView.getHolder();
        mSurfaceHolder.addCallback(this);
        mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }

    Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
        public void onPictureTaken(byte[] imageData, Camera c) {

            if (imageData != null) {

                Intent mIntent = new Intent();

                FileUtilities.StoreByteImage(mContext, imageData,
                         50, "ImageName");
                mCamera.startPreview();

                setResult(FOTO_MODE,mIntent);
                finish();


            }
        }
    };

    protected void onResume() {
        Log.e(TAG, "onResume");
        super.onResume();
    }

    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    protected void onStop() {
        Log.e(TAG, "onStop");
        super.onStop();
    }

    public void surfaceCreated(SurfaceHolder holder) {
        Log.e(TAG, "surfaceCreated");
        mCamera = Camera.open();

    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Log.e(TAG, "surfaceChanged");

        // XXX stopPreview() will crash if preview is not running
        if (mPreviewRunning) {
            mCamera.stopPreview();
        }

        Camera.Parameters p = mCamera.getParameters();
        p.setPreviewSize(w, h);
        mCamera.setParameters(p);
        try {
            mCamera.setPreviewDisplay(holder);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mCamera.startPreview();
        mPreviewRunning = true;
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.e(TAG, "surfaceDestroyed");
        mCamera.stopPreview();
        mPreviewRunning = false;
        mCamera.release();
    }

    private SurfaceView mSurfaceView;
    private SurfaceHolder mSurfaceHolder;

    public void onClick(View arg0) {

        mCamera.takePicture(null, mPictureCallback, mPictureCallback);

    }

}

ここに詳細のリンクがあります..

http://www.dzone.com/snippets/how-take-pictures-android

http://www.41post.com/3470/programming/android-retrifying-the-camera-preview-as-a-pixel-arrayで見つけた人http://code.google.com/p/ketai/

于 2013-01-10T12:24:30.637 に答える
0

Turns out that in Android 2.3, you need to create a SurfaceView and use the StartPreview in order for a picture to be taken. The Android doc shows how to create this SurfaceView but it also says that you don't need an Activity to take pictures and their example only shows a picture being taken from within an activity.

I used their sample code to create a SurfaceView but did not have to apply it to a FragmentLayout.

Personally I think that there is an inconsistency in the Android docs. On the one hand they are telling you that you don't need a preview (which seems to be true for Android 2.2 and 4.0) but you clearly need it for 2.3.

于 2013-01-10T17:12:45.977 に答える