目前分類:Android 筆記 (2)

瀏覽方式: 標題列表 簡短摘要

嗯,整理出使用這項功能可能會用到何種函式的資料,透過這些關鍵字配合google應該足以完成需要的功能了。


手機資料

取SIM卡資料
透過getSystemService(TELEPHONY_SERVICE)取得 TelephonyManager物件,在透過其方法取得SIM卡資料(先生成Adapter,在從陣列撈)
取SIM卡狀態:getSimState() 回傳1-無sim卡,2-需PIN解鎖,3-需PUK解鎖,4-需Network PIN解鎖,5-已就緒,0-狀態未知
取SIM卡卡號:getSimSerialNumber()
取SIM卡供應商代碼:getSimOperator()
取SIM卡供應商名稱:getSimOperatorName()
取SIM卡國別:getSimCountryIso()


取得電信及手機相關資訊
TelephonyManager及android.provider.Settings.System(一樣先丟陣列或物件,再取)
ex:telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
取得手機號碼:getLine1Number()
取得電信網路國別:getNetworkCountryIso()
取得電信公司名稱:getPhoneType()
取得網路類型:getNetworkType()
取得手機IMEI:getDeviceId()
取得IMEI SV:getDeviceSoftwareVersion()
取得IMSI:getSubscriberId()


來電處理
onCallStateChanged


開啟WiFI、GFS
getSystemService、WiFiManager.isWiFiEnabled()、LocationManager.isProviderEnabled()


錄音
MediaRecorder、getExternalStorageState()、File.CreateTempFile、.setAudioSorece
setAudioSamplingRate()、setAudioEncodingBitRate()、setOutputFormat()、setAudioEncoder()


控制音量
AudioManager、getStreamVolume(AudioiManager.STREAM_RING)、getRingerMode()
AudioManager.ADJUST_LOWER、AudioManager.ADJUST_RAISE、
AudioManager.RINGER_MODE_NORMAL、AudioManager.RINGER_MODE_SILENT、AudioManager.RINGER_MODE_VIBRATE




基本

切換Activity
Intent

滑動的相片
Gallery

樣式主題
Style

取Drawable寬高
Bitmap、BitmapFactory.decodeResource()、getHeight()、getWidth();

取得螢幕寬高
DisplayMetrics、getWindowManager().getDefaultDisplay().getMetrics()、widthPixels、heightPixels

TextView - Linkify
透過Linkify依不同類型的文字(電話、郵件、連結)而呼叫不同的相對應程式開啟。

浮動訊息
Toast
可透過LinearLayout放入圖片丟給Toast,toast.setView(layout)

狀態列
NotificationManager、Notification、PendingIntent
可設定icon、tickerText(文字)、defaults(提醒效果)
提醒效果有:DEFAULT_SOUND(聲音)、DEFAULT_LIGHTS(螢幕發亮)、DEFAULT_VIBRATE(振動)、DEFAULT_ALL(三種都動作)

桌面小工具(Widget)
AppWidgetProvider、BroadcastReceiver去listen、onUpdate()

圖片透明度
Paint、setAlpha




功能性

app載入前播放影片
Uri.parse()、VideoVeiw、setOnCompletionListener


手勢滑動頁面效果
ViewFlipper,簡單來說就是透過觸控壓螢幕的位置X、Y滑動後始末座標去判斷位移,最後在呼叫動畫並切換到下個頁面。
onTouchEvent()、MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP、event.getX()、event.getX()、setInAnimation()、setOutAnimation()
另一方法:ViewGroup、Scroller、VelocityTracker


多點觸控Multi-touch
onTouchEvent、MotionEvent.getAction()、MotionEvent.ACTION_DOWN(UP)、MotionEvent.ACTION_POINTER_N(1234..)_DOWN(UP)
getPointerCount()、findPointerIndex()、getX()、getY()


換手機背景圖
setWallpaper()
取目前桌布:getWallpaper


變更螢幕方向
setRequestedOrientation()、getRequestedOrientation、LANDSCAPE、PORTRAIT、onSensorChanged、mSensorListener、
透過方向感應onSensorChanged偵測變化在進行變更螢幕方向,另變化後使用onConfigurationChanged進行改變後進行的事件。


定時啟動(鬧鐘、日曆提醒)
getSystemService(ALARM_SERVICE)、TimePickerDialog、AlarmManger、set、setRepeating、BroadcastReceiver


開機執行
onReceive() 繼承BroadcastReceiver


離開跳出訊息確認
AlertDialog.Builder() .setPositiveButton()  . setNegativeButton()
離開按鈕使用setOnClickListener去呼叫AleretDialog.Builder,並設定屬性若點選關閉或返回


隱藏式側選單
SlidingDrawer.setOnDrawerOpenListener() 開啟、SldingDrawer.setOnDrawerCloseListener() 關閉、GridView


解析RSS
SAXParser、SAXParserFactory、SAXParserFactory.newInstance()、newSAXParser()、getXMLReader()、MyHandler()
getParsedData()、getRssTitle()



