2009年6月29日

在ubuntu擷取Android手機畫面

要擷取Android手機畫面的方法,一種是直接在手機上安裝軟體,不過似乎都是要root權限才有辦法。我也有在網路上找過一個Screenshot軟體,不過由於我沒root,所以無法擷取。root權限好像是要刷ROM才有辦法獲得,我不太敢去亂動,怕出亂子。另一種方法是,手機連接電腦,透過電腦的軟體擷取手機畫面。

之前我有試過在Windows下抓畫面,只要參考這篇"擷取 Android 手機畫面",就可以輕易透過Windows擷取手機畫面,我有試過一次。可是由於最近我桌面環境改ubuntu了,所以我也去找在ubuntu擷取手機畫面的方法,我參考了以下兩篇也成功的做到了。
Taking Android phones screenshots from Ubuntu
DDMS and Ubuntu 8.10 64-bit

我的環境:
ubuntu 9.04、AMD 64 x2 5200+(特別提CPU是因為我碰到一個問題可能跟我裝了64位元本版有關)

方法如下:
1. 下載Android SDK並解壓縮。
2. 建立一個udev rule,以便讓DDMS可以透過USB存取Android手機。
sudo vi /etc/udev/rules.d/90-android.rules
加入這行然後存檔。
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
3. 手機打開debug mode。設定->應用程式->開發,如圖將USB debug打開。

4. 手機透過USB連上電腦(這步是廢話)
5. 到剛解壓縮SDK的目錄下的tools目錄,找到ddms並且執行。出現視窗之後,Device->Screen Capture或直接按ctrl+s就會出現擷取手機畫面的小視窗,然後就可以把畫面存下來。


對了,如果你的ubuntu沒裝過java,請記得先裝一下java jre。流程大概這樣就可以完成,不過如果跟我一樣執行ddms遇到這個問題:
09:19 E/ddms: shutting down due to uncaught exception
09:19 E/ddms: java.lang.UnsatisfiedLinkError: /home/lundi/Java/android-sdk-linux_x86-1.5_r2/tools/lib/libswt-pi-gtk-3236.so: /home/lundi/Java/android-sdk-linux_x86-1.5_r2/tools/lib/libswt-pi-gtk-3236.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1687)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
    at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
    at org.eclipse.swt.widgets.Display.<clinit>(Display.java:126)
    at com.android.ddms.UIThread.runUI(UIThread.java:329)
    at com.android.ddms.Main.main(Main.java:97)
這問題或許跟我用64位元ubuntu有關,就參考一下我上面第二個連結,解法就是:
1. 安裝ia32-sun-java6-bin。
2. 編輯ddms檔,第72行改為"java_cmd="/usr/lib/jvm/ia32-java-6-sun/bin/java"

沒有留言: