well, i think camera has crashed and in the condition u can't get
camera service. U must reboot phone.
when using hardware , u should be careful. u can open Camera in
onStart() and release Camera in onStop(). Can't open camera many times
in activity, when task finish u must release it .
sample code
private void turnLightOn() {
if (false == mIsFlashOpen) {
if (null == mCamera) {
try {
Log.e(TAG, "open");
mCamera =
Camera.open(CameraInfo.CAMERA_FACING_BACK);
} catch (RuntimeException e) {
try {
Thread.sleep(500);
Log.e(TAG, "second open");
mCamera =
Camera.open(CameraInfo.CAMERA_FACING_BACK);
} catch (Exception sube) {
Log.e(TAG, "fail to open camera");
sube.printStackTrace();
mCamera = null;
}
}
}
if (null != mCamera) {
Parameters parameters = mCamera.getParameters();
if (parameters == null) {
return;
}
List<String> flashModes =
parameters.getSupportedFlashModes();
// Check if camera flash exists
if (flashModes == null) {
return;
}
String flashMode = parameters.getFlashMode();
if (!Parameters.FLASH_MODE_TORCH.equals(flashMode)) {
// Turn on the flash
if
(flashModes.contains(Parameters.FLASH_MODE_TORCH)) {
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.startPreview();
mCamera.setParameters(parameters);
mRightBtn.setEnabled(true);
} else {
Log.e(TAG, "FLASH_MODE_TORCH not supported");
}
}
}
}
}
private void turnLightOff() {
if (mIsFlashOpen) {
mIsFlashOpen = false;
if (mCamera == null) {
return;
}
Parameters parameters = mCamera.getParameters();
if (parameters == null) {
return;
}
List<String> flashModes =
parameters.getSupportedFlashModes();
String flashMode = parameters.getFlashMode();
// Check if camera flash exists
if (flashModes == null) {
return;
}
if (!Parameters.FLASH_MODE_OFF.equals(flashMode)) {
// Turn off the flash
if (flashModes.contains(Parameters.FLASH_MODE_OFF)) {
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
mCamera.stopPreview();
} else {
Log.e(TAG, "FLASH_MODE_OFF not supported");
}
}
}
}
On 2月7日, 下午1时14分, Matt Clark <[email protected]> wrote:
> Even as hundreds of other have made them, i am trying my hand at a
> flashlight app. I have the basic GUI and widget working and toggling,
> and i just attempted to implement the actual flash from the phone.
> I have found many places that this is most easily done with this
> snippet of code:
>
> Camera mCamera = Camera.open();
> Parameters params = mCamera.getParameters();
> params.setFlashMode( Parameters.FLASH_MODE_TORCH );
> mCamera.setParameters( params );
>
> I have tried this code, and every time i run the app it crashes,
> giving me an output in LogCat of the following:
>
> 02-07 00:04:49.130: E/AndroidRuntime(4861): Caused by:
> java.lang.RuntimeException: Fail to connect to camera service
>
> Every other app that uses the camera or flash works fine, and i have
> no idea what is causing it to fail.
>
> In my android manifest i have:
>
> <uses-permission android:name="android.permission.FLASHLIGHT" />
> <uses-parmission android:name="android.permission.CAMERA" />
> <uses-feature android:name="android.hardware.camera" />
> <uses-feature android:name="android.hardware.camera.flash" />
>
> Any and all help is greatly appreciated as I am completely stuck after
> sitting at this for the last several hours...
> Thanks
> ~Matt
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en