1、电话拨号示例 一、教学目的,1、学习掌握android的ui编程技术2、了解和熟悉android的电话API技术3、学习掌握android程序APK,电话拨号示例 二、预习内容,1、ui部分界面布局组件访问事件处理2、电话API部分拨号机制电话管理器3、学习掌握android程序APK什么是APK如何下载、安装、删除APK,电话拨号示例 三、电话拨号程序简介,1、拨号程序主界面2、功能:点击按钮“0”“9”在电话号码栏内输入电话号码点击按钮“ ”删除最后输入的号码点击“ ”开始拨号,电话拨号示例 四、要求,编写程序实现以上功能:1、实现录入电话号码使用自制号码盘录入号码2、实现拨号功能3、监视
2、电话状态 来电4、将APK下载到手机上,在手机上运行拨号 程序,五、编程指导 1、创建工程,(1)工程名:TelphoneDial(2)工程存储路径 TelphoneDial(3)Build Target选择:Android2.2,五、编程指导 1、创建工程,(4)Application Name:TelphoneDial(5)Package Name: com.android.telphonedial(6)Activity:TelphoneDialActivity(7)Minimum SDK:8,五、编程指导 2、AppName,五、编程指导 3、布局main.xml,(1)布局结构,五、编
3、程指导 3、布局main.xml,()均衡布局android:layout_weight使两个或多个组件占用等比例区域。例如: 一行有个按钮,每个按钮占用行的则设置每个按钮的属性android:layout_weight=“1”即可,五、编程指导 3、布局main.xml,()均衡布局android:layout_weight使两个或多个组件占用等比例区域。例如: 一行有个按钮,每个按钮占用行的则设置每个按钮的属性android:layout_weight=“1”即可,五、编程指导 4、按钮背景图片,(1)制作按钮背景图片,如图:n0.png:输入“”的按钮背景图片n.png:输入“1”的按钮
4、背景图片n.png:输入“2”的按钮背景图片n.png:输入“3”的按钮背景图片n.png:输入“4”的按钮背景图片n.png:输入“5”的按钮背景图片n.png:输入“6”的按钮背景图片n.png:输入“7”的按钮背景图片n.png:输入“8”的按钮背景图片n.png:输入“9”的按钮背景图片backspace.png: 退格键的按钮背景图片Ringon.png:拨号按背景图片,五、编程指导 4、按钮背景图片,(2) 在工程res下创建子目录drawable,将图片文件拷贝到目录下(3)点击工程文件名,按F5,则系统自动在R.java文件中为每个图像注册一个,五、编程指导 4、按钮背景图片,
5、(4)为按钮增加背景图片属性Android:background用来为按钮增加背景图片 例如: 按钮“”的背景图片 android:background=drawable/n1,5、代码 (1)、按钮,(a)在中导入按钮包import android.widget.Button;(b)定义按钮对象 Button b0,b1,b2; Button b3,b4,b5; Button b6,b7,b8; Button b9,badd,bbackspace; Button bringon,bringoff,bw;(c )指向界面中的按钮b0=(Button)findViewById(R.id.butt
6、on0);b1=(Button)findViewById(R.id.button1);b2=(Button)findViewById(R.id.button2);b3=(Button)findViewById(R.id.button3);b4=(Button)findViewById(R.id.button4);b5=(Button)findViewById(R.id.button5);b6=(Button)findViewById(R.id.button6);b7=(Button)findViewById(R.id.button7);b8=(Button)findViewById(R.id.
7、button8);b9=(Button)findViewById(R.id.button9);badd=(Button)findViewById(R.id.buttonadd);bbackspace=(Button)findViewById(R.id.buttonbackspace);bringon=(Button)findViewById(R.id.buttonringon);bringoff=(Button)findViewById(R.id.buttonringon);bw=(Button)findViewById(R.id.buttonw);,5、代码 (1)、按钮,(d)处理按钮点击
8、事件 在类声明部分引入接口OnClickListener例如:public class TelphoneCallActivity extends Activity implements OnClickListener定义单机相应函数public void onClick(View v) 其中V:单机事件对应的组件,5、代码 (1)、按钮,增加单机事件监听适配器,用于监听按钮单机事件b0.setOnClickListener(this); b1.setOnClickListener(this); b2.setOnClickListener(this); b3.setOnClickListener
9、(this); b4.setOnClickListener(this); b5.setOnClickListener(this); b6.setOnClickListener(this); b7.setOnClickListener(this); b8.setOnClickListener(this); b9.setOnClickListener(this); badd.setOnClickListener(this); bbackspace.setOnClickListener(this); bringon.setOnClickListener(this); bringoff.setOnCl
10、ickListener(this); bw.setOnClickListener(this);这样,只要上边的任意按钮单机,都会调用函数void onClick(View v),5、代码 (1)、按钮,(e)区分哪个按钮点击事件函数void onClick(View v) 中代表实施单机事件的按钮,.getId()为实施单机事件按钮的ID,用ID识别那个按钮单机事件。代码如下:switch(.getId()case R.id.button0: break;case R.id.button1: break;case R.id.button2: break;case R.id.button3: b
11、reak;case R.id.button4: break;case R.id.button5: break;case R.id.button6: break;case R.id.button7: break;case R.id.button8: break;case R.id.button9: break;case R.id.buttonbackspace:break;case R.id.buttonw: break;case R.id.buttonringon: break;,5、代码 (2)、处理电话号码,(a)记录电话号码定义CharSequence 对象用于记录电话号码。 CharS
12、equence cs;(b)定义EditText对象,指向界面电话号码栏。 EditText ed; ed=(EditText)findViewById(R.id.telphone); (c)输入电话号码:以按钮”0”为例当点击按钮“”时,调用函数void onClick(View v) ;依据.getId(),调用代码 case R.id.button0: break;加入代码cs=cs+“0”; /录入电话号码ed.setText(cs);/电话号码显示在界面电话号码栏其他数字按钮处理方法类似。,5、代码 (2)、处理电话号码,(d)使用退格键删除电话号码当点击退格按钮时,调用函数void
13、 onClick(View v) ;依据.getId(),调用代码 case R.id.buttonbackspace:break;加入删除数字字符代码if(cs.length()0)String s,s1;s=cs.toString();s1=s.substring(0,s.length()-1) ; /删除电话号码cs=s1;ed.setText(cs);显示电话号码,5、代码 (3)、拨号处理,(a)在AndroidManifest.文件中注册拨号许可权在后添加如下内容:(b)当点击拨号按钮时,调用函数void onClick(View v) ;依据.getId(),调用代码 case
14、R.id.buttonringon: break;(c )加入拨号代码String number=cs.toString().trim();Intent intent=/构建Intent,运行action.CALLnew Intent(android.intent.action.CALL,Uri.parse(tel:+number);startActivity(intent);,5、代码 (4)、电话管理器,(a)android.telephony.TelephonyManager 获取电话服务信息 用户信息 电话状态。(b)在androidManifest.xml注册获取状态许可权,5、代码
15、 (4)、电话管理器,(c ) 编写监视电话状态改变的类class TelPhoneStateListener extends PhoneStateListener Override public void onCallStateChanged(int state,String incomingNumber) super.onCallStateChanged(state, incomingNumber); switch(state) case TelephonyManager.CALL_STATE_IDLE:logText=call state ide.incoming number is:+
16、incomingNumber+logText; break; case TelephonyManager.CALL_STATE_RINGING:logText=call state ringing.incoming number is:+incomingNumber+logText; break; case TelephonyManager.CALL_STATE_OFFHOOK:logText=call state offhook.incoming number is:+incomingNumber+logText; break; default: logText=call state +st
17、ate+offhook.incoming number is:+incomingNumber+logText; break; tv.setText(logText); ,5、代码 (4)、电话管理器,(d )定义电话管理器对象、电话适配器对象Private TelPhoneStateListener myListener=null; private TelephonyManager teleMgr=null;(e)获取系统电话服务信息 teleMgr=(TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);(f)设置电话状态监视适配器myListener=new TelPhoneStateListener();,Exp22_Hell.apk,六、APK,1、*.apk android应用程序。例如: 如果工程名字HelloWorld,则android 应用程序名称为Helloworld.apk 存储在子目录bin下2、向手机安装apk进入CMD窗口,执行adb install Helloworld.apk将应用程序安装在手机上。,