2015年12月4日 星期五

[Android][Adb]How to Capture Screenshot and Record Screen using ADB

1. Install the required ADB drivers on your PC.
2. Connect your device with PC using wired or wireless ADB connection.
3. Open Terminal in Linux or Command Prompt and enter the following command.
% adb shell screencap -p /sdcard/screencap.png
4. Now the captured screenshot will be placed on your internal sdcard. To copy the screenshot to your pc enter the command.
% adb pull /sdcard/screencap.png
Recording Screen
1. Connect your device with PC using wired or wireless ADB connection.
2. Open Terminal in Linux or Command Prompt and enter the following command.
% adb shell screenrecord /sdcard/screen.mp4
3. To stop screen recording break using Ctrl + C
4. Now the captured video will be placed in internal sdcard. Copy the video to PC using the command.
% adb pull /sdcard/screen.mp4
5. Increase bitrate of the video using the command.
adb shell screenrecord –bit-rate 12000000 /sdcard/screen.mp4

2015年11月15日 星期日

[Android]android常用控件

在 Android 中使用各種控件(View)

  • DatePicker - 日期選擇控件
  • TimePicker - 時間選擇控件
  • ToggleButton - 雙狀態按鈕控件
  • EditText - 可編輯文本控件
  • ProgressBar - 進度條控件
  • SeekBar - 可拖動的進度條控件
  • AutoCompleteTextView - 支持自動完成功能的可編輯文本控件
  • MultiAutoCompleteTextView - 支持自動完成功能的可編輯文本控件,允許輸入多值(多值之間會自動地用指定的分隔符分開)
  • ZoomControls - 放大/縮小按鈕控件
  • Include - 整合控件
  • VideoView - 視頻播放控件
  • WebView - 瀏覽器控件
  • RatingBar - 評分控件
  • Tab - 選項卡控件
  • Spinner - 下拉框控件
  • Chronometer - 計時器控件
  • ScrollView - 滾動條控件
在Android中使用的Layout
FrameLayout:裏面只可以有一個控件,並且不能設計這個控件的位置,控件會放到左上角
LinearLayout:裏面可以放多個控件,但是一行只能放一個控件
TableLayout:這個要和TableRow配合使用,很像html裏面的table
AbsoluteLayout:裏面可以放多個控件,並且可以自己定義控件的x,y的位置
RelativeLayout:裏面可以放多個控件,不過控件的位置都是相對位置
(Android界面布局好像還可以直接引用一些view,如ScrollView等)

常用控件:



1,EditText
     主要函數:setText/getText設置/獲取文本內容,setHint設置缺省顯示內容;

2,RadioGroup,RadioButton
RadioButton的isChecked()判斷是否被選中
獲取選中RadioButon的ID:設置RadioGroup.setOnCheckedChangeListener方法
public onCheckedChanged(RadioGroup group,int checkedId)//checkedId是選中RadioButton的ID

3,CheckBox
isChecked()判斷是否被選中
setOnCheckedChangeListener方法監視選中狀態改變情況

4,Spinner
    a,顯示數據
1),硬編碼加載
通過setAdapter方法設置類型為ArrayAdapter (Context context, int textViewResId, String []objects)
   textViewResourceId:顯示內容的ViewID默認設置為R.layout.simple_spinner_item
   objects:顯示的內容
2),從資源文件中加載
ArrayAdapter.createFromResource (Context context, int textArrayResId, int textViewResId) //textArrayResId是資源ID
返回ArrayAdapter
    b,設置下拉列表的風格(可選)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    c,監聽選項選擇變更事件
setOnItemSelectedListener設置監聽去
Spinner.OnItemSelectedListener類須實現以下兩個方法

public void onItemSelected (AdapterView parent, View view, int position, long id)//view 選中項實例,position選擇項在adapter中的位置
public void onNothingSelected(AdapterView arg0)
    d,設置選中項
Spinner.setSelection(position)//索引從0開始
    d,獲取選中項
getSelectedItemPosition ()
getSelectedItem () //該值toString()則為選中內容的字符串
getSelectedItemId ()
getSelectedView ()

5,AutoCompleteTextView
1,setAdapter設置數據adapter
2,設置輸入多少個字符顯示提示AutoCompleteTextView.setThreshold(int threshold)
6,MultiAutoCompleteTextView (允許輸入多值,多值之間會自動地用指定的分隔符分開)
1,setAdapter設置數據adapter
2,setTokenizer設置提示Tokenizer缺省的為new MultiAutoCompleteTextView.CommaTokenizer()以逗號分隔

