Android设置拨号声音 安卓拨号程序

您所在的位置:网站首页 拨号隐藏本机号码 Android设置拨号声音 安卓拨号程序

Android设置拨号声音 安卓拨号程序

2023-06-16 03:15| 来源: 网络整理| 查看: 265

这里介绍下,我们一般写一些小程序步骤:

画UI根据UI写业务逻辑测试

大型程序的话开始就不能够画UI了,而是要需求分析。

写一个拨号器安卓应用程序:

首先创建项目,然后一路Next。

修改界面显示的字符串为:”请输入手机号:”后就开始配置主界面的布局了。 配置布局在activity_main.xml中进行。

这里注意几个参数:

android:layout_width是当前控件的宽,它有如下几个属性值:

wrap_content:空间占用为字体占用宽度。fill_parent:占用整行宽度。match_parent:占用整行宽度。fill_parent和match_parent没有什么功能上的区别,只是match_parent是安卓更新之后把fill_parent换了一个名字而已。

这里还有设置字体相关的:

android:textSize=”19sp”,这里单位后面再讲。android:text=”FireLang”这里是设置控件里面的字体的。

这里要注意一点,android:text="@string/hello_world" 这里面的值既可以是现在这个样子,也可以直接改成你要显示的字符串。

这里要注意一个写法:@+id/edittext的意思是在R.java里面的id方法里面添加edittext这个属性。

界面写好后,到了这里我们就要实现拨号的功能了,在实现之前我们应该要获取关于拨号的控件,这里会获取到文本域和按钮这两个控件。

写代码方面当然就写到主程序里面了。叫做MainActivity.java。它是第一个被运行的Activity,运行顺序在AndroidManufest.xml里面配置。

如果我们想要得到某些控件里面的值,你可以通过一个地址找到他。

findViewById(R.id.edittext);//所有的控件都继承了一个类叫做view,可以通过它查找控件

在我们把控件从activity_main.xml中配置好了后,就会自动的在bin里面生成对应的对象,也就是说Android自动帮你实现了,它会在底层自动实现。生成好后就给一个地址,方便我们能够找到这个对象,地址就是在R文件里面。通常就是我们配置好控件后自己设置的地址叫法。

好了开始获取控件吧。

//获取到电话号码 EditText editText=(EditText)findViewById(R.id.editText1);//查找出来的是view对象 //获取到拨号按钮 Button callButton=(Button)findViewById(R.id.button1);

如果用户输入的字符为空怎么办??

那么我们就得给用户一个提示:

Toast.makeText(MainActivity.this,"电话号码不能够为空",1);//显示的时间长为1,短为0

接下来就是拨打电话号码:

//Intent是意图 Intent intent=new Intent(); //设置意图为打电话 intent.setAction(Intent.ACTION_CALL); //设置打谁的电话 intent.setData(Uri.parse("tel:"+number)); //开启意图 startActivity(intent);

但是,现在编译还是不行,因为还没有加权限,这里需要的权限是拨打电话。没有加权限是不能够正常运行的,会因为得不到权限而自己停止运行。

加权限在AndroidManifest.xml中配置。

选择权限。在permissions->users permission->permission_call_phone

好了现在就行了。注意:一定要记住加权限。

贴上MainActivity.java的源码:

package cn.domarvel.callphone; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText1); //获取到拨号按钮 Button callButton=(Button)findViewById(R.id.button1); callButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { String number=editText.getText().toString().trim(); if("".equals(number)){ Toast.makeText(MainActivity.this, "电话号码不能够为空", 1).show(); return; } //Intent是意图 Intent intent=new Intent(); //设置意图为打电话 intent.setAction(Intent.ACTION_CALL); //设置打谁的电话 intent.setData(Uri.parse("tel:"+number)); //开启意图 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.main, menu); return true; } }

这里要注意一点,editText要么是final要么是全局变量才可以在内部类中被访问, 为什么要是全局变量是因为方法调用时机不同,当调用点击事件的时候,可能方法已经执行完毕,调用的方法中变量已经被回收了,所以需要开启全局变量。那么为什么final也可以呢??

因为final(字符常量或者常量表达式,或者方法调用),那么当在class文件被加载到内存中后在准备过程会把final修饰的字段直接在被引用该值的地方替换成直接引用。

所以就需要这样来解决运行时机不同的问题了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3