《移动应用开发》试题及答案 .doc
移动应用开发试题题目:1.请实现点击按钮拨打电话功能。(20分)2.请实现点击按钮改变文本控件颜色的功能。(30分)3.请实现使用socket通信的服务器端代码。(50分)要求:逻辑结构完整,答案要点突出,论述充分,每题答案字数不少于400字。答案不得完全照抄书本或其他资料,不得互相抄袭。中南大学网络教育课程考试移动应用开发答卷本人承诺:本试卷确为本人独立完成,若有违反愿意接受处理。签名:_学号:_专业:_学习中心:_题号一二三总分评阅人签字成绩1.答: private Button btn2;btn2=(Button)findViewById(R.id.btn2);/在xml中把button2改成btn2,为该按钮的idClickListener(new OnClickListener();在OnClick() Intent in2 = new Intent(); tion(N_CALL);/指定意图动作 ta("tel:");/指定电话号码 startActivity(in2);在android系统中,所有系统请求,必须要在中注册 在<application上面<uses-permission android:name="_PHONE"/>:package le.;import .Uri;import .Bundle;import .Activity;import .AlertDialog;import .Dialog;import nt.DialogInterface;import nt.Intent;import .LayoutInflater;import .Menu;import .View;import .ckListener;import t.Button;import t.EditText;public class MainActivity extends Activity private Button btn;private Button btn2; private EditText et; private EditText et2; Override protected void onCreate(Bundle savedInstanceState) ate(savedInstanceState); setContentView(R.ity_main); et = (EditText)findViewById(R.id.editText1); et2 = (EditText)findViewById(R.id.editText2); btn2 = (Button)findViewById(R.id.btn2); btn = (Button)findViewById(R.id.button1); ClickListener(new OnClickListener()Overridepublic void onClick(View arg0) / TODO Auto-generated method stub final String str = et.getText().toString().trim(); final String str2 = xt().toString().trim();if (s(str2)Intent in = new Intent(,);startActivity(in);else.println("!");); ClickListener(new OnClickListener()Overridepublic void onClick(View arg0) / TODO Auto-generated method stubIntent in2 = new Intent();tion(N_CALL);ta("tel:");startActivity(in2);); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R., menu); return true; :<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="" package="le." android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" /> <uses-permission android:name="_PHONE"/> <application android:allowBackup="true" android:icon="drawable/ic_launcher" android:label="string/app_name" android:theme="style/AppTheme" > <activity android:name="le.MainActivity" android:label="string/app_name" > <intent-filter> <action android:name="t." /> <category android:name="t.HER" /> </intent-filter> </activity> <activity android:name="le.SecActivity" android:label="string/title_activity_sec" > </activity> </application></manifest>1.Android Layout文件Layout文件,用来呈现一个拨打电话的按钮。1. <?xml version="1.0" encoding="utf-8"?>2. <LinearLayout xmlns:android=""3. android:layout_width="fill_parent"4. android:layout_height="fill_parent"5. android:orientation="vertical" >6.7. 8. <Button9. android:id="+id/buttonCall"10. android:layout_width="wrap_content"11. android:layout_height="wrap_content"12. android:text="call " />13.14. </LinearLayout>Activity使用以下代码,Android拨打电话:1. Intent callIntent = new Intent(N_CALL);2. ta("tel:");3. startActivity(callIntent);文件: 当点击拨打电话按钮时,就会拨打这个号码。1. package g.android;2.3. import .Activity;4. import nt.Context;5. import nt.Intent;6. import .Uri;7. import .Bundle;8. import StateListener;9. import honyManager;10. import .Log;11. import .View;12. import .ckListener;13. import t.Button;14.15. public class MainActivity extends Activity 16. private Button button;17. 18. Override19. public void onCreate(Bundle savedInstanceState) 20. 21. ate(savedInstanceState);22. setContentView(R.);23. 24. button = (Button) findViewById(R.id.buttonCall);25. 26. / add button listener27. ClickListener(new OnClickListener() 28. 29. Override30. public void onClick(View arg0) 31. 32. Intent callIntent = new Intent(N_CALL);33. ta("tel:");34. startActivity(callIntent);35. 36. 37. 38. );39. 40. 41. 42. 43. Android Manifest拨打电话,Android需要CALL_PHONE的权限。在中添加以下代码:1. <uses-permission android:name="_PHONE" />添加后:1. <?xml version="1.0" encoding="utf-8"?>2. <manifest xmlns:android=""3. package="g.android"4. android:versionCode="1"5. android:versionName="1.0" >6.7. <uses-sdk android:minSdkVersion="7" />8. <uses-permission android:name="_PHONE" />9.10. <application11. android:icon="drawable/ic_launcher"12. android:label="string/app_name" >13. <activity14. android:name=".MainActivity"15. android:label="string/app_name" >16. <intent-filter>17. <action android:name="t." />18.19. <category android:name="t.HER" />20. </intent-filter>21. </activity>22. </application>23.24. </manifest>PhoneStateListener 例子更新上面的Activity,模拟拨打电话的状态,当电话拨打结束后,返回原始Activity,实际上只是重启了这个activity。1. package g.android;2.3. import .Activity;4. import nt.Context;5. import nt.Intent;6. import .Uri;7. import .Bundle;8. import StateListener;9. import honyManager;10. import .Log;11. import .View;12. import .ckListener;13. import t.Button;14.15. public class MainActivity extends Activity 16. private Button button;17. 18. Override19. public void onCreate(Bundle savedInstanceState) 20. 21. ate(savedInstanceState);22. setContentView(R.);23. 24. button = (Button) findViewById(R.id.buttonCall);25. 26. / add PhoneStateListener27. PhoneCallListener phoneListener = new PhoneCallListener();28. TelephonyManager telephonyManager = (TelephonyManager) this29. .getSystemService(HONY_SERVICE);30. n(phoneListener,N_CALL_STATE);31. 32. 33. / add button listener34. ClickListener(new OnClickListener() 35. 36. Override37. public void onClick(View arg0) 38. 39. Intent callIntent = new Intent(N_CALL);40. ta("tel:");41. startActivity(callIntent);42. 43. 44. 45. );46. 47. 48. 49. /monitor phone call activities50. private class PhoneCallListener extends PhoneStateListener 51. 52. private boolean isPhoneCalling = false;53. 54. String LOG_TAG = "LOGGING 123"55. 56. Override57. public void onCallStateChanged(int state, String incomingNumber) 58. 59. if (_STATE_RINGING = state) 60. / phone ringing61. Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);62. 63. 64. if (_STATE_OFFHOOK = state) 65. / active66. Log.i(LOG_TAG, "OFFHOOK");67. 68. isPhoneCalling = true;69. 70. 71. if (_STATE_IDLE = state) 72. / run when class initial and phone call ended, 73. / need detect flag from CALL_STATE_OFFHOOK74. Log.i(LOG_TAG, "IDLE");75. 76. if (isPhoneCalling) 77. 78. Log.i(LOG_TAG, "restart app");79. 80. / restart app81. Intent i = getBaseContext().getPackageManager()82. .getLaunchIntentForPackage(83. getBaseContext().getPackageName();84. i.addFlags(_ACTIVITY_CLEAR_TOP);85. startActivity(i);86. 87. isPhoneCalling = false;88. 89. 90. 91. 92. 93. 由于PhoneStateListener需要READ_PHONE_STATE权限,需要在中添加以下代码:1. <uses-permission android:name="_PHONE_STATE" />添加后如下:1. <?xml version="1.0" encoding="utf-8"?>2. <manifest xmlns:android=""3. package="g.android"4. android:versionCode="1"5. android:versionName="1.0" >6.7. <uses-sdk android:minSdkVersion="7" />8. <uses-permission android:name="_PHONE" />9. <uses-permission android:name="_PHONE_STATE" />10.11. <application12. android:icon="drawable/ic_launcher"13. android:label="string/app_name" >14. <activity15. android:name=".MainActivity"16. android:label="string/app_name" >17. <intent-filter>18. <action android:name="t." />19.20. <category android:name="t.HER" />21. </intent-filter>22. </activity>23. </application>24.25. </manifest>1. 答:import .Activity;import nt.Intent;import .Uri;import .Bundle;import .Menu;import .View;import .ckListener;import t.Button;import t.TextView;public class MainActivity extends Activity private Button mCallButton;Overrideprotected void onCreate(Bundle savedInstanceState) ate(savedInstanceState);setContentView(R.ity_main);mCallButton = (Button) findViewById(R.id.btn_call);ClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stub/打给联通客服10010Intent intent = new Intent(N_CALL,("tel:10010");startActivity(intent););/Override/public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present./getMenuInflater().inflate(R., menu);/return true;/public void clickHandler(View source)/TextView tv = (TextView) findViewById(R.id.show);/tv.setText("你好!现在时间:" + new .Date();/activity_: <RelativeLayout xmlns:android="" xmlns:tools="" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="dimen/activity_vertical_margin" android:paddingLeft="dimen/activity_horizontal_margin" android:paddingRight="dimen/activity_horizontal_margin" android:paddingTop="dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="+id/show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="string/hello_world" /> <Button android:id="+id/btn_click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="id/show" android:text="点击我" android:onClick="clickHandler"/> <Button android:id="+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="id/btn_click" android:text="拨打电话"/></RelativeLayout>: <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="" package=".caipiao" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /><uses-permission android:name="_PHONE"/> <application android:allowBackup="true" android:icon="drawable/ic_launcher" android:label="string/app_name" android:theme="style/AppTheme" > <activity android:name=".ctivity" android:label="string/app_name" > <intent-filter> <action android:name="t." /> <category android:name="t.HER" /> </intent-filter> </activity> </application></manifest>2.答:打开表单模板:%FR_HOME%WebReportWEB-INFreportletsdemoanalyticsmulti_report。选中总体概况按钮,在右侧的属性表中添加点击事件。具体的js代码如下:if( != null) .removeAttr("style"); var td; if($(e.target).is("button") td=$(e.target).parent().parent(); else td=$(e.target).find("button").parent().parent(); td.css("background-image":"url()","background-color":"rgb(170, 223, 248)"); =td; 3. 答:服务器端 author version1.002008/8/2 / .ServerSocket; .Socket; .IOException; .BufferedReader; .InputStreamReader; .PrintWriter; publicclassServerSocketTest privateServerSocketss; privateSocketsocket; privateBufferedReaderin; privatePrintWriterout; publicServerSocketTest() try ss=newServerSocket(10000);/建立服务器,监听. .println("Serverislisteningat10000."); while(true) socket=ss.accept(); /获取客户端IP地址 StringremoteIP=etAddress().getHostAddress(); /获取客户端连接端口 StringremotePort=":"+calPort(); .println("Aclinetcomein!IP:"+remoteIP+remotePort); /读取客户端输入 in=newBufferedReader(newInputStreamReader(putStream(); Stringline=in.readLine(); .println("Clientsendis:"+line); /将服务器端信息发往客户端 out=newPrintWriter(tputStream(),true); ln("YourMessageReceived!"); (); in.close(); (); catch(IOExceptionex) .println(ex.getCause(); publicstaticvoidmain(Stringargs) newServerSocketTest(); 3.答:开发环境为eclipse,首先,新建两个普通的Java工程,一个命名为server_1,作为服务端;另一个命名为client_1,作为客户端。完成的功能就是在客户端的控制台输入内容后,客户端将内容发送至服务端,在服务端的控制台可以看到输入的内容,当输入的内容为shutdown时,服务端和客户端都关闭通信,通信结束。服务端代码:package server_1;import .BufferedReader;import .IOException;import .InputStreamReader;import .PrintWriter;import .ServerSocket;import .Socket;public class server_1 public static void main(String args) throws IOException /将异常全部抛出 ServerSocket server = new ServerSocket(10000); /用serversocket来启动服务器,并指定端口号 .println("服务器启动。"); Socket socket = t(); /获取客户端的socket信息 BufferedReader in = null; in = new BufferedReader(new InputStreamReader(pu