以後再慢慢補齊吧,目前應該堪用了。
玩過iPad及華碩的變形金剛,深覺得有些軟體沒有寫橫置跟直立的不同activity對於操作上的感受真的會覺得很不方便。
※在res/下建立layout-land(橫)及layout-port(直)的資料夾,當開啟程式就會依照螢幕自動載入適合的Layout,至於模擬器要測試就用ctrl+F12

再來則是沒有抓螢幕大小來自動放大內容這部份在操作感受也是很令人不快。(絕對跟相對)

若有機會您搜尋到這篇文章,請記得將開發app時注意這兩個環節。
也期待您有好的作品能分享囉 !


文章標籤

ezcshi 發表在 痞客邦 留言(0) 人氣()

唉,痞客邦的API ScribeFire抓不到,只能登入寫文章了..

 

ok,因為iPhone造就了Android,也因"看起來"似乎寫程式就能賺大錢,想必越來越多人搶食app這塊大餅,殊不知寫程式跟好點子跟賺到錢是好幾回事。
※儘管iPhone是硬體,Android是軟體,但也因此讓世界刮起了智慧手機風潮,也才多了這些相關產業行業的興起,連帶的帶出了整個環境趨勢的變化。
總而言之,未來什麼都跟手機、行動設備都會扯上關係。

身為一個資訊產業的苦力,不小心扯上了,很合理是吧!??

不扯淡了,開始佈署筆記。

 

(翻書筆記→) Android系統其實是一種linux系統,而app是使用java語言,寫出來的java程式透過Dalvik虛擬機器在Android上運作。
google推薦使用Eclipse圖形開發介面,因為能夠透過plugin轉換後直接透過模擬器觀看寫出的程式。都推薦使用了,當然就用這套啦。

 

開發環境需要的環境 + 開發程式下載處整理如下

 

Java Development Kit (JDK)  http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html  ※撰寫本文時JDK7

Eclipse 開發IDE程式 for JEE http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigor  

Android SDK  http://developer.android.com/sdk/index.html   ※注意解壓縮後盡量解在硬碟根目錄,待會解釋

 

Android SDK更新
都下載安裝完成後,SDK解壓縮後可以看到裡面有個SDK Manager.exe,執行後會開始上網比對list。
進到左邊選單 Available packages ,將右方 Android Repository 勾選 (至於下方 Third party Add-ons 第三方套件個人也勾了,但目前還沒用到)後安裝。

 

Eclipse 環境安裝 Android Development Tools
開啟Eclipse後,點選 help / Install New Software
在Work with後方輸入網址 https://dl-ssl.google.com/android/eclipse
輸入後稍微等一下後下方會出現Develop Tools,勾選後安裝。

 

Eclipse連結SDK
重新啟動Eclipse後,進入Window / Preferences
左方選擇Android後,在SDK Location輸入剛剛SDK解壓縮的位置。 按Apply後OK,讓它連結。

 

※因為要測試模擬器是否能夠運作,所以先建立一個專案測試。

Eclipse建立專案
進入Eclipse 後, New / Android Project
輸入專案名稱後,Build Target 挑選預設要運作的Android版本。
注意Package name 格式為 " *.* " ,必須要兩個字串用 . 連一起,例如: inc.test

        

完成後用模擬器來執行這專案,點工作列的小圖示或 Run / Run (Ctrl+F11)

 

建立Android Virtual Devices
當按下小圖示或執行後,跳出的視窗選擇New
自行定義名稱,例如DAVID_2.3
自己定義模擬器的空間及螢幕資料,要注意的是Target 必須跟一開始設定的專案同一版本,否則運作會出現如下錯誤。
錯誤訊息: Still no compatible AVDs with target 'Android 2.3.3': Aborting launch.
接下來就能運作囉。

 

若出現如下錯誤訊息
[2011-08-03 13:32:48 - InfoProductApp] ------------------------------
[2011-08-03 13:32:48 - InfoProductApp] Android Launch!
[2011-08-03 13:32:48 - InfoProductApp] adb is running normally.
[2011-08-03 13:32:48 - InfoProductApp] Performing com.ipp.InfoProductApp activity launch
[2011-08-03 13:32:48 - InfoProductApp] Automatic Target Mode: launching new emulator with compatible AVD 'Android_1.5'
[2011-08-03 13:32:48 - InfoProductApp] Launching a new emulator with Virtual Device 'Android_1.5'
[2011-08-03 13:32:48 - Emulator] invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
[2011-08-03 13:32:48 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-08-03 13:32:48 - Emulator] please use -help for more information

根據此篇文章的說法,就是路徑因為windows的命令字元模式下,路徑過長會變成~1收尾,導致路徑錯誤而無法運作
解決方式就是盡量換到根目錄下,路徑才不會因過長而出錯。  這也是一開始為什麼說最好放在根目錄下的原因。

 

 

恭喜看倌,環境佈署告一段落囉。
接下來的筆記等我消化後在發文啦。

文章標籤

ezcshi 發表在 痞客邦 留言(0) 人氣()