{"id":2494,"date":"2011-06-28T06:30:53","date_gmt":"2011-06-28T04:30:53","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=2494"},"modified":"2012-03-03T13:20:40","modified_gmt":"2012-03-03T12:20:40","slug":"android-screenshot","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2011\/06\/28\/android-screenshot\/","title":{"rendered":"Capture d&rsquo;\u00e9cran Android"},"content":{"rendered":"<p>Pour faire une capture d&rsquo;\u00e9cran d&rsquo;un p\u00e9riph\u00e9rique Android, il existe au moins 2 m\u00e9thodes (j&rsquo;n&rsquo;en connais pas d&rsquo;autre, pour l&rsquo;instant, mais cela n&rsquo;implique pas qu&rsquo;il n&rsquo;en existe pas <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/happy.gif\" alt=\"(lol)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> )&nbsp;:<\/p>\n<ul>\n<li>Installer le SDK d&rsquo;Android et utiliser\n<ul>\n<li>l&rsquo;application <em>Davilk Debug Monitor<\/em><\/li>\n<li>l&rsquo;outil <a href=\"\/whiler\/2011\/06\/30\/piloter-son-android\/\">MonkeyRunner<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Avoir un t\u00e9l\u00e9phone <em>root\u00e9<\/em><\/li>\n<li>Utiliser des applications tierces<\/li>\n<\/ul>\n<p>Vous pouvez trouver des informations sur le <a target=\"_blank\" href=\"https:\/\/www.android-software.fr\/android-sdk-tools\">blog de Lorand<\/a> concernant ces m\u00e9thodes.<\/p>\n<p>Ce qui m&rsquo;int\u00e9resse, c&rsquo;est plus le comment fait le <a title=\"Davilk Debug Monitor\" href=\"\/whiler\/wp-content\/uploads\/2011\/06\/ddms.png\">DDMS<\/a> pour obtenir une capture&#8230; s&rsquo;il en est capable, je devrais aussi pouvoir le faire sans passer par lui&#8230;<\/p>\n<p>Du coup, j&rsquo;ai lanc\u00e9 mon <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Eclipse_(logiciel)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Eclipse\" style=\"\" >Eclipse<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> pour faire un vrai projet <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Java_(technique)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Java\" style=\"\" >Java<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>, et non pas un projet <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Android\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Android\" style=\"\" >Android<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>.<\/p>\n<p>J&rsquo;ai inclus au nouveau projet une biblioth\u00e8que du <a target=\"_blank\" href=\"https:\/\/developer.android.com\/sdk\/\">SDK d&rsquo;Android<\/a>, <em>ddmlib.jar<\/em>.<br \/>\n<div id=\"attachment_2496\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/ddmlib.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2496\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/ddmlib-300x193.jpg\" alt=\"ddmlib.jar\" title=\"ddmlib.jar\" width=\"300\" height=\"193\" class=\"size-medium wp-image-2496\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/ddmlib-300x193.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/ddmlib.jpg 760w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2496\" class=\"wp-caption-text\">ddmlib.jar<\/p><\/div><\/p>\n<p>Puis, j&rsquo;ai cr\u00e9\u00e9 deux classes&nbsp;:<\/p>\n<ul>\n<li>Une pour <em>parser<\/em> les arguments que j&rsquo;envoie en ligne de commande<\/li>\n<li>Une pour aller r\u00e9cup\u00e9rer la capture d&rsquo;\u00e9cran<\/li>\n<\/ul>\n<p><!--more--><br \/>\nLa classe pour les arguments est bas\u00e9e sur <a target=\"_blank\" href=\"https:\/\/www.devx.com\/tips\/Tip\/13004\">cet exemple<\/a>.<br \/>\nLe code de cette classe dans mon impl\u00e9mentation est le suivant&nbsp;:<\/p>\n<div class=\"codecolorer-container java dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">org.whiler.helper<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.*<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> ArgumentsParser <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">private<\/span> Vector<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; params&nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Vector<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">private<\/span> Hashtable<span class=\"sy0\">&lt;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a>, String<span class=\"sy0\">&gt;<\/span> options &nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Hashtable<span class=\"sy0\">&lt;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a>, String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; paramIndex&nbsp; <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">public<\/span> ArgumentsParser<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a><span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span> args<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> i <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> i <span class=\"sy0\">&lt;<\/span> args.<span class=\"me1\">length<\/span><span class=\"sy0\">;<\/span> i<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">startsWith<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">startsWith<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> loc <span class=\"sy0\">=<\/span> args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">indexOf<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;=&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> key <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>loc <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">?<\/span> args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">substring<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span>, loc<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">:<\/span> args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">substring<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> value <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>loc <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">?<\/span> args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">substring<\/span><span class=\"br0\">&#40;<\/span>loc <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; options.<span class=\"me1\">put<\/span><span class=\"br0\">&#40;<\/span>key.<span class=\"me1\">toLowerCase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>, value<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; params.<span class=\"me1\">addElement<\/span><span class=\"br0\">&#40;<\/span>args<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> hasOption<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> opt<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> options.<span class=\"me1\">containsKey<\/span><span class=\"br0\">&#40;<\/span>opt.<span class=\"me1\">toLowerCase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getOption<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> opt<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a><span class=\"br0\">&#41;<\/span> options.<span class=\"me1\">get<\/span><span class=\"br0\">&#40;<\/span>opt.<span class=\"me1\">toLowerCase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> nextParam<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>paramIndex <span class=\"sy0\">&lt;<\/span> params.<span class=\"me1\">size<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a><span class=\"br0\">&#41;<\/span> params.<span class=\"me1\">elementAt<\/span><span class=\"br0\">&#40;<\/span>paramIndex<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Sur la <a href=\"\/whiler\/2011\/06\/28\/android-screenshot\/2\/\">page suivante<\/a>, le code pour la connexion au p\u00e9riph\u00e9rique et la r\u00e9cup\u00e9ration de l&rsquo;image&#8230;<br \/>\n<!--nextpage--><br \/>\nPour r\u00e9cup\u00e9rer une image, il faut&nbsp;:<\/p>\n<ol>\n<li>Se connecter \u00e0 ADB avec <code class=\"codecolorer java dawn\"><span class=\"java\">AndroidDebugBridge.<span class=\"me1\">createBridge<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;&lt;Chemin vers ADB&gt;&quot;<\/span>, <span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/span><\/code><\/li>\n<li>R\u00e9cup\u00e9rer la liste des p\u00e9riph\u00e9riques disponibles, <code class=\"codecolorer java dawn\"><span class=\"java\">getDevices<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/span><\/code><\/li>\n<li>Appeler la m\u00e9thode <code class=\"codecolorer java dawn\"><span class=\"java\">getScreenshot<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/span><\/code> pour finalement r\u00e9cup\u00e9rer la capture<\/li>\n<\/ol>\n<p>Vous pouvez tester le JAR que j&rsquo;ai g\u00e9n\u00e9r\u00e9 en le t\u00e9l\u00e9chargeant depuis <a href=\"https:\/\/www.whiler.com\/freewares\/download?wgetscreenshot.jar\">ce lien<\/a>. Pour l&rsquo;utiliser, ouvrez une invite de commande en passant les param\u00e8tres requis&nbsp;:<\/p>\n<ul>\n<li>java -jar wGetScreenshot.jar -adb=&quot;&lt;Chemin vers le SDK Android&gt;\\android-sdk\\platform-tools\\adb.exe&quot; -png=&quot;&lt;Chemin avec le nom du fichier PNG \u00e0 g\u00e9n\u00e9rer&gt;&quot;<\/li>\n<li>Vous pouvez ajouter&nbsp;:\n<ul>\n<li> -L pour le mode paysage<\/li>\n<li>-e pour faire une capture depuis l&rsquo;\u00e9mulateur<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div id=\"attachment_2529\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/capture.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2529\" src=\"\/whiler\/wp-content\/uploads\/2011\/06\/capture-300x172.jpg\" alt=\"Capture\" title=\"Capture\" width=\"300\" height=\"172\" class=\"size-medium wp-image-2529\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/capture-300x172.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/capture-1024x590.jpg 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2011\/06\/capture.jpg 1536w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-2529\" class=\"wp-caption-text\">Capture<\/p><\/div>\n<p>Vous pouvez facilement am\u00e9liorer ce code. Je l&rsquo;ai test\u00e9 en faisant des captures aussi bien sur un vrai t\u00e9l\u00e9phone que sur un \u00e9mulateur.<\/p>\n<div class=\"codecolorer-container java dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/>141<br \/>142<br \/>143<br \/>144<br \/>145<br \/>146<br \/>147<br \/>148<br \/>149<br \/>150<br \/>151<br \/>152<br \/>153<br \/>154<br \/>155<br \/>156<br \/>157<br \/>158<br \/>159<br \/>160<br \/>161<br \/>162<br \/>163<br \/>164<br \/>165<br \/>166<br \/>167<br \/>168<br \/>169<br \/>170<br \/>171<br \/>172<br \/>173<br \/>174<br \/>175<br \/>176<br \/>177<br \/>178<br \/>179<br \/>180<br \/>181<br \/>182<br \/>183<br \/>184<br \/>185<br \/>186<br \/>187<br \/>188<br \/>189<br \/>190<br \/>191<br \/>192<br \/>193<br \/>194<br \/>195<br \/>196<br \/>197<br \/>198<br \/>199<br \/>200<br \/>201<br \/>202<br \/>203<br \/>204<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">org.whiler.helper<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.awt.image.BufferedImage<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.io.File<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.io.IOException<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.imageio.ImageIO<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.android.ddmlib.AndroidDebugBridge<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.android.ddmlib.IDevice<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.android.ddmlib.RawImage<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.android.ddmlib.TimeoutException<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> GetScreenshot <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_OK &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_WRONG_PARAMS &nbsp;<span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_NO_LIST &nbsp; &nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_NOTHING_FOUND <span class=\"sy0\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_NO_MATCH &nbsp; &nbsp; &nbsp;<span class=\"sy0\">=<\/span> <span class=\"nu0\">4<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">final<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> RC_NO_SNAPSHOT &nbsp; <span class=\"sy0\">=<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <br \/>\n&nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">void<\/span> main<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a><span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span> args<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span>getSnapshot<span class=\"br0\">&#40;<\/span>args<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> getSnapshot<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> sADB, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> sPng, <span class=\"kw4\">boolean<\/span> bDevice, <span class=\"kw4\">boolean<\/span> bEmulator, <span class=\"kw4\">boolean<\/span> bLandscape, <span class=\"kw4\">int<\/span> iTimeOut<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">int<\/span> &nbsp; &nbsp; &nbsp; &nbsp; iLoop<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedimage\"><span class=\"kw3\">BufferedImage<\/span><\/a> &nbsp; biSnapshot<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; AndroidDebugBridge&nbsp; adbBridge<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; IDevice &nbsp; &nbsp; &nbsp; dDevices<span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; IDevice &nbsp; &nbsp; &nbsp; dTarget &nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; RawImage&nbsp; &nbsp; &nbsp; riSnapshot&nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; AndroidDebugBridge.<span class=\"me1\">init<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">false<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; adbBridge <span class=\"sy0\">=<\/span> AndroidDebugBridge.<span class=\"me1\">createBridge<\/span><span class=\"br0\">&#40;<\/span>sADB, <span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; iLoop &nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>adbBridge.<span class=\"me1\">hasInitialDeviceList<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">&#40;<\/span>iLoop <span class=\"sy0\">&lt;=<\/span> <span class=\"br0\">&#40;<\/span>iTimeOut <span class=\"sy0\">*<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+thread\"><span class=\"kw3\">Thread<\/span><\/a>.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span>100L<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+interruptedexception\"><span class=\"kw3\">InterruptedException<\/span><\/a> e<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; e.<span class=\"me1\">printStackTrace<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; iLoop<span class=\"sy0\">++;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>iLoop <span class=\"sy0\">&gt;<\/span> <span class=\"br0\">&#40;<\/span>iTimeOut <span class=\"sy0\">*<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Impossible d'obtenir les p\u00e9riph\u00e9riques<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Cannot get the list of device\/emulator&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; AndroidDebugBridge.<span class=\"me1\">terminate<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_NO_LIST<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; dDevices <span class=\"sy0\">=<\/span> adbBridge.<span class=\"me1\">getDevices<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>dDevices.<span class=\"me1\">length<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Aucun p\u00e9riph\u00e9rique trouv\u00e9<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;No device\/emulator found!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; AndroidDebugBridge.<span class=\"me1\">terminate<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_NOTHING_FOUND<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>bEmulator <span class=\"sy0\">||<\/span> bDevice<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> iLoopDevice <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> iMaxDevice <span class=\"sy0\">=<\/span> dDevices.<span class=\"me1\">length<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Recherche le bon type de p\u00e9riph\u00e9rique<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>dTarget <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">&#40;<\/span>iLoopDevice <span class=\"sy0\">&lt;<\/span> iMaxDevice<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>dDevices<span class=\"br0\">&#91;<\/span>iLoopDevice<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">isEmulator<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> bEmulator<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>dDevices<span class=\"br0\">&#91;<\/span>iLoopDevice<span class=\"br0\">&#93;<\/span>.<span class=\"me1\">isEmulator<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> bDevice<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dTarget <span class=\"sy0\">=<\/span> dDevices<span class=\"br0\">&#91;<\/span>iLoopDevice<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; iLoopDevice<span class=\"sy0\">++;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>dTarget <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;No matching device\/emulator found!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; AndroidDebugBridge.<span class=\"me1\">terminate<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_NO_MATCH<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration du snapshot<\/span><br \/>\n&nbsp; &nbsp; &nbsp; riSnapshot <span class=\"sy0\">=<\/span> dTarget.<span class=\"me1\">getScreenshot<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span>TimeoutException te<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; te.<span class=\"me1\">printStackTrace<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Timeout when getting spnapshot!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span>com.<span class=\"me1\">android<\/span>.<span class=\"me1\">ddmlib<\/span>.<span class=\"me1\">AdbCommandRejectedException<\/span> acre<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; acre.<span class=\"me1\">printStackTrace<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Adb has rejected the request!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+ioexception\"><span class=\"kw3\">IOException<\/span><\/a> ioe<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; ioe.<span class=\"me1\">printStackTrace<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;IO exception!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Mode paysage<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>bLandscape <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">&#40;<\/span>riSnapshot <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; riSnapshot <span class=\"sy0\">=<\/span> riSnapshot.<span class=\"me1\">getRotated<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>riSnapshot <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; biSnapshot <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedimage\"><span class=\"kw3\">BufferedImage<\/span><\/a><span class=\"br0\">&#40;<\/span>riSnapshot.<span class=\"me1\">width<\/span>, riSnapshot.<span class=\"me1\">height<\/span>, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedimage\"><span class=\"kw3\">BufferedImage<\/span><\/a>.<span class=\"me1\">TYPE_INT_ARGB<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> iIndex <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> iDelta <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>riSnapshot.<span class=\"me1\">bpp<\/span> <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> iY <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> iY <span class=\"sy0\">&lt;<\/span> riSnapshot.<span class=\"me1\">height<\/span><span class=\"sy0\">;<\/span> iY<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> iX <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> iX <span class=\"sy0\">&lt;<\/span> riSnapshot.<span class=\"me1\">width<\/span><span class=\"sy0\">;<\/span> iX<span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; biSnapshot.<span class=\"me1\">setRGB<\/span><span class=\"br0\">&#40;<\/span>iX, iY, riSnapshot.<span class=\"me1\">getARGB<\/span><span class=\"br0\">&#40;<\/span>iIndex<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iIndex <span class=\"sy0\">+=<\/span> iDelta<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a> fPng <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a><span class=\"br0\">&#40;<\/span>sPng<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ImageIO.<span class=\"me1\">write<\/span><span class=\"br0\">&#40;<\/span>biSnapshot, <span class=\"st0\">&quot;png&quot;<\/span>, fPng<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;PNG file created&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_OK<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+ioexception\"><span class=\"kw3\">IOException<\/span><\/a> e<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; e.<span class=\"me1\">printStackTrace<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Cannot create the PNG!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_NO_SNAPSHOT<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <br \/>\n&nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">int<\/span> getSnapshot<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a><span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span> args<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a>&nbsp; &nbsp; &nbsp; &nbsp; sADB&nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a>&nbsp; &nbsp; &nbsp; &nbsp; sPng&nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">boolean<\/span> &nbsp; &nbsp; &nbsp; bDevice &nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">boolean<\/span> &nbsp; &nbsp; &nbsp; bEmulator <span class=\"sy0\">=<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">boolean<\/span> &nbsp; &nbsp; &nbsp; bLandscape&nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">int<\/span> &nbsp; &nbsp; &nbsp; &nbsp; iTimeOut&nbsp; <span class=\"sy0\">=<\/span> <span class=\"nu0\">10<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Parsing des arguments<\/span><br \/>\n&nbsp; &nbsp; ArgumentsParser &nbsp; ap &nbsp;&nbsp; &nbsp; <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ArgumentsParser<span class=\"br0\">&#40;<\/span>args<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Arguments obligatoires<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;adb&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;png&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; sADB <span class=\"sy0\">=<\/span> ap.<span class=\"me1\">getOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;adb&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; sPng <span class=\"sy0\">=<\/span> ap.<span class=\"me1\">getOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;png&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Check ADB path<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a><span class=\"br0\">&#40;<\/span>sADB<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">exists<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;adb path is not valid!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot; &nbsp;&quot;<\/span> <span class=\"sy0\">+<\/span> sADB<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_WRONG_PARAMS<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Check PNG folder<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> sPngPath <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a><span class=\"br0\">&#40;<\/span>sPng<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">getParent<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">+<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a>.<span class=\"me1\">separatorChar<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+file\"><span class=\"kw3\">File<\/span><\/a><span class=\"br0\">&#40;<\/span>sPngPath<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">exists<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;The directory where the PNG should be generated must already exist!&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">err<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot; &nbsp;&quot;<\/span> <span class=\"sy0\">+<\/span> sPngPath<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_WRONG_PARAMS<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Optional arguments<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;d&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bDevice <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;e&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bEmulator <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><span class=\"br0\">&#40;<\/span>bDevice <span class=\"sy0\">||<\/span> bEmulator<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bDevice <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;l&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; bLandscape <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">hasOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;timeout&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iTimeOut <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+integer\"><span class=\"kw3\">Integer<\/span><\/a>.<span class=\"me1\">parseInt<\/span><span class=\"br0\">&#40;<\/span>ap.<span class=\"me1\">getOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;timeout&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+numberformatexception\"><span class=\"kw3\">NumberFormatException<\/span><\/a> e<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Invalid timeout value:&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot; &nbsp;&quot;<\/span> <span class=\"sy0\">+<\/span> ap.<span class=\"me1\">getOption<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;timeout&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Using default value: 10s&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; printUsage<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> RC_WRONG_PARAMS<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> getSnapshot<span class=\"br0\">&#40;<\/span>sADB, sPng, bDevice, bEmulator, bLandscape, iTimeOut<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw1\">static<\/span> <span class=\"kw4\">void<\/span> printUsage<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;java -jar wGetScreenshot.jar -adb=&lt;Full path to adb application&gt; -png=&lt;Full path to the png to generate&gt; [-d] [-e] [-l] [-timeout=5]&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;You need to specify 2 arguments:&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-adb=&lt;Full path to adb application&gt;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-png=&lt;Full path to the png to generate&gt;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;Optional:&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-d: device&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-e: emulator&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-l: landscape (instead of the default portrait)&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;-timeout=&lt;timeout in second&gt; (Default = 10s)&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/whiler\/wp-content\/uploads\/2010\/08\/stat_sys_warning_red.png\" alt=\"Attention !!!\" title=\"Attention !!!\" width=\"32\" height=\"32\" class=\"size-full wp-image-1503\" \/> <strong>Java et le <a target=\"_blank\" href=\"https:\/\/developer.android.com\/sdk\/\">SDK d&rsquo;Android<\/a> doivent \u00eatre install\u00e9s pour que le <a href=\"https:\/\/www.whiler.com\/freewares\/download?wgetscreenshot.jar\">JAR<\/a> puisse fonctionner&nbsp;!<\/strong> Le <a href=\"\/whiler\/2011\/06\/24\/adb-pour-htc-desire-windows-7\/\">pilote ADB<\/a> pour votre t\u00e9l\u00e9phone doit \u00e9galement \u00eatre install\u00e9. Votre t\u00e9l\u00e9phone doit \u00eatre sur le mode <a href=\"\/whiler\/wp-content\/uploads\/2011\/06\/debug.png\">d\u00e9bogage USB<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour faire une capture d\u2019\u00e9cran d\u2019un p\u00e9riph\u00e9rique Android, il existe au moins 4 m\u00e9thodes&#8230;<\/p>\n<p>Ce qui m\u2019int\u00e9resse, c\u2019est plus le comment fait le DDMS pour obtenir une capture\u2026 s\u2019il en est capable, je devrais aussi pouvoir le faire sans passer par lui\u2026<\/p>\n<p>Du coup, j\u2019ai lanc\u00e9 mon Eclipse pour faire un vrai projet Java, et non pas un projet Android&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[6],"tags":[125,158,27,93,134,108],"class_list":["post-2494","post","type-post","status-publish","format-standard","hentry","category-dev","tag-b3lly","tag-android","tag-coloration-syntaxique","tag-freeware","tag-java","tag-script"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=2494"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/2494\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=2494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=2494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=2494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}