顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2015年8月25日 星期二

如何透過 adb command 取得Android CPU 資訊

        將手機連上電腦後在 console Mode 下執行 "adb shell cat /proc/cpuinfo" 即可得到如下訊息,如果手機是四核心則會出現四次一樣的訊息。

~$ adb shell cat /proc/cpuinfo

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model  : 90
model name : Intel(R) Atom(TM) CPU  Z3560  @ 1.00GHz
stepping : 0
microcode : 0x34
cpu MHz  : 500.000
cache size : 1024 KB
physical id : 0
siblings : 4
core id  : 0
cpu cores : 4
apicid  : 0
initial apicid : 0
fpu  : yes
fpu_exception : yes
cpuid level : 11
wp  : yes
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms

[參考鏈結]

2014年10月4日 星期六

建立使用者自訂的 Android 裝置

        當透過 Android Virtual Device (AVD) Manager 建立 AVD 時,Device 只能選擇已內建好的裝置,如下圖所示:

        當這些內建裝置的解析度與硬體設定剛好符合你的需求時並沒有任何問題,但如果想要不一樣的設定;如解析度、記憶體大小、Keyboard...等等。這時你就必須自己制訂符合需求的 Android Device,建立的步驟如下:

  1. 開啟  Android Virtual Device (AVD) Manager 切換到 Device Definitions,選擇一個與你需求最接近的 Device後,按 Clone 按鈕,如下圖所示:(PS: 使用 ADT 23.0.4.1468518 按 Create Device... 按鈕並無法成功建立使用者自訂裝置)。

  2. 在 Clone Device 畫面,填入你所需的設定值,如下圖所示:

  3. 建立完成後,你會在 Device 清單畫面中看到你剛剛所定義的裝置,往後你就可以建立你剛剛所自訂的 Android 虛擬裝置。

        當你建立完自訂的 Android 裝置後,你可以在 ~/.android/devices.xml 檔案中找到你剛剛所建立的資訊。

自動產生Ant build script 檔案

假設你的專案存放在 C:\AndroidProject\Hello,在 console window 下,執行下列指令即可:

android update project –p .

另外如果你的專案含有 appcompat_v7 ,也必須到該目錄下執行上面的指令。

執行完指令後會在專案的資料夾內產生 build.xml 與 local.properties 兩個檔案。local.properties 的內容是設定 android SDK Home 的目錄,你可以自行修改指定到其他路徑下,如果你沒有特殊的需求,基本上都不需要去修改這些檔案。

之後你就可在C:\AndroidProject\Hello 目錄下,透過 ant 來編譯你的Android 專案了。範例如下:

ant clean release
ant clean debug

2014年7月20日 星期日

解決 Eclipse Graphical layout 無法顯示的問題

         建立一個簡單的 Android App 一開始 Graphical Layout 上面還有畫面,但是放了幾個 TextView與 EditText 後發現 Graphical Layout 竟然沒有畫面,而 Graphical Layout 提示執行 Eclipse 中的 Windows>Show View> Error Log,發現錯誤訊息為  "java.lang.NoSuchMethodError: java.lang.System.arraycopy([CI[CII)V ..." 上網查詢發現 "Android version to use when rendering layouts in Eclipse" 不可以選擇 Android 4.4W。
        剛剛稍微小試了一下,擺上  TextView 還可以正常顯示,一旦放上 EditText 就無法顯示了。下面圖示是設定的方式:

[參考文章]

