{"id":760,"date":"2010-03-17T01:22:16","date_gmt":"2010-03-16T23:22:16","guid":{"rendered":"http:\/\/192.168.1.2:8080\/?p=760"},"modified":"2010-03-17T01:22:39","modified_gmt":"2010-03-16T23:22:39","slug":"camara-android-sdk","status":"publish","type":"post","link":"https:\/\/nauj27.com\/blog\/?p=760","title":{"rendered":"Hacer una foto en el SDK de Android"},"content":{"rendered":"<p><img loading=\"lazy\" class=\"alignleft size-full wp-image-762\" title=\"Android logo\" src=\"http:\/\/192.168.1.2:8080\/wp-content\/uploads\/2010\/03\/android-logo.png\" alt=\"Android logo\" width=\"155\" height=\"176\" \/> \u00daltimamente he estado enredando un poco con el <a href=\"http:\/\/developer.android.com\/index.html\">SDK de Android<\/a> y me he encontrado con esos peque\u00f1os detalles\u00a0 que hay que tratar con cuidado.<\/p>\n<p>La vista previa de la c\u00e1mara de fotos en Android es una sencilla tarea que requiere unos sencillos pasos en principio, pero que se puede complicar debido a peque\u00f1os detalles que hay que tener en cuenta.<\/p>\n<p>Las aplicaciones en android est\u00e1n compuestas de pantallas llamadas <a href=\"http:\/\/developer.android.com\/guide\/topics\/fundamentals.html#acttask\">Activity<\/a>. Se puede pensar en los activity como el equivalente al form en una aplicaci\u00f3n de escritorio. Un activity es una pantalla con una serie de controles que realiza una actividad concreta.<\/p>\n<p>Lo bueno de esta estructura es que cualquier aplicaci\u00f3n puede publicar sus activity de modo que otra pueda hacer uso de ella. Por ejemplo, desde una aplicaci\u00f3n que muestre una lista de contactos del m\u00f3vil se puede abrir el activity del tel\u00e9fono para realizar una llamada.<\/p>\n<p>De este modo si est\u00e1s desarrollando una aplicaci\u00f3n que requiere realizar una foto, parece interesante usar la propia aplicaci\u00f3n de fotograf\u00edas que traiga el sistema. Hasta aqu\u00ed todo bien hasta que te pones manos a la obra.<\/p>\n<p>Resulta que cuando le pides al activity de la aplicaci\u00f3n de c\u00e1mara que haga una foto, la resoluci\u00f3n de la foto que devuelve <a href=\"http:\/\/code.google.com\/p\/android\/issues\/detail?id=1480\">no puedes especificarla<\/a>, sino que te tienes que apa\u00f1ar con lo que haga. Hay que tener en cuenta que mi HTC Hero actualmente tiene android 1.5 y que estos temas est\u00e1n mejor tratados en versiones posteriores de android, pero las aplicaciones que hago han de funcionar al menos en mi tel\u00e9fono.<\/p>\n<p>Seg\u00fan la documentaci\u00f3n si se a\u00f1ade un atributo EXTRA_OUTPUT se devuelve la imagen a resoluci\u00f3n completa, y si no, se devuelve una imagen peque\u00f1ita. La realidad es distinta, ya que con el atributo de EXTRA_OUTPUT se recibe una imagen de 512x384px, al menos en algunos modelos de tel\u00e9fono.<\/p>\n<p>El tama\u00f1o concreto de la imagen devuelta donde se supone que ha de ser de resoluci\u00f3n completa es de <a href=\"http:\/\/code.google.com\/p\/android\/issues\/detail?id=1480#c10\">un cuarto de la resoluci\u00f3n total<\/a> del sensor. Adem\u00e1s, la manera de devolver los datos es distinta seg\u00fan el tel\u00e9fono, marca, modelo e implementaci\u00f3n. Como puede leerse en un <a href=\"http:\/\/code.google.com\/p\/android\/issues\/detail?id=1480#c19\">comentario de octubre de 2009<\/a>, Google ha definido c\u00f3mo debe de ser la petici\u00f3n de captura de imagen, pero no as\u00ed la implementaci\u00f3n de la respuesta en la aplicaci\u00f3n de c\u00e1mara. HTC en su interfaz Sense ha creado su propia manera de hacer fotos, donde los datos devueltos\u00a0 y la manera de tratar la informaci\u00f3n capturada es distinta a la original.<\/p>\n<p>Si se quiere por tanto tener control sobre la c\u00e1mara y la foto realizada no hay m\u00e1s remedio que programar un activity propio que haga la vista previa y la captura de la imagen. Este es el \u00fanico modo de configurar todos los par\u00e1metros a medida.<\/p>\n<p>En el siguiente art\u00edculo explicar\u00e9 los problemas que encontr\u00e9 con la creaci\u00f3n del activity de foto propio y c\u00f3mo resolverlos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00daltimamente he estado enredando un poco con el SDK de Android y me he encontrado con esos peque\u00f1os detalles\u00a0 que hay que tratar con cuidado. La vista previa de la c\u00e1mara de fotos en Android es una sencilla tarea que requiere unos sencillos pasos en principio, pero que se puede complicar debido a peque\u00f1os detalles [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[151],"tags":[85,152,196],"_links":{"self":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/760"}],"collection":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=760"}],"version-history":[{"count":5,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/760\/revisions"}],"predecessor-version":[{"id":766,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/760\/revisions\/766"}],"wp:attachment":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}