{"id":303,"date":"2014-04-14T21:48:06","date_gmt":"2014-04-14T12:48:06","guid":{"rendered":"http:\/\/adreamer.godohosting.com\/en\/?p=303"},"modified":"2014-04-14T21:49:03","modified_gmt":"2014-04-14T12:49:03","slug":"aaaaaargh-onpreviewframe-is-not-called-on-android-ics","status":"publish","type":"post","link":"http:\/\/milkdrops.net\/en\/archives\/303","title":{"rendered":"Aaaaaargh! onPreviewFrame is not called on Android ICS"},"content":{"rendered":"<p>When using the Camera preview on android, there is a <a href=\"http:\/\/developer.android.com\/reference\/android\/hardware\/Camera.html#setPreviewCallback(android.hardware.Camera.PreviewCallback)\">setPreviewCallback<\/a> method to get the preview frames. (The API doc says it will do that.)<\/p>\n<p>However, I never saw the callback is being called.<\/p>\n<pre lang=\"java\">\r\ntry {\r\n\tcallbackBuffer = new byte[mCamera.getParameters().getPreviewSize().width * mCamera.getParameters().getPreviewSize().height * (ImageFormat.getBitsPerPixel(mCamera.getParameters().getPreviewFormat()) \/ 8)];\r\n    mCamera.addCallbackBuffer(callbackBuffer);\r\n    mCamera.setPreviewCallbackWithBuffer(this);\r\n    mCamera.setPreviewDisplay(holder);\r\n    mCamera.startPreview();\r\n} catch (IOException e) {\r\n    Log.d(TAG, \"Error setting camera preview: \" + e.getMessage());\r\n}\r\n<\/pre>\n<p>Not works.<\/p>\n<pre lang=\"java\">\r\ntry {\r\n    mCamera.setPreview(@Override\r\n\tpublic void onPreviewFrame(byte[] data, Camera camera) {\r\n\t\tLog.i(TAG, \"preview\");\r\n\t}\r\n    });\r\n    mCamera.setPreviewDisplay(holder);\r\n    mCamera.startPreview();\r\n} catch (IOException e) {\r\n    Log.d(TAG, \"Error setting camera preview: \" + e.getMessage());\r\n}\r\n<\/pre>\n<p>Nope.<\/p>\n<p>I could find a <a href=\"https:\/\/code.google.com\/p\/android\/issues\/detail?id=20999\">bug report<\/a> about it.<br \/>\n<a href=\"https:\/\/code.google.com\/p\/android\/issues\/detail?id=20999\">onPreviewFrame never called when using setPreviewCallback<\/a><\/p>\n<p>It seems like a bug on Android ICS, but it&#8217;s not clear which version is fixed. My device is 4.1.2 and just not working, and there will be so many people with ICS, because the Android device manufacturers doesn&#8217;t provide the OS update for the customers.<br \/>\nAnd android OS developers are not providing any explanation or the workaround to avoid it.<\/p>\n<p>Developing on Android is just a mess..<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When using the Camera preview on android, there is a setPreviewCallback method to get the preview frames. (The API doc says it will do that.) However, I never saw the callback is being called. try { callbackBuffer = new byte[mCamera.getParameters().getPreviewSize().width * mCamera.getParameters().getPreviewSize().height * (ImageFormat.getBitsPerPixel(mCamera.getParameters().getPreviewFormat()) \/ 8)]; mCamera.addCallbackBuffer(callbackBuffer); mCamera.setPreviewCallbackWithBuffer(this); mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { &hellip; <a href=\"http:\/\/milkdrops.net\/en\/archives\/303\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Aaaaaargh! onPreviewFrame is not called on Android ICS<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4,3],"tags":[5],"class_list":["post-303","post","type-post","status-publish","format-standard","hentry","category-android","category-devel","tag-android-2"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/posts\/303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/comments?post=303"}],"version-history":[{"count":2,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/posts\/303\/revisions"}],"predecessor-version":[{"id":305,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/posts\/303\/revisions\/305"}],"wp:attachment":[{"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/media?parent=303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/categories?post=303"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/milkdrops.net\/en\/wp-json\/wp\/v2\/tags?post=303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}