[關鍵字]
  • java.lang.System.arraycopy([CI[CII)V

建立含有軌跡球(trackball) 的Android 模擬器

         在 Android Emulator 文章提到,我們可以透過按 F6 來啟動模擬器的 trackball mode,但如果你在建立模擬器時沒有將 input 設定為 trackball 則在按 F6 鍵後模擬器是不會出現 軌跡球讓你來操作。

         要建立含有軌跡球的 Android 模擬器,你可以先開啟 Android Virtual Device(AVD) Manager,在 Device Definitions 頁面中尋找已經有將 trackball 設定為 input 的 Device 或者你可以自己建立一個,這邊我找到 Nexus One by Google 已經有設定好了,請參考下面畫面:

     
          接下來切換到 Android Virtual Devices 頁面,按 "Create..." 按鈕,在Device 選項中選擇 "Nexus One by Google" 或者你自己建立的 Device。請參考下面圖示:


        其他選項依照之前建立的 Android 模擬器填入相關的資訊即可。當你啟動 Android 模擬器後,按 F6 便可進入 Trackball mode 再按一次 F6 便可離開 Trackball mode。當你在 Trackball mode 下你會發現 Android 模擬器的左上角會出現 Trackball,便可透過滑鼠來操作 Trackball。下面圖示顯示模擬器在 Trackball mode 的樣子。

2014年7月6日 星期日

android.support cannot be resolved ?

今天將 ApiDemos import 進來做編譯,發現 PrintBitmap.java 無法編譯,原來它使用了
"android.support.v4" 的 package。錯誤訊息如下圖所示:


要解決這個問題你可以先透過 "Android SDK Manager" 安裝  Extras >> Android Support Library。 如下圖所示:



之後 選擇該專案 >> 按右鍵 >> Properties >> Java Build Path >> Add External JARs...



 將 android-support-v4.jar 檔案加入即可,路徑如下: 
<Android SDK 安裝路徑>\extras\android\support\v4\android-support-v4.jar


在 support 資料夾下除了 v4 還有 v7 與 v13,如果又遇到相同的情況可以將其相對應使用到的 package 加入專案即可編譯。

[參考文章]

2013年12月2日 星期一

修改 Android Emulator 的 Abstracted LCD density

      如果你用 ADT 來編輯目前 AVD 的 Abstracted LCD density 值時,你會發現在 Hardware 欄位那邊你只能下拉選擇數值而不能填入你想要的值,如下圖所示:
    注意:因為這個 AVD 我是用舊版的 ADT 所產生的,所以還看的到Hardware 的屬性設定。新版的,你可以在 Device Definitions 頁面,按 【New Device...】在新增裝置時設定,但我找不到可以設定 LCD density的數值,它似乎會根據你所設定螢幕解析度的是屬於 ldpi 或者 mdpi 來填入預設的數值。不過修改 LCD density 的方式是一樣的。

     從上圖你可以看到只有 120 、160、240...等數值可以選擇,而且你無法修改。修改的方式是到你的 .android 目錄下找到 AVD 資料夾,然後開啟 config.ini 檔案,修改 【hw.lcd.density】的數值即可。如下圖所示:


2013年11月17日 星期日

解決 HTC One SV 更新後 "開發者選項" 不見的問題

    昨天更新我的 HTC One SV 後,今天發現開發者選項竟然不見了,上網查到的解決方式如下:
          設定>關於>軟體資訊>更多>狂按 建置號碼


參考資料:

2013年7月24日 星期三

error: Error: No resource type specified (at 'text' with value '@').

    今天要在  android:text 中填入 '@' 字元時 , 在編譯的時候出現這個錯過訊息訊息, 解決這問題就是在前面填入反斜線 ' \ ' 就解決問題了. android:text="\@123".  :)

    出現這個錯誤訊息是因為  @ 在 android xml 中是有意義的

Refer to:
http://stackoverflow.com/questions/8753431/at-the-beginning-of-edittext-value

2013年6月26日 星期三

解決 Export Signed Application Package... 出現 " ... is not translated in ..." 的問題

    今天想嘗試執行 Export Signed Application Package...時,出現  "... is not translated in..."的 Fatal Error,如下圖所示:

    而其實引起這個問題的原因與解法就寫在右邊的訊息視窗中,可以參考上面的圖示。而下面是我自己驗證過確實可以解決這個問題。

解法 一:
    執行 Window -> Preferences,點選 Android -> Lint Error Checking,
    將 Lint 的 Missing Translation 項目從 Fatal 改為 Warning. 如下圖所示:
   

解法 二:
     將 translatable="false" 加入倒出現錯誤訊息的字串中,如下圖所示:



[關鍵字]
Android is not translated in 

[參考鏈結]



如何新增 Android XML 檔案

      在很多時候我們需要自己新增 Android XML 檔案,例如要支援多國語言、針對不同的螢幕大小、或者螢幕操作的方向 (port直向 / land 橫向)...等等的替代選擇性資源內容。
      透過 ADT 的工具我們可以很簡單的建立新的 Android XML 檔案,方法如下:

1. 點選工具列的按鈕,如下圖所示:

2. 選擇要加入的資源型態:

3. 填入檔案名稱,這邊我們不需要填入副檔名,當建立後 ADT 會幫我加入。另外如果要建立替代選擇性資源,可按下圖的 Next 按鈕繼續設定裝置設定屬性。否則,直接按 Finish 即可在預設的資料夾(如: layout、value、drawable...etc. )內產生該檔案。

1-2. 如果不點選工具列的按鈕,也可以透過點選專案,右鍵-> Android Tools -> New Resources File... 來叫出 步驟 2 的新增 Android XML 對話框。


1-3. 步驟 2 的新增 Android XML 對話框的方式也可以透過點選專案,右鍵-> New-> Android XML File 來執行。

    另外,如果你想要新增的是翻譯,則可以透過 Android Graphical Layout 來快速產生簡單的替代選擇性資源資料夾 (只能設定 Language 與 Region,無法設定其他條件 如 ldpi/mdpi 或者 port/land...etc.)與空的 strings.xml 檔案,實際做法請參考下圖:





2013年6月20日 星期四

TextView - 顯示上下左右相反文字

     想要在 TextView 中將文字上下左右相反顯示可以將 android:scaleX 與 android:scaleY 屬性設定為 -1f 即可,程式碼如下:
    
<textview 
   android:id="@+id/tv" 
   android:layout_height="wrap_content" 
   android:layout_width="wrap_content" 
   android:scalex="-1f" 
   android:scaley="-1f" 
   android:text="@string/hello_world"/>
設定後的結果如下圖所示:

     另外除了直接透過設定 xml 檔案來完成上下左右文字的顯示,你也可以用 setScaleX(float)setScaleY(float)  方法在程式碼中做動態的設定。方法如下:

TextView tv = (TextView)findViewById(R.id.tv);
tv.setScaleX(-1f);
tv.setScaleY(-1f);

[參考連結]
http://www.javaworld.com.tw/jute/post/view?bid=26&id=309372

2013年6月12日 星期三

解決 Android Emulator 無法啟動的問題

      今天想要透過 Android Virtual Device Manager 啟動 AVD,但是啟動的過程發生警告的訊息如下:
       Starting emulator for AVD 'Android_4.0.3'
       WARNING: Data partition already in use. Changes will not persist!
       WARNING: SD Card image already in use: C:\Documents and    
       Settings\Josh\.android\avd\Android_4.0.3.avd/sdcard.img
       ko:Snapshot storage already in use: C:\Documents and
       Settings\Josh\.android\avd\Android_4.0.3.avd/snapshots.img
或者參考下圖

上網查了一些資料,也嘗試了一些方法但是目前唯一有效的就是在 "Using Eclipse for androidSDK, when I go to run, I get WARNING: Data partition already in use. Changes will not persist!" 看到的解決方法,就是刪除在 .android\avd\[your_device].avd 資料夾底下的所有
XXX.XXX.lock 的資料夾,請參考下面圖檔。 刪除後,模擬器終於又恢復作用囉。


2013年6月8日 星期六

ADT 設定 Preview All Screens 與 All Locales 查看所有Layout 與 語言的效果

        當我們要開發多國語言或者給多個不同螢幕大小裝置的 App 時,我們可以先透過 設定 Preview All Locales 與 Preview All Screens 來查看其顯示的效果。設定後的結果請參考下面的圖示。


利用 ImageView background 與 src 來合併兩張小 icon

     在某些情況下我們需要將兩張小 icon 合併來顯示成一張小icon。例如我們有很多 icons 而他們的背景圖示都一樣,只有中間的圖示不同,此時我們可以只準備一張背景圖示,另外準備其他不同的小圖示且其背景必須是 transparent 。一切準備好之後我們就可以設定利用background 與 src 屬性來設定圖示,來產生合併的效果,如下圖所示。

      上面圖示的 layout_width 與 layout_height 都是指定 wrap_content,最右邊的為 ImageButton,另外兩個則為 ImageView。使用 wrap_content 時,其 ImageView 大小視 backgroud 或 src 圖示中何者為大。也就是說當你準備的src 大於 background image時,background 圖示有可能被 src 的圖示所掩蓋而無法看出效果。

      另外 backgroud 與 scr的不同是, background 的圖示會根據 ImageView的大小做縮放,且不會保持原本圖示的比例,但是 src 則會保持 原圖的長寬比例做等比例的縮放。

     如果你不想讓 src 做等比例縮放,可以而外設定  android:scaleType="center" ,其效果可以參考中間的小圖示。最左邊圖示只簡單的設定 background 與 src 的圖示,可以看到 src 的圖示被等比例縮放了。

[其他參考鏈結]




移除 [Accessibility] Missing contentDescription attribute on image 的警告

       不知何時加入 ImageView 時 Eclipse 在編輯 XML 視窗或者 Graphical Layout 視窗都會出現 Lint 的警告提示,如下圖:

       該警告是從 ATD 16 以後當你沒有設定 contentDescription 屬性給  ImageButton 與 ImageView 時,Lint 會提出 Missing contentDescription attribute on image 的警告。

       contentDescription 屬性的作用主要是要提供一些眼睛不方便的使用者,當使用者移到該物件上面或者點選此物件時,Android  的 Accessibility service 就可以透過 TTS 播放出 contentDescription  中的敘述,這些使用者即使看不見,目前所點選到的物件提供甚麼樣的服務。 詳細的資料可以參考 Accessibility Making Applications Accessible

      即使你對這個警告不理會的話程式還是依然可以順利執行,如果你覺得這個警告非常礙眼又不想要花費腦筋給該物件適當的敘述,你可以很簡單的直接填入下面的敘述到 ImageButton 與 ImageView的屬性當中,即可移除該警告:

android:contentDescription="@null"


[其他參考鏈結]





2013年6月1日 星期六

API Demo Installation error: INSTALL_FAILED_VERSION_DOWNGRADE and INSTALL_FAILED_CONFLICTING_PROVIDER

       今天試著安裝 Android SDK 裡面的範例專案 API  Demo,編譯完後要安裝到 Emulator 時,在 Console windows 卻出現 Installation error: INSTALL_FAILED_VERSION_DOWNGRADE 的問題,在 "Android Emulator: Installation error: INSTALL_FAILED_VERSION_DOWNGRADE" 上找到了解決方法,解決的方式有兩種:

  1. 在 Emulator 上移除相同名稱的 App 程式
  2. 在 AndroidManifest.xml 中加入 android:versionCode,目前我設定為 2 即可,如果不行的話可以試著調高數值。
      但調完後雖然不會出現 INSTALL_FAILED_VERSION_DOWNGRADE 的錯誤訊息,卻跑出了  INSTALL_FAILED_CONFLICTING_PROVIDER 的錯誤訊息,幸好在 "Android: INSTALL_FAILED_CONFLICTING_PROVIDER" 裡面也找到解決方法。解決的方法就是在
AndroidManifest.xml 中修改 android:authorities 的內容,同時必須修改有使用到該 provider的 java 檔案。
     
      話說好不容易終於安裝到 Emulator 上,但是執行 Animation 範例總是出現 ANR,真是無言了,不曉得是不是電腦不夠力還是其他問題,Anyway 今天就先這樣囉。

透過Eclipse 更新 Plug-in 後出現 Type R cannot be resolved to a variable

      今天透過 Eclipse "Check for updates" 去更新一些 plugin 後,在編譯 Android 時總是出現 "Type R cannot be resolved to a variable" 的問題,如下圖所示:

      我確定更新前是可以編譯成功,但不知為何更新完後卻無法編譯 Android project 了,之前更新都沒有遇到這樣的狀況;回想起來更新完後 Eclipse 有跳出一個視窗,但內容我倒是沒去注意,想說跟以前一樣要我重新啟動 Eclipse ,沒想到這次踩到地雷了...Orz.
    幸好似乎有不少人有類似的情況,上網 Google 了一下找到了─"Type R cannot be resolved to a variable" after Android SDK updated"。
     解決方式就是開啟 Android SDK Manager,沒意外應該會出現有可更新項目,將那些項目更新後就解決問題了。

    發生 Type R cannot be resolved to a variable 有很多原因,最主要是因為 R.java 無法自動產生出來,但是為何無法產生可能要去查看看 res 目錄下是否有任何錯誤。
    下面鏈結我是從 "“R cannot be resolved to a variable”?" 討論串中擷取出來的,如果發生的症狀並非與上面一樣的話,或許可以從下面找到你要的解答。

2013年5月24日 星期五

Android Graphical Layout 設定Fullscreen 與 直/橫 模式


  • 透過 Android Graphical Layout 切換 Portrait Mode 與 Landscape Mode:
  1. 點選專案中 Layout 的 XML 檔案
  2. 點選 Graphical Layout tab menu (基本上預設會選擇此選項,如果你有點選過 查看 xml 檔案的 tab menu,擇點選時還是會先開啟 查看 XML 的 tab menu,這時可以再點選Graphical Layout)
  3. 可以點選下圖中的圖示或者旁邊下拉的箭頭,選擇 Switch to Landscape,就可以將 Layout 切換成 Landscape Mode (如果則是做切換,可以直接按該圖示即可)。

  • 透過 Android Graphical Layout 將 Layout 特定成 Full Screen 的樣式來檢視:
  1. 在 Graphical Layout 下,點選 AppTheme後會彈出下拉選單。
  2. 選擇 Theme -> Theme.Black.No.TitleBar.FullScreen  即可;基本上你只要設定XXX.No.TitleBar.FullScreen 即可讓 Layout 呈現 Full Screen 的樣式來檢視。注意,這只是讓你檢視 Layout 在 Full Screen 下元件的布局,並不會因此讓你的Application變成 FullScreen。



  • 設定 Theme.Black.No.TitleBar.Fullscreen的效果如下



2013年5月22日 星期三

Android Full Screen Activity

要製作 Full Screen 的 Activity 的方法大致上分成下列兩種,

  1. 在 AndroidManifest.xml 中設定 Theme.NoTitleBar.Fullscreen。
  2. 在 Java 檔案中透過 requestWindowFeature + WindowManager.LayoutParams.FLAG_FULLSCREEN 或者 setTheme( ) 方法設定。
在 AndroidManifest.xml 檔案中設定, 假如你要讓你所有程式中的 Activity 都是 Full Screen 你可以加在 Application tag 下,而如果只要單純設定一個 Activity 則加入到你想要設定的 Activity tag 下。範例如下所示:

  • 套用整個程式的 Activity
<application
...
android:theme=

"@android:style/Theme.NoTitleBar.Fullscreen" >
</application>
  • 只套用在所設定的 Activity
<activity
android:theme=

"@android:style/Theme.NoTitleBar.Fullscreen" >
...
</activity>

在 java 檔案中設定,你可以將下面的程式碼加到 onCreate( ) method 之中

requestWindowFeature(Window.FEATURE_NO_TITLE);
 
//fullscreen

this.getWindow().setFlags(

     WindowManager.LayoutParams.FLAG_FULLSCREEN,
     WindowManager.LayoutParams.FLAG_FULLSCREEN );


或者
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);


完整的程式碼如下:

package com.example.fullscreendemo; import android.os.Bundle; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set Full screen in Java file method 1 //turn off the window's title bar //requestWindowFeature(Window.FEATURE_NO_TITLE); // fullscreen //this.getWindow().setFlags(
// WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN);
LinearLayout ll =
new LinearLayout(getApplicationContext());
ll.setOrientation(LinearLayout.VERTICAL);
ll.setGravity(/*Gravity.CENTER*/Gravity.TOP);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(lp);
ll.setBackgroundResource(
R.drawable.background2);
// Set Full screen in Java file method 2
setTheme(
android.R.style.Theme_NoTitleBar_Fullscreen);
setContentView(ll); }
}
另外,我發現透過程式碼設定 Full Screen,在 emulator 上面執行,會先看到原本含有 title bar的 Activity,然後才淡出變成 Full Screen (如下圖),而透過 AndroidManifest.xml 檔案設定則沒有這個問題,所以想要在一開始就設定 Full Screen 的 Activity,還是透過 AndroidManifest.xml 檔案設定比較理想。


範例的結果: