國立空中大學 106 學年度下學期期末考試題【 正參】095
科目:行動裝置應用設計與開發 一律橫式作答 4 頁 一、選擇題﹙80%,每題 5 分﹚
1. Android Studio 透過下列哪一種功能來達到 Activity 之間的切換執行? (a).fragment (b).bundle (c).activity (d).intent (d,5-2-2)
2. 在 Activity 的生命週期各階段所執行的動作中,下列哪一項在順序上位於最前面? (a).onCreate( ) (b).onPause( ) (c).onStart( ) (d).onRestart( ) (a,5-1-2)
3. 對於行動裝置上所儲存的資料來說,下列的哪一種資料算是有結構的資料? (a).聯絡人資訊
(b).影像 (c).影片 (d).可執行程式的檔案 (a,6-1-1)
4. 下列有關於行動裝置上資料庫應用的描述,何者是錯誤的? (a).處理的資料量通常不會非常大
(b).資料的運算通常不會非常複雜 (c).資料庫可以儲存在行動裝置上 (d).資料都來自網路上的 伺服器 (d,6-1-3)
5. Android Studio 支援資料庫應用的開發,下列的哪一個方法或是物件與資料庫資料的呈現最相關?
(a).Cursor (b).ListView (c).rawQuery (b,6-3-1)
6. 下列哪一項不是行動裝置支援多媒體應用的必備規格或是功能? (a).麥克風 (b).藍牙通訊 (c).
鏡頭 (d).音訊的播放 (b,7-1-1)
7. 下列哪一項是 Android Studio 中用來處理音訊的元件? (a).VideoView (b).SurfaceView (c).playVideo (d).MediaPlayer (d,7-2-1)
8. Android 視訊的處理需要使用哪個類別? (a).VideoView (b).VideoCam (c).VideoTec (a,7-3-1)
9. 以下有關於行動裝置感應器(sensor)的描述,哪一項是錯誤的? (a).裝置可以將感測的變化量轉
為數值 (b).若未支援特定的感應功能,則無法取得資料 (c).行動裝置支援所有的感應功能 (d).
感應功能必須以實機測試 (c,8-1-1)
10. 下列有關行動裝置加速度感應器的敘述,何者不正確? (a).螢幕左下角為原點 (b).向右、向上 與向前為正向 (c). 向右、向上與向後為正向 (c,8-2-1-1)
11. 下列有關行動裝置感應器 sensor 物件中函式的敘述,何者不正確? (a).getName()函式可以取得 感應器名稱 (b).getType()函式可以取得感應器種類 (c).getPower()函式可以取得感應器是否開 啟 (c,8-2-1-2)
12. 有關陀螺儀感應器,下列敘述何者不正確? (a).記載行動裝置沿 X 軸、Y 軸與 Z 軸旋轉的弧度 (b).逆時針旋轉為負值 (c). 逆時針旋轉為正值 (b,8-3-1-1)
13. 下列有關於應用程式介面(API, application program interface)的描述,哪一項是錯誤的? (a).需要 花錢購買,而且價格高 (b).可以節省開發的時間 (c).程式庫(library)理想的實現 (d).可以促成 程式碼的再用(reuse) (a,9-1-1)
14. 使用 Google Map 時,在專案的什麼檔案中輸入申請到的 API key? (a).googlemaps_api.xml (b).
google-maps_api.xml (c).google_maps_api.xml (c,9-2-1-1)
15. 申請 Google Map API 使用的金鑰時所需要的憑證指紋可以透過下列哪一個指令來產生並取得?
(a).pgp (b).keygen (c).keystore (d).keytool (d,9-2-1-2)
16. 建立地圖用專案時,需要選取何種活動專案? (a). Google Maps Activity (b).Basic Activity (c).Empty Activity (a,9-2-2)
二、程式題﹙20%,每題 10 分﹚
1. 建立一個新的專案,使用 Basic Activity,因此會產生主活動 MainActivity.java,在畫面中有一個按 鈕。當我們按下按鈕,會切換到第二個活動的畫面,並且會將字串"Hello Activity 2"傳送到第 2 個活動。
第二個活動的程式碼存放在 SecondActivity.java,畫面中包含一個 TextView 元件,其物件名稱為 tv,
另外有一個按鈕。我們取得主活動傳來的字串將其顯示在 TextView 元件上,當我們按下按鈕便可以返 回到主活動的畫面。
請完成「主活動」程式碼。 (10%) public void onClick(View v){
Intent intent=new Intent();
}
解答:(5-3-2)
主活動程式碼 MainActivity.java:
public void onClick(View v){
Intent intent=new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
String sendstr=”Hello Activity 2";
Bundle bundle=new Bundle();
bundle.putString("Activity",sendstr);
intent.putExtras(bundle);
startActivity(intent);
}
2. 我們將帳號與密碼儲存在文字檔案 Accounts.txt 當中 寫入資料時都會以附加”\n”作為分隔,檔案中 只有一筆資料,帳號為”Peter”、密碼為”123456”。執行程式時,會讀取檔案,然後將已經存在的帳號 與密碼顯示在輸入欄位的底下,如圖所示。輸入好帳號與密碼之後,按「新增帳號」功能按鈕,便可 以將新的帳號與密碼附加到目前檔案的結束處。
「設定帳號」欄位、「設定密碼」欄位與「檔案內容」顯示區域都是 EditText 編輯欄位。欄位名稱分別 是 edtAccount、edtPasswd 與 edtFileContent。檔案的讀取使用 FileInputStream 及有緩衝區的
BufferedInputStream;檔案的寫入使用 FileOutputStream 及有緩衝區的 BufferedOutputStream buffout。
請完成下列程式:
程式執行時,讀取密碼與帳號的儲存檔案,參數 fname 是檔案名稱。將帳號與密碼附加到顯示區的程 式片段。 (10%)
private void ShowFileContent(String fname) {
//建立讀取資料流
FileInputStream finputStrm=null;
BufferedInputStream buffin=null;
try {
//開啟讀取的串流並宣告資料放置的緩衝區 finputStrm=openFileInput(fname);
buffin=new BufferedInputStream(finputStrm);
//讀取資料迴圈
do {
//進行資料附加到顯示區變數
} while(true);
buffin.close();
} catch(Exception e) {
e.printStackTrace();
} }
解答:(6-2-2)
private void ShowFileContent(String fname) {
//建立讀取資料流
FileInputStream finputStrm=null;
BufferedInputStream buffin=null;
try {
//開啟讀取的串流並宣告資料放置的緩衝區 finputStrm=openFileInput(fname);
buffin=new BufferedInputStream(finputStrm);
byte[] buffbyte=new byte[20];
edtFileContent.setText("");
//讀取資料迴圈 do {
int indicator=buffin.read(buffbyte);
if(indicator==-1) break; // 直到檔案結束 else
edtFileContent.append(new String(buffbyte), 0, indicator);
//進行資料增補 } while(true);
buffin.close();
} catch(Exception e) { e.printStackTrace();
} }