7,DatePicker,TimePicker
a,DatePicker
1),設置初始顯示日期init(int Year, int month, int day, new DatePicker.OnDateChangedListener(){
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){}
   })
2),獲取設置值 getYeah()/getMonth()/getDayOfMonth()
b,TimePicker
1),設置setCurrentHour (Integer currentHour) /setCurrentMinuter (Integer currentHour)
2,setIs24HourView(Boolean)設置是否為24小時制顯示
3,監聽設置改變setOnTimeChangedListener
c,獲取系統當期時間和日期
Calendar.getInstance()返回Calendar
Calendar.get (int field) ---field 可以為Calendar.YEAR/ Calendar.MONTH/ Calendar.DAY_OF_MONTH/ Calendar.HOUR_OF_DAY/ Calendar.MINUTE

8,ImageView/ImageButton
主要方法
setImageResource 設置顯示圖片
setAlpha 設置Alpha
invalidate 強制更新
setScaleType( ScaleType st) 設置圖片顯示方式,st是一枚舉
setAdjustViewBounds 設置是否調整控件適應圖片大小
setBackgroundResource 設置背景

9,ImageSwitcher(顯示一系列的圖片,但當前只顯示一張圖片)
     顯示數據
setFactory( ViewSwitcher.ViewFactory factory)設置要顯示的數據
,ViewFactory接口須實現方法public View makeView(){}負責提供當前顯示的視圖(ImageView),且View必須為新實例
     方法
setImageResource設置當前顯示的圖片
getCurrentView()返回當前顯示的視圖
setInAnimation(Animation ani)設置視圖裝載入時的動畫效果,AnimationUtils.loadAnimation(Context context, int id) 獲取動畫效果android.R.anim.XX
setOutAnimation(Animation ani)設置視圖裝載入時的動畫效果


10,Gallery(顯示一系列的圖片,提供拖動等特效)
     顯示數據
setAdapter(SpinnerAdapter adapter)設置數據適配器.
   數據適配器可以繼承自BaseAdapter,該類 public View getView(int position, View convertView, ViewGroup parent) 返回當前選擇的視圖(ImageView)
     選項選中監聽setOnItemSelectedListener

11,GridView(表格顯示一系列圖片)
     顯示數據
setAdapter(ListAdapter adapter)設置數據適配器.
   數據適配器可以繼承自BaseAdapter,該類 public View getView(int position, View convertView, ViewGroup parent) 返回當前選擇的視圖(ImageView)
     選項選中監聽setOnItemSelectedListener
     getSelectedView()返回當前選中的視圖

12,ScrollView

13,ProgressBar
setIndeterminate 設置進度條是否自動運轉
setProgressStyle 設置顯示風格.ProgressDialog.STYLE_HORIZONTAL/ProgressDialog.STYLE_SPINNER
setProgress 設置進度
setMax 設置最大值
getProgress()獲取當前進度

14,SeekBar
方法
setMax 設置最大值
getProgress()獲取當前值
setProgress 設置值
setIndeterminate
監聽器
setOnSeekBarChangeListener其下有三個方法
   public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) //數值變更,arg1新值,是否Touch
   public void onStartTrackingTouch(SeekBar seekBar)//開始拖動
   public void onStopTrackingTouch(SeekBar seekBar) //結束拖動

15,ListView
      a,顯示數據setAdapter(ListAdapter adapter)
       adapter可為new SimpleCursorAdapter/SimpleAdapter(Context context, int layout, Cursor c, String[] from, int[] to)
       layout 用來顯示數據的模板.顯示一列可用android.R.layout.simple_list_item_1 兩列可用android.R.layout.simple_list_item_2
               多列則需要自己實現xml視圖布局文件
       c   數據(可用ArrayList構造數據)
       from ':
       to 用來顯示對應列的空件id
      b,動態增刪數據
        adapter.notifyDataSetChanged()
      d,設置背景色
        setBackGroudRource

2015年10月17日 星期六

[Git]Git常用指令

Git常用指令

medium_3340416618
由於Git太多東西可以學了,以下這些指令都是很基本的,最常用的,給大家參考:

branch

