首页 > 代码库 > 学习笔记5-实现电话拔号器.avi

学习笔记5-实现电话拔号器.avi

创建一个Android项目,并配置界面

设置软件的界面(main.xml)

 

1.      先将文字添加到strings.xml

    <stringname="mobile">请输入手机号</string>

<stringname="button">拨号</string>

然后在(main.xml)使用

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

     android:text="@string/mobile"/>

2.      添加一个文本输入框

    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"/>

 

3.      添加一个按钮

    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

    android:text="@string/button"/>

run as→Android Application效果图

技术分享

实现拨号功能

1.      添加按钮的点击事件

    <Button

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

     android:text="@+id/button"/>

解释:以上标记的表达式作用,在R文件中的id内部类里面添加一个常量(button),并且使用这个常量所使用的值,作为id属性的值。

2.      为文本框添加一个id

    <EditText

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

    android:text="@+id/mobile"/>

3.      在MainActivity.java写相关点击事件代码实现拨号

PS: 在mian.xml里面的控件最终父类都是View。

public class MainActivity extends Activity {

    /** Called when the activity is firstcreated. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button button = (Button)this.findViewById(R.id.button);

        button.setOnClickListener(new ButtonClickListener());

    }

 

    private final class ButtonClickListenerimplements View.OnClickListener {

 

        public void onClick(View arg0) {

            EditTextmobileText = (EditText) findViewById(R.id.mobile);

            Stringnumber = mobileText.getText().toString();

            // 激活电话拨号器的activity,让其为我拨打电话

            // new 一个意图对象,意图对象就是我们想做的、想干的事情(拨号)

Intent intent = new Intent();

            intent.setAction("android.intent.action.CALL");// 指定动作名称

            intent.addCategory("android.intent.category.DEFAULT");// 指定类别

            // 把数据放进去,传给对方的电话号码(采用URI

intent.setData(Uri.parse("tel:" +number));

          

              // 把意图传给操作系统,通过意图激活activity组件

                // 方法内部会自动为Intent添加类别,所有上面的类别可以注销

                startActivity(intent);

 

        }

    }

}

 

这些代码拨号(android.intent.category.DEFAULT) 源码都可以找到的,源码的Phone的AndroidManifest.xml  :项目的清单文件就有。

 

4.      拨号功能要激活 要申请权限 在AndroidManifest.xml

在manifest节点下

    <uses-permissionandroid:name="adnroid.permission.CALL_PHONE"/>

权限的作用:为了保护用户的隐私和安全,当app牵扯到用户隐私和安全的时候,就要求软件出示权限。app在安装的时候,会向用户提示,比如使用到拨号功能,是否同意。(开发环境debug不会提示这些)。

 

把应用run as Android Application上测试。新建一个模拟器,拨打电话到另外一个模拟器。

 

功能实现了,是通过调用系统的拨号器来实现的。

 

技术分享

性能优化

因为onCreate只会执行一次,所以我们将EditText放到这里,这样每次点击按钮就不用查找了

    /** Called when the activity is firstcreated. */

    privateEditTextmobileText;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mobileText =(EditText) findViewById(R.id.mobile);

        Button button = (Button)this.findViewById(R.id.button);

        button.setOnClickListener(new ButtonClickListener());

    }

 

    private final class ButtonClickListenerimplements View.OnClickListener {

 

        public void onClick(View arg0) {

           

            String number =mobileText.getText().toString();

            // 激活电话拨号器的activity,让其为我拨打电话

            // new 一个意图对象,意图对象就是我们想做的、想干的事情(拨号)

            Intent intent = new Intent();

            intent.setAction("android.intent.action.CALL");// 指定动作名称

            //intent.addCategory("android.intent.category.DEFAULT");//指定类别

            // 把数据放进去,传给对方的电话号码(采用URI

            intent.setData(Uri.parse("tel:" +number));

           

            // 把意图传给操作系统,通过意图激活activity组件

            // 方法内部会自动为Intent添加类别,所有上面的类别可以注销

            startActivity(intent);

        }

    }

 

PS: 在Android中定义内部类加载的性能比外部单独的类好。所以Android源码使用很多内部类。像一个通讯录的源码 就有六千多行代码,大量使用内部类。可读性差。可能他们比较注重性能。

Android查看源码,在sdk→platforms下的对应Android版本下新建sources,把下载的源码放到文件夹。

 代码下载:链接:http://pan.baidu.com/s/1pJkcTQz 密码:45cv

 

学习笔记5-实现电话拔号器.avi