Я использую код, предоставленный по следующему URL, чтобы попытаться работать с API камеры Android:
http://marakana.com/forums/android/examples/39.html
Это вызвало несколько вопросов, которые я пытался напраснонайдите ответы на все вопросы.
1) Мое приложение должно быть в книжной ориентации, но все примеры кода, которые я видел (включая указанный выше URL), похоже, зависят от альбомной ориентации.Фактически, независимо от того, что я пробовал до сих пор, кажется, что пейзаж неизбежен.Я попытался принудительно настроить параметры в surfaceCreated(...)
следующим образом:
Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
parameters.set("rotation", "90");
camera.setParameters(parameters);
Я попытался сделать то же самое в surfaceChanged(...)
.Конечно, я также устанавливаю свою ориентацию на портрет в манифесте следующим образом:
android:screenOrientation="portrait"
У кого-нибудь есть какие-либо предложения относительно того, что я делаю неправильно и как это исправить?
2) Еще один вопрос, который у меня есть, связан с освобождением ресурсов камеры.В коде из статьи, упомянутой выше, в методе surfaceDestroyed(...)
вызывается следующее:
camera.stopPreview();
camera = null;
Нет ресурсов для освобождения ресурсов камеры, поэтому после запуска этого приложения любое последующее приложение, котороеИспользует камеру не будет работать.Чтобы попытаться это исправить, я добавил вызов для освобождения ресурсов, например:
camera.stopPreview();
camera.release();
camera = null;
Проблема, однако, в том, что когда я закрываю приложение, я получаю «Force Close» сследующее исключение в LogCat:
FATAL EXCEPTION: main
java.lang.RuntimeException: Method called after release()
at android.hardware.Camera.setHasPreviewCallback(Native Method)
at android.hardware.Camera.access$600(Camera.java:58)
at android.hardware.Camera.$EventHandler.handleMessage(Camera.java:344)
at android.os.Handler.dispatchMessage(Handler.java.99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lanf.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Может кто-нибудь сказать мне, почему я не могу освободить ресурсы камеры там?
Спасибо всем заранее.Эта камера сводит меня с ума.
PS Я тестирую все это на HTC Evo.