git branch #查看目前有那些local branch
git branch branch-name #開local branch
git branch -r #查看所有遠端repo的branch
git branch -d #刪除local branch
git branch -D #強制刪除local branch
git push origin :branch-name #刪除遠端branch
push/pull
git pull  #將所有遠端的更動都拉下來
git push  #將本地所有的commit都推到遠端
git pull origin master/branch #只將該master/branch的變動拉下來
git push origin master/branch #將本端的commit推到遠端的master/branch
checkout
git checkout file-name #將該檔案從在working tree中已經變動的狀態下,拉回至未變動狀態下。
git checkout branch-name #切換到該branch
commit/add
git commit file-name #將file-name commit出去
git commit file-name -m ‘註解’ #將file-name commit ,必且直接寫註解在後面
git add file-name #新增一個untracked file
git add .#新增所有的untracked file
git commit add -m ‘註解’ #將所有變動同時commit add 以及下註解
diff
git diff file-name #查看該檔案修改後有哪些變動
git diff HEAD #查看目前所在位置與repository的差異
show
git show commit #查看給定的commit有何變動
stash
git stash #丟進站存區
git stash pop #拉出暫存區
git stash clear #清空暫存區
reset
git reset commits –hard #回復到該commits之前的狀態,修改過的檔案全部從staging跟working tree中刪除
git reset #將你已經add進staging裡的變動拉回至unstage狀態,但該檔案變動還留在working tree
git reset commits –soft #回復至該commits之前的狀態,但修改過得檔案還留在staging中
註:如果你是下git reset commits –hard , 它的功能會像是git reset commits –soft -> git reset ->git checkout file-name,因為–hard是將你的branch回復到該commits之前,且 所有變動全部從staging跟working tree刪除,而–soft先回復至該commits之前,但檔案都還留在staging , 而reset再將檔案從staging拉回至working tree , checkout則將working tree的變動回復至未變動狀態下,所以這兩者基本上是一樣的。
merge
git cherry-pick hash-number #將某個commit merge
git merge branch-name #合併另一個branch
rm/mv
git rm file-name #刪除該檔案
git mv file-name new-file-name #重新命名該檔案,搬移檔案
others
git status #查看現在狀態,是否有untracked file 或未被commmit的檔案
git log #查看所有commit
git blame file-name #查看誰修改過此檔案
git clone remote-address #將遠端的repo複製一份到local

[Git]使用 format-patch 將 commit 打包成檔案 Use format-patch to carry commit

Git 是一套很棒的版本控制軟體


在協同作業的時候,有時候會需要將別人的 commit 抓來自己的 branch

或者是將自己的 commit 打包給別人

此時就要用到 format-patch 這個好用的指令
  • 打包:
% git format-patch -n
  • 套用:
git am xxx.patch

舉例來說

1.如果我們今天要打包最新的三個 commit 的話

 % git format-patch -3

此時 git 便會幫你產生3個類似下列的檔案

0001-First.patch

0002-Second.patch

0003-Third.patch

2.那如果要套用別人的patch 也相當簡單

  %git am 0001-First.patch 

就將 patch apply 上去了

2015年10月11日 星期日

[GPS]輔助式全球衛星定位系統(AGPS:Assisted GPS)

輔助式全球衛星定位系統的定義

由於GPS系統的衛星距離地球表面大約20000公里,傳送到地面的訊號微弱,所以一般地面的接收器開機以後大約需要30秒的時間才能計算出位置,科學家開始試著尋找能夠縮短定位時間,並且增加定位精確度的方法,稱為「輔助式全球衛星定位系統(AGPS:Assisted GPS)」。

行動定位系統

其實除了GPS系統可以提供定位的功能,由於手機必須在某一個細胞的基地台通訊範圍內才能通訊,所以我們也可以利用基地台協助手機定位,由於美國聯邦通訊委員會(FCC)規定美國的系統業者必須提供手機行動定位服務,以確保手機的使用者發生緊急事件的時候,救難人員能夠知道使用者的正確位置,所以各家系統業者開始發展行動定位系統,目前常見的包括:
>CI/CSI技術(Cell-ID/Cell-Sector Identification):利用行動電話細胞識別碼與手機所在的細胞位置來進行定位,在都會區由於人口密集,細胞較小,定位精確度大約數百公尺;在郊區由於人口較少,細胞較大,定位精確度大約數十公里。
>AOA技術(Angle of Arrival):利用手機與基地台的方位角計算位置來進行定位,並且透過方向性天線與兩個以上的基地台判斷手機的位置。
>TOA/TDOA技術(Time of Arrival/Time Difference of Arrival):利用三個以上的基地台傳送到手機的訊號時間延遲,來計算手機與基地台的距離而判斷手機的位置,每個基地台必須加裝位置測量單元(LMU:Location Measure Unit),成本較高,TOA的定位精準確大約200公尺,TDOA大約100公尺。
>EOTD(Enhanced Observed Time Difference):利用三個以上的基地台接收到手機的訊號,再傳送給最近的位置測量單元(LMU),這樣一來數個基地台只要加裝一個位置測量單元(LMU)即可,成本較低,定位精確度大約100公尺

輔助式全球衛星定位系統(AGPS:Assisted GPS)

在所有行動定位技術中,AGPS系統是精確度最高的一種,但是手機必須具有GPS接收器,由於GPS必須接收微弱的衛星訊號,所以天線模組比較大,會使手機的尺寸變大,手機的價格也比較高。AGPS系統是由手機先利用所在細胞位置的基地台來進行定位,由於基地台的位置固定(已知),這個時候再利用手機內的GPS接收器搜尋附近位置的GPS衛星即可快速定位,開機以後大約只需要10秒以內就能夠計算出位置,而且精確度更高。

GPS overview

GPS (Global Position System, 全球衛星定位系統)最早是美國軍方所建置用來協助戰略武器能夠精準的定位其攻擊目標的位置。在目標物的定位主要是透過太空中的衛星來定位,此種方式可以有效避免衛星不容易被敵方摧毀。後來美國軍方也將部份GPS的技術或資源移轉給民間作為商業化的應用,而慢慢演變成今日的GPS系統。下圖為GPS全球衛星位於地球外太空中的示意動畫圖 (可以點選此圖另開視窗觀看動畫圖,本圖參考於此網站),一般來說至少有24顆衛星分布在6個軌道上運行,在地球的表面上正常至少能夠接收到6顆衛星的訊號,而能夠正確的定位出目標物的位置 (包含經緯度、高度以及時間)則至少需要4顆衛星訊號來協助交叉定位。扣除天氣狀況以及建築物遮蔽等外在因素外,GPS裝置的訊號接收靈敏度關係到GPS定位的準確定以及定位時間的長短。
 
 
     早期GPS常見的商業化應用大多是所謂的行車導航機或者是隨身攜帶的GPS定位記錄器,近年來隨著智慧型手機的快速發展再加上網路線上地圖的方便使用,GPS也變成智慧型手機的基本功能之一。現在在外頭只要拿起手機開啟GPS功能,就能夠輕鬆的定位出所在的位置,同時配合軟體還能夠快速搜尋出如何到達目的地或者是列出附近的加油站、便利超商等商店,已經不太需要像以前一樣需要帶一本厚重的地圖集出門了。下面我們將簡單介紹在使用GPS時會需要知道的幾個效能參數,在了解這些參數背後所代表的意義之後相信可以幫助我們更加的了解GPS系統應用。
 
1. TTFF (Time To First Fix): 其定義為在冷開機 (Cold Start)的狀態下到GPS第一次定位成功所需要的時間,正常來說所需的時間應該越少越好。不過目前來講,TTFF的時間大多在50~80秒之間算是一個基本的要求,而目前的智慧型手機在組裝出廠時都是藉由驗證其TTFF時間來確保手機GPS功能維持正常。
2. Cold Start (冷開機): 當GPS裝置先前定位資料已經許久未更新 (或是第一次使用)的情況下,包含衛星星曆資料 (Ephemeris Data)、定位時間及最後的位置都已經改變的狀況之下,此時開啟GPS服務時會進行所謂的冷開機,同時冷開機完成的定位時間是最長的。
3. Warm Start (暖開機): 在GPS裝置依然保有最近粗略的定位資料之下,僅是針對詳細的定位資訊再做一次更新即可完成定位,其定位時間介於冷開機及熱開機之間。
4. Hot Start (熱開機): 距離之前的GPS定位紀錄完成的時間相當接近,同時僅是將GPS系統做重新開啟的動作,此時GPS僅需要相當短的時間即可完成定位(~1秒)。

Reference:
https://sites.google.com/site/changch1011/my-blog/GPS-and-GPS-Antenna-Design

[轉]使用Log.isLoggable打開framework log

使用Log.isLoggable打開framework log


方法有兩種

1. setprop
使用更改property的方式去設定,但很多log無法套用,因在build boot的時候已經設定完property,故此方法參考就好不一定管用。

adb root
adb remount
adb shell setprop log.tag.[TAG] DEBUG

其第三條指令如下
log.tag.TAG Level
TAG:你要打開的framework TAG
Level:在framework level有
VERBOSE(2)、DEBUG(3)、INFO(4)、WARN(5)、ERROR(6)、ASSERT(7)

isLoggable默認level為android.util.Log.INFO
只有讓level >= INFO才能正確輸出

例如
private static final String TAG = "AudioService";
protected static final boolean DEBUG_VOL = Log.isLoggable(TAG + ".VOL", Log.DEBUG);

所以你的指令要是這樣才有效
adb shell setprop log.tag.AudioService DEBUG
or
adb shell setprop log.tag.AudioService VERBOSE
因為這樣會把VERBOSE以上的LOG設定為true


以上設定,經由重新開機設定會失效。

2.利用local.prop(此方法為一次寫死,效果十足)

首先先建立一個local.prop,其內容如下
log.tag.TAG=DEBUG       (= 一定要加)
ex: log.tag.AudioService DEBUG

adb root
adb remount
adb push local.prop /data/local.prop
adb shell chmod 644 /data/local.prop
adb shell chown root.root /data/local.prop
adb reboot

此方式重開機以後,就能成功把你要的framework log打開了。

2015年10月1日 星期四

Android Phone 各類功能



AccelerometerListener:感應器監聽類,此類用於監聽感應加速器,會通知用戶端水準和重力感應資訊 
ADNList extents ListActivity:電話的應用程式 
BluetoothAtPhonebook:藍牙電話薄 
BluetoothCmeError:免提設定檔中的錯誤參數 
BluetoothHandsfree:藍牙免提藍牙耳機的手機應用管理器 
BluetoothHeadsetService extends Service:藍牙耳機服務 
ButtonGridLayout extends ViewGroup:表格按鈕樣式 
CallCard extends FrameLayout implements CallTime.OnTickListener, CallerInfoAsyncQuery.OnQueryCompleteListener, ContactsAsyncHelper.OnImageLoadCompleteListener, View.OnClickListener:電話卡類通話介面提供保留通話或來電 
CallFeaturesSetting extends PreferenceActivity implements DialogInterface.OnClickListener, Preference.OnPreferenceChangeListener, EditPhoneNumberPreference.OnDialogClosedListener, EditPhoneNumberPreference.GetDefaultNumberListener:通話功能設置 
CallForwardEditPreference extends EditPhoneNumberPreference:來電轉接編輯 
CallLogsync:通話記錄同步 
CallNotifier extends Handler implements CallerInfoAsyncQuery.OnQueryCompleteListener:電話通知 
CallTime extends Handle:通話時間 
CallWaitingCheckBoxPreference extends CheckBoxPreference:呼叫等到核取方塊 
CarrierLogo:載波微標(工具類來查找資源ID標識載體) 
CdmaCallOptions extends PreferenceActivitycdma通話選項 
CdmaDisplayInfocdma顯示資訊 
CdmaOptions:名單電話特定設置螢幕 
CdmaPhoneCallState:手機呼叫狀態 
CdmaSubscriptionListPreference extends ListPreferencecdma偏好設置 
CdmaSystemSelectListPreference extends ListPreferenceCDMA系統偏好設置 
CdmaVoicePrivacyCheckBoxPreference extends CheckBoxPreferenceCDMA語音隱私CheckBox設置 
CellBroadcastSms extends PreferenceActivity implements Preference.OnPreferenceChangeListener:社區廣播短信電話名單設置螢幕 
ChangeIccPinScreen extends Activity:手機螢幕改變程式 
CLIRListPreference extends ListPreference:跨語言資訊檢索清單 
DataUsage extends PreferenceActivity:資料使用 
DataUsageListener:資料使用監聽為來自ThrottleManager 的廣播 
DeleteFdnContactScreen extends Activity:刪除通訊錄中的資訊 
DTMFTwelveKeyDialer implements SlidingDrawer.OnDrawerOpenListener, SlidingDrawer.OnDrawerCloseListener, View.OnTouchListener, View.OnKeyListener:雙音多頻撥號TwelveKeys 

