这次主要是使用Android实现一个打电话的界面以及功能,大概就长下面这个样子:
图片稍微有点糊,看不太清数字,就是0~9加上*和#号
下面两排每一个图标对应一个功能,分别是添加联系人、拨号、删除、查看通讯录、发送短彩信、发送邮件,今天主要是实现了第一排的功能......
1、界面设计activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/back2" android:orientation="vertical" 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" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="82dp" android:ems="10" android:background="#ffffffff" android:textSize="40sp" android:textStyle="bold" android:hint="@null" android:textColor="#ff333333" > <requestFocus /> </EditText> <TableLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.70" > <TableRow android:id="@+id/TableRow04" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton01" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b1" android:scaleType="fitXY" android:layout_marginLeft="12dp" android:background="@drawable/button_selector" android:tag="1" /> <ImageButton android:id="@+id/ImageButton02" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/b2" android:onClick="digital_click" android:layout_marginLeft="30dp" android:scaleType="fitXY" android:background="@drawable/button_selector" android:tag="2"/> <ImageButton android:id="@+id/ImageButton03" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/b3" android:onClick="digital_click" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:background="@drawable/button_selector" android:tag="3" /> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton04" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b4" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:scaleType="fitXY" android:background="@drawable/button_selector" android:tag="4" /> <ImageButton android:id="@+id/ImageButton05" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b5" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:background="@drawable/button_selector" android:tag="5" /> <ImageButton android:id="@+id/ImageButton06" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b6" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:background="@drawable/button_selector" android:tag="6"/> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton07" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b7" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:tag="7"/> <ImageButton android:id="@+id/ImageButton08" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/b8" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:scaleType="fitXY" android:tag="8" /> <ImageButton android:id="@+id/ImageButton09" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b9" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:tag="9" /> </TableRow> <TableRow android:id="@+id/TableRow01" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton10" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b10" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:tag="*"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b0" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:tag="0"/> <ImageButton android:id="@+id/ImageButton12" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/b11" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:scaleType="fitXY" android:tag="#" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/add" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:onClick="newPeople" android:background="@drawable/add" /> <ImageButton android:id="@+id/dialer" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="41dp" android:onClick="dial" android:background="@drawable/call" /> <ImageButton android:id="@+id/delete" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="46dp" android:onClick="delete" android:background="@drawable/delete" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/contact" android:layout_width="60dp" android:layout_height="60dp" android:onClick="onActivityResult" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:background="@drawable/contact" /> <ImageButton android:id="@+id/message" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/msg" android:layout_marginLeft="41dp" android:layout_marginTop="10dp" /> <ImageButton android:id="@+id/email" android:layout_width="60dp" android:layout_height="60dp" android:onClick="sendEmail" android:background="@drawable/email" android:layout_marginLeft="46dp" android:layout_marginTop="10dp"/> </LinearLayout> </LinearLayout>
(1)背景切换的实现:
为了方便用户知道自己按了什么键,在按键的时候会进行一下背景切换,不按的时候显示src路径下的图片,按下去时显示background的图片,这里就涉及到background和src之间的大小关系,可以使用scaleType来进行调节,ayout_width什么的,定义的都是background的大小。
(2)所有的数字按钮都需要触发一个事件,就是记录下来是哪个数字,如果都在MainActivity中捕获的,有点麻烦,所以定义了一个digital_click函数,所有的数字的点击都触发这个函数
2、MainActivity中功能的实现
(1)digital_click函数,捕获点击的数字
public void digital_click(View view){ ImageButton btnDigital=(ImageButton) view; String text=btnDigital.getTag().toString();//捕获点击按钮中的tag currentNum.append(text);//将捕获的数字存储起来 display();//显示点击的数字 } public void display(){ textResult.setText(currentNum.toString()); }
(2)delete删除
//删除功能 public void delete(View view){ if(currentNum.length()>=1){ currentNum.delete(currentNum.length()-1, currentNum.length()); } if(currentNum.length()==0){//没有号码时,提示 Toast toast=Toast.makeText(this,"请输入号码",100); toast.show(); display(); } textResult.setText(currentNum); }
(3)拨号功能实现
public void dial(View view) { EditText text=(EditText)findViewById(R.id.editText1);//获取editText中显示的电话号码 String number=text.getText().toString(); Intent intent = new Intent(); intent.setAction(intent.ACTION_CALL);//调用android自定义的API打电话 intent.setData(Uri.parse("tel:"+number));//设置电话号码 startActivity(intent);//方法内部会自动为Intent添加类别: android.intent.category.DEFAULT }
(4)添加联系人
我们这里实现的添加联系人是点击添加联系人按钮,会自动跳转到手机的添加联系人页面(就跟平时自己在手机上用的一样)
//新建联系人 public void newPeople(View view){ Intent it = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"),"contacts" )); it.setType("vnd.android.cursor.dir/person"); String number = textResult.getText().toString(); it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,number); startActivity(it); }
最后结果如下:
相关推荐
这个"android打电话源码.rar"文件很可能是包含了一个简单的Android应用示例,用于演示如何使用Android SDK中的电话功能。以下是对该源码可能涉及的关键知识点的详细解释: 1. **AndroidManifest.xml**:在Android...
在安卓平台上,开发一款涉及到通讯录联系人打电话以及归属地查询的应用是一项常见的任务。...对于希望深入理解Android通讯录操作、打电话功能以及归属地查询的开发者来说,这些源码是一个很好的学习资源。
以下是对"Android高级应用源码-android打电话源码.zip"中可能包含的关键知识点的详细说明: 1. **权限管理**:在Android系统中,拨打和接听电话属于敏感操作,因此需要在`AndroidManifest.xml`文件中声明相应的权限...
在Android平台上实现拨打电话并同时让屏幕保持黑屏或关屏的功能,对于一些特定的应用场景,比如紧急呼叫或者隐私保护,具有一定的实用价值。本文将详细介绍如何实现这一功能,并提供相应的源码分析。 首先,我们...
在Android平台上,实现一个简单的拨号功能涉及到对系统电话API的使用,这主要涉及到`Intent`、`tel:`协议以及权限管理。以下是对这个话题的详细解析: 首先,Android应用程序不能直接操作硬件,而是通过发送意图...
在Android平台上实现打电话检测和抽烟检测是一项结合了图像识别与行为分析的技术,它涉及到了多个IT领域的专业知识。本文将深入探讨这些技术要点。 首先,我们要理解图像检测的基础——图像算法。图像算法是计算机...
在安卓(Android)系统中,打电话功能是移动设备的基本功能之一。这个压缩包“安卓Android源码——android打电话源码.zip”(实际为rar文件)很可能是包含了Android系统中实现拨打电话功能的相关源代码。通过分析...
综上所述,Android 定时打电话功能的实现涉及了多个Android核心概念和技术,包括权限管理、服务调度、广播接收器和电话API的使用。通过学习这个源码,开发者可以深入理解Android系统如何处理定时任务和电话交互,这...
这个"安卓开发-android打电话源码.zip"压缩包很可能是包含了一个示例项目,演示如何在Android应用中实现拨打电话的功能。在这里,我们将深入探讨这一核心知识点。 首先,我们要知道在Android中拨打电话涉及到的主要...
本资源“安卓Android源码——android打电话源码.rar”提供了一种深入理解如何在Android应用程序中实现打电话功能的方式。通过分析这个源码,我们可以学习到如何在Android系统中集成电话拨打功能,并了解相关API和...
本项目"Android 定时打电话功能源码"提供了一个实现这一功能的实例,适用于开发者参考学习。 首先,我们要了解Android的定时任务通常通过AlarmManager服务来实现。AlarmManager是Android系统提供的一个类,允许应用...
在Android中,拨打电话功能是通过调用`Intent`对象来实现的,具体涉及以下步骤: 1. **权限声明**:在AndroidManifest.xml文件中,必须声明`<uses-permission>`标签来获取拨打电话的权限。对于拨打电话,需要添加`...
本文主要介绍基于Android的手机安全卫士课程设计,旨在掌握Android编程环境的安装、模拟器模拟手机环境、Android APP开发过程、Android功能实现和手机安全卫士APP功能设计。课程设计的主要内容包括Android开发环境...
在Android平台上进行应用程序开发时,实现打电话功能是常见的需求之一。这个"Android开发实例:打电话.zip"文件包含了一个具体的示例,教你如何在Android应用中集成拨打电话的功能。以下是关于这个话题的详细知识: ...
在Android平台上进行应用开发时,打电话功能是一项基本且重要的任务。这个"Android应用源码之android打电话源码"的项目,旨在为学习者提供一个实际的Android应用源码示例,帮助他们理解如何在Android应用中实现拨打...
标题提到的"安卓通讯录联系人打电话归属地相关-手机禁止使用打电话功能.rar"文件,很可能包含了一种技术方案或者应用,用于限制或阻止手机拨打特定号码,特别是通过通讯录联系人来实现这一目标。这个描述暗示了可能...
在Android应用开发中,打电话功能是一项基础且重要的功能,它允许用户通过应用程序直接拨打电话。本项目源码提供了实现这一功能的详细示例,对于学习和理解Android编程,特别是涉及电话服务API的使用,有着极大的...
在Android平台上进行应用程序开发时,实现打电话功能是一个常见的需求,特别是在一些实用工具或者社交类应用中。本项目是一个关于“Android打电话源码”的毕业设计,旨在帮助学生理解并掌握Android应用开发中的电话...