`

手机拨号器的制作

 
阅读更多

一个可打电话,发短信、读取通讯录的小程序。

 

手机拨号器的制作流程:

 

1.实现拨号器的页面布局

2.对按钮进行监听

3.实现编辑框的输入

4.实现对每一个数字按键的绑定

5.实现删除功能

6.实现拨号功能(添加权限)

7.实现添加联系人功能

8.实现发短信功能(新建xml页面,页面跳转)

9.实现发邮件功能

10.手残关闭了eclipse左侧窗口怎么办

11.通信录

 

 

1.实现拨号器的页面布局

 

activity_main.xml

 

<LinearLayout  //线性布局
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:orientation="horizontal" >  //水平布局       
   
        <Button  
            android:id="@+id/contact"  
            android:layout_width="fill_parent"  
            android:layout_height="60dp"  
            android:layout_weight="1" //布局比重
            android:text="联系人"/>  
            
         <Button  
            android:id="@+id/cai"  
            android:layout_width="fill_parent"  
            android:layout_height="60dp"  
            android:layout_weight="1" 
            android:text="彩信"/>  
            
        <Button  
            android:id="@+id/mail"  
            android:layout_width="fill_parent"  
            android:layout_height="60dp"  
            android:layout_weight="1" 
            android:text="邮件"/> 
    </LinearLayout>  

    <EditText
        android:id="@+id/et_showview"
        android:layout_width="fill_parent"
        android:layout_height="120dip"
        android:layout_marginTop="20dip"
        android:ems="10"  //设置EditText的宽度为10个字符的宽度,超出的部分将不显示        
        android:background="#ffffffff"  //背景色
        android:textSize="40sp"  //字体大小
        android:textStyle="bold"  //字体加粗
        android:textColor="#ff333333" >  //字体颜色
        <requestFocus />   //获得输入的光标
    </EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="20dip"
        android:gravity="center_horizontal" //水平居中
        android:orientation="vertical" >  //垂直布局

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_1"
                android:text="1" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_2"
                android:text="2" />

            <Button
               android:layout_width="fill_parent"
               android:layout_height="60dp"
               android:layout_weight="1"
               android:id="@+id/btn_3"
               android:text="3" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                 android:id="@+id/btn_4"
                android:text="4" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                 android:id="@+id/btn_5"
                android:text="5" />          

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_6"
                android:text="6" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_7"
                android:text="7" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_8"
                android:text="8" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_9"
                android:text="9" />
        </LinearLayout>
        
         <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_xing"
                android:text="*" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_0"
                android:text="0" />
         
            <Button
               android:layout_width="fill_parent"
               android:layout_height="60dp"
               android:layout_weight="1"               
               android:id="@+id/btn_jing"
               android:text="#" />
        </LinearLayout>
        
          <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_dial"
                android:text="拨号" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:layout_weight="1"
                android:id="@+id/btn_mes"
                android:text="信息" />          

            <Button
               android:layout_width="fill_parent"
               android:layout_height="60dp"
               android:layout_weight="1"
               android:id="@+id/btn_del"
               android:text="删除" />
        </LinearLayout>        
          
    </LinearLayout>
 
运行到手机上的界面如下:

 
以下代码参照学姐博客   http://429899791.iteye.com/blog/2206277
 
2.对按钮进行监听
给联系人按钮添加:android:onClick="addContact"
给彩信按钮添加:android:onClick="cai" 
给邮件按钮添加:android:onClick="sendmail" 
给拨号按钮添加:android:onClick="dial"
给删除按钮添加:android:onClick="delete"
给其余数字按钮添加:android:onClick="digital_click"
3.实现编辑框的输入
MainActivity.java
public class MainActivity extends Activity {	
	
	EditText textResult;//显示框
	StringBuffer currentNum=new StringBuffer();//用于接收输入
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);//保存Activity的状态
		setContentView(R.layout.activity_main);
		
		textResult=(EditText)findViewById(R.id.et_showview);		
	}
}
 
4.实现对每一个数字按键的绑定
接下来就是每一个数字按键绑定的方法处理,每按一个键,就记录下text,然后添加到StringBuffer里面
MainActivity.java
public void digital_click(View view){
		
		Button btnDigital=(Button) view;
		String text=btnDigital.getText().toString();
		currentNum.append(text);
		display();		
	}
 并显示到编辑框上
private void display() {
		// TODO Auto-generated method stub
		
		textResult.setText(currentNum.toString());
	}
 
5.实现删除功能
MainActivity.java
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);
	}
 
迫不及待的想运行一下了



按删除键后


 
6.实现拨号功能(添加权限)
接下来就是最重要的部分了,拨号键绑定方法:
MainActivity.java
public void dial(View view){
		
		EditText text=(EditText)findViewById(R.id.et_showview);
		String number=text.getText().toString();
		if(currentNum.length()==0){
			Toast toast=Toast.makeText(this,"请输入号码", 100);
			toast.show();
			display();
		}
		else{
			Intent intent=new Intent();
			intent.setAction(Intent.ACTION_CALL);//设置事件跳转到系统默认的拨号页面
			intent.setData(Uri.parse("tel:"+number));//传送数据
			startActivity(intent);
			//方法内部会自动为Intent添加类别:android.intent.categoty.DEFAULT			
		}				
	}
 
接下来是很重要的部分,添加权限
AndroidManifest.xml
<uses-permission 
android:name="android.permission.CALL_PHONE" />
 
赶紧给你的朋友打个电话试一下


 


 
7.实现添加联系人功能
MainActivity.java
public void addContact(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);
	}
 
运行效果:

 
8.实现发短信功能
点击"信息”按钮,跳转到一个新的界面
首先,遇到的第一个问题就是如何新建一个xml文件



 
接下就是设计新页面的布局
sendmessage.xml
<TableLayout//表格布局
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:gravity="center_horizontal"//水平居中
        android:layout_marginLeft="15dp"
        android:layout_marginTop="40dp"
        android:layout_marginRight="15dp">

        <TableRow//表格行
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:textSize="20sp" 
                android:text="收件人:" />
                       
            <EditText
                android:id="@+id/tel"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:background="#ffffffff"
                android:layout_marginLeft="10dp"               
                android:textSize="20sp" 
                android:textColor="#ff333333"
                android:ems="10"/>
            
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_marginTop="40dp">
            
            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:textSize="20sp" 
                android:text="内容:" />
            
            <EditText
                android:id="@+id/content"
                android:layout_width="wrap_content"
                android:layout_height="150dp"
                android:background="#ffffffff"
                android:layout_marginLeft="10dp"
                android:textSize="20sp" 
                android:textColor="#ff333333"
                android:ems="10"/>
            
        </TableRow>
        
        <Button
        android:id="@+id/send"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="发送"
        android:textSize="20sp"/> 
</TableLayout>
运行效果:


 下面是实现页面跳转功能:
MainActivity.java
public class MainActivity extends Activity {	
		
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);//保存Activity的状态
		setContentView(R.layout.activity_main);
		
		//view层的控件和业务层的控件,靠id关联映射,
                //给btn赋值,即设置布局文件中的Button按钮id进行关联
		Button btn=(Button)findViewById(R.id.btn_mes);			
			
		//给btn绑定监听事件
		btn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				Intent intent=new Intent(MainActivity.this,sendmessage.class);
				startActivity(intent);
			}
		});		
         }
	
 
在这里要新建一个跟xml同名的文件

 此时点击“信息”按钮就可以成功跳转到该页面
 NO!!NO!!NO!!此时还不能成功跳转,忘记一件重要的事:
每创建一个新的页面,都不要忘记注册!!!!!
AndroidManifest.xml
<activity  
           android:name="sendmessage"  
           android:label="@string/app_name" >  
       </activity>  
 跟文件中原有的activity标签并列
此时才可以成功跳转。
下面的思路及代码参照学姐博客 http://429899791.iteye.com/blog/2206382
接下来绑定button的监听方法
android:onClick="send"
 最后是发送短信功能的实现
sendmessage.java
public class sendmessage  extends Activity {
	
	private EditText tel=null;
	private EditText content=null;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sendmessage);
		this.tel=(EditText)super.findViewById(R.id.tel);
		this.content=(EditText)super.findViewById(R.id.content);
	}
	
	public void send(View view){
		String telMsg=sendmessage.this.tel.getText().toString();
		String contentMsg=sendmessage.this.content.getText().toString();
		Uri uri=Uri.parse("smsto:"+telMsg);//接收人手机
		Intent it=new Intent();
		it.setAction(Intent.ACTION_SENDTO);//指定action,我要发短信
		it.putExtra("sms_body", contentMsg);//设置信息内容
		it.setType("vnd.android-dir/mms-sms") ;//设置MIME类型
		it.setData(uri);//设置数据,要去的地方
		sendmessage.this.startActivity(it);
	}
}
 
这里又忘记了一件重要的事,添加权限
AndroidManifest.xml
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.SEND" />
 
这样才可以发短信
运行效果:


 

 
成功!!!嘻嘻嘻
 
9.实现发邮件功能
以下代码参照学姐博客 http://429899791.iteye.com/blog/2206569
邮件监听为:android:onClick="sendmail" 
MainActivity.java
public void sendmail(View view){

		Intent emailIntent=new Intent(Intent.ACTION_SEND);
		emailIntent.setType("plain/text");//设置类型
		String address[]=new String[]{
			"2905263224@qq.com"	
		};//邮件地址

		String subject="我要交作业";//邮件主题
		String content="第一次数据库作业";//邮件内容
		emailIntent.putExtra(Intent.EXTRA_EMAIL, address);//邮件地址
		emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
		emailIntent.putExtra(Intent.EXTRA_TEXT, content);
		startActivity(emailIntent);
	}
实现效果:



成功跳转到发送邮件界面,但是手机本身的邮件好像有问题,所以不能给学姐发送邮件了。

10.手残关闭了eclipse左侧窗口怎么办



11.通讯录
11.1获取手机通讯录信息
 
  • 大小: 50.1 KB
  • 大小: 45.4 KB
  • 大小: 42.7 KB
  • 大小: 44.5 KB
  • 大小: 76.7 KB
  • 大小: 182.1 KB
  • 大小: 8.6 KB
  • 大小: 16.8 KB
  • 大小: 10.8 KB
  • 大小: 40.9 KB
  • 大小: 19.5 KB
  • 大小: 40.6 KB
  • 大小: 40.6 KB
  • 大小: 18.9 KB
  • 大小: 16.7 KB
分享到:
评论

相关推荐

    自动拨号机控制器的设计与仿真

    【自动拨号机控制器的设计与仿真】 自动拨号机控制器是一种能够自动连续拨出预设电话号码的设备,尤其在数字电子技术课程设计中被作为一项实践任务。它要求学生运用数字逻辑器件,如译码器、数据选择器和逻辑门,来...

    应用实例4 手机拨号模块_51单片机_

    本文将深入探讨如何使用51单片机实现一个手机拨号模块,以便于通过单片机控制手机进行自动拨号。这个应用实例对于理解单片机与外部设备的交互以及在物联网(IoT)场景中的应用非常有价值。 首先,我们要了解51...

    拨号按键钢琴音

    1. **电话拨号技术的历史**:从早期的旋转盘式拨号器到后来的按键式电话,再到现在的智能手机,拨号方式经历了巨大变化。旋转盘式拨号器的每个孔对应一个数字,拨号时产生的机械运动触发电磁信号,这些信号的频率与...

    java制作手机界面

    通过上述分析可知,本程序主要利用Swing提供的组件及事件处理机制实现了基本的手机拨号功能。虽然功能简单,但涵盖了Swing组件的基本使用方法以及事件处理的基础流程,对于初学者来说是一个很好的学习案例。

    基于Linux下智能手机的制作与设计.doc

    【基于Linux下智能手机的制作与设计】 随着信息技术的迅速进步,计算机技术和互联网的广泛应用,我们已经进入了后PC时代,这是一个由个人数字助手、手持设备和信息家电等组成的多元化电子世界。在这个时代,32位...

    用旧手机制作远程遥控器和防盗报警器

    防盗报警器的电路设计则更为复杂,它包括红外探测器、手机号码确认电路和拨号电路。红外探测器在家中无人时进入守候状态,一旦检测到入侵者,会触发继电器J1,从而接通工作电源。通过电容C1的充放电,模拟人手按下...

    multisim仿真:三种方式自动连续播出本人手机号

    能够自动连续拨出本人手机号码,用一个数码管显示位数,另一个显示号码。 理论设计及仿真: 1.用集成计数器及门电路设计电路方案; 2.用集成计数器、译码器及门电路设计电路方案; 3.用集成计数器、数据选择器及...

    用STM32做的手机

    这些芯片内置了ADC(模拟数字转换器)、DMA(直接存储器访问)、GPIO(通用输入输出)、USART(通用同步/异步收发传输器)等丰富的外设,为构建手机功能提供了硬件基础。 打电话功能的实现可能依赖于STM32与GSM/...

    基于protues仿真-1602LCD显示电话拨号键盘按键实验

    在电子工程领域,进行硬件设计和验证时,虚拟仿真工具如Protues被广泛使用,它可以帮助工程师在实际硬件制作之前预览和测试设计的功能。本实验主题“基于Protues仿真-1602LCD显示电话拨号键盘按键实验”旨在通过虚拟...

    手机测试常用词汇的中英文对照

    - **和弦铃声 (Chord Music Ringtone)**: 一种利用和弦音乐来制作的铃声,相比于单音铃声更富有层次感。 - **对讲机 (Walkie-Talkie)**: 一种双向无线通信设备,主要用于短距离内的语音通讯。 - **全球定位系统 (GPS...

    Nokia手机软件测试

    - 单键拨号。 - 号码分组。 - **增值服务**: - 业务卡片的管理。 - 书签管理。 - 服务信箱:自动存储服务信息,如铃声、图片等。 - GPRS上网设置、WAP服务设置。 - 多模式浏览器支持。 - OTA待机图片、铃声...

    单片机课程方案设计书任务书.pdf

    自动拨号器设计旨在使用单片机和 Proteus 软件仿真,实现自动拨号器的设计和开发。该设计要求能自动通过电话线拨打你本人的手机或指定的固定电话,并具有气体泄漏、防盗等报警功能。 七、电子钟设计 电子钟设计...

    AVR.zip_AVR模拟手机_avr

    8. **测试程序**:用于验证模拟手机功能是否正常,可能包括拨号测试、接收短信测试等。 通过学习和分析这些代码,开发者可以了解如何利用AVR微控制器构建简单的移动通信设备。这涉及到的知识点包括: 1. **AVR微...

    手机连接电脑上网的教程.pdf

    2. **设置拨号连接方式**:进入“硬件管理器”-&gt;“调制解调器”,找到手机的GPRS Modem,在其“属性”-&gt;“高级”中输入`AT+CGDCONT=1,"IP","cmwap"`作为额外的初始化命令。 3. **使用PhoneSuite3.0软件**:为了更...

    Scratch少儿编程项目音效音乐素材-【机器&电子设备】音效-手机.zip

    这个压缩包中的“手机”音效可能包括接听电话、拨号、短信提示音、闹钟、关机、开机、充电等常见的手机声音。这些音效可以在Scratch项目中作为不同事件触发时播放,例如当角色(如游戏中的角色)完成特定动作时,...

    [精品推荐]制作明细报价..pdf

    此外,还提到了定制系统,满足用户个性化需求,以及信息检索系统、记数器、网上调查统计等功能。 新闻类别管理和产品发布系统允许后台实时更新内容,便于管理新闻和产品信息。视频播放功能、内置聊天室或外链聊天室...

    如何使用51单片机实现自动拨号proteus仿真设计(包含源程序及仿真文件)#资源达人分享计划#

    在本资源包中,"手机拨号"可能包含了以下内容: 1. 源程序:这是用C或汇编语言编写的51单片机程序,实现了DTMF编码和拨号逻辑。 2. Proteus仿真文件:包含电路图和预设好的51单片机模型,以及可能的其他组件模型,如...

Global site tag (gtag.js) - Google Analytics