DTMFTwelveKeyDialerView extends LinearLayout:雙音多頻撥號器介面 
EditFdnContactScreen extends Activity:編輯連絡人介面 
EditPhoneNumberPreference extends EditTextPreference:電話號碼偏好編輯 
EditPinPreference extends EditTextPreference:編輯引腳偏好 
EmergencyCallbackModeExitDialog extends Activity implements OnDismissListener:緊急呼叫模式退出對話方塊 
EmergencyCallbackModeService extends Service:緊急呼叫服務延伸服務模式 
EmergencyCallHandler extends Activity:緊急呼叫處理常式 
  EmergencyDialer extends Activity implements View.OnClickListener, View.OnLongClickListener, View.OnKeyListener, TextWatcher:緊急呼叫撥號器 
EnableFdnScreen extends Activity:啟用Fdn螢幕 
EnableIccPinScreen extends Activity:螢幕啟用引腳電流 
FakePhoneActivity extends Activity:簡單的手機類比程式 
FastBitmapDrawable extends Drawable 
FdnList extends ADNList 
FdnSetting extends PreferenceActivity implements EditPinPreference.OnPinEnteredListener, DialogInterface.OnCancelListenerFdn設置 

GetPin2Screen extends Activity:開機獲取Pin2 
GsmUmtsAdditionalCallOptions extends TimeConsumingPreferenceActivityUMTSGSM附加打電話選項
GsmUmtsCallForwardOptions extends TimeConsumingPreferenceActivity Gsm Umts來電轉接 
GsmUmtsCallOptions extends PreferenceActivityGSMUmts呼叫選項 
GsmUmtsOptionsGSM選項 
HapticFeedback:觸覺感應 
IccNetworkDepersonalizationPanel extends IccPanelICC網路人格解體小組 
IccPanel extends Dialog:小組 
IccProvider extends com.android.internal.telephony.IccProviderICC提供者提供addressbook 
InCallControlState:呼叫控制狀態 
InCallLockScreen extends FrameLayout 
InCallMenu :來電菜單 
InCallMenuItemView extends TextView:來電功能表選項介面 
InCallMenuView extends ViewGroup 
InCallScreen extends Activity implements View.OnClickListener, View.OnTouchListener, CallerInfoAsyncQuery.OnQueryCompleteListener:來電螢幕 
InCallScreenShowActivation extends Activity:來電顯示啟動 
InCallTouchUi extends FrameLayout implements View.OnClickListener, SlidingTab.OnTriggerListener:呼叫觸摸介面 
ManageConferenceUtils implements CallerInfoAsyncQuery.OnQueryCompleteListener:會議管理工具 
NetworkQueryService extends Service:網路查詢服務 
NetworkSetting extends PreferenceActivity implements DialogInterface.OnCancelListener:網路設置 
NotificationMgr implements CallerInfoAsyncQuery.OnQueryCompleteListener OtaStartupReceiver:通知消息 
OtaStartupReceiver extends BroadcastReceiverOta接收器 
OtaUtilsOta工具類 
OutgoingCallBroadcaster extends Activity:呼叫廣播 
PhoneApp extends Application implements AccelerometerListener.OrientationListener:手機應用程式 
PhoneInterfaceManager extends ITelephony.Stub:手機介面管理 
PhoneUtils:電話工具類 
ProcessOutgoingCallTest extends BroadcastReceiverProfiler:呼叫過程實驗 
Profiler:探查 
Ringer:林格 
Rotate3dAnimation extends Animation 
Settings extends PreferenceActivity implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener, Preference.OnPreferenceChangeListener:設置 
SimContacts extends ADNListSIM卡連絡人 
SipBroadcastReceiver extends BroadcastReceiver:廣播接收機 
SipCallOptionHandler extends Activity implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener, CompoundButton.OnCheckedChangeListener:電話處理常式選項 
SipUtilSip工具類 
SpecialCharSequenceMgr:特別字元序列管理 
TelephonyCapabilities:電話功能 
TimeConsumingPreferenceActivity extends PreferenceActivity implements TimeConsumingPreferenceListener, DialogInterface.OnClickListener, DialogInterface.OnCancelListener:耗時偏好功能 
Use2GOnlyCheckBoxPreference extends CheckBoxPreference:使用只有2G卡的核取方塊偏好設置 
SipEditor extends PreferenceActivity implements Preference.OnPreferenceChangeListenerSip編輯器 
SipProfileDb:個性化設置 
SipSettings extends PreferenceActivity:設置 
SipSharedPreferences:共用偏好