这里主要是实现了手机通信,其主要实现了打电话功能和发送短信功能。
拨号界面如下(由于模拟器屏幕兼容问题,不能正常显示界面,手机上可正常显示):
点击时每个数字时,imagebutton会更换图片,如下:
想要实现这一功能,主要是对imagebutton的监听,代码如下:
imageButton1.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
//点击
if(event.getAction() == MotionEvent.ACTION_DOWN){
//重新设置按下时的背景图片
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.d1));
}else if(event.getAction() == MotionEvent.ACTION_UP){ //松开
//再修改为抬起时的正常图片
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.d1));
}
return false;
}
});
实现拨号功能的代码如下,需要调用ACTION_CALL:
public void dial(View view) {
EditText text=(EditText)findViewById(R.id.editText1);
String number=text.getText().toString();
Intent intent = new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);//方法内部会自动为Intent添加类别: android.intent.category.DEFAULT
}
拨号功能的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="#80bbe7" 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: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="100dp" android:layout_height="70dp" android:src="@drawable/c1" android:onClick="digital_click" android:background="#80bbe7" android:tag="1" /> <ImageButton android:id="@+id/ImageButton02" android:layout_width="100dp" android:layout_height="70dp" android:src="@drawable/c2" android:onClick="digital_click" android:background="#80bbe7" android:tag="2"/> <ImageButton android:id="@+id/ImageButton03" android:layout_width="100dp" android:layout_height="70dp" android:src="@drawable/c3" android:onClick="digital_click" android:background="#80bbe7" 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="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/c4" android:background="#80bbe7" android:tag="4" /> <ImageButton android:id="@+id/ImageButton05" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/c5" android:background="#80bbe7" android:tag="5" /> <ImageButton android:id="@+id/ImageButton06" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/c6" android:background="#80bbe7" 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="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c7" android:tag="7"/> <ImageButton android:id="@+id/ImageButton08" android:layout_width="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c8" android:tag="8" /> <ImageButton android:id="@+id/ImageButton09" android:layout_width="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c9" 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="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c10" android:tag="*"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c0" android:tag="0"/> <ImageButton android:id="@+id/ImageButton12" android:layout_width="100dp" android:layout_height="70dp" android:background="#80bbe7" android:onClick="digital_click" android:src="@drawable/c11" android:tag="#" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.23" android:background="@drawable/b1" /> <ImageButton android:id="@+id/dialer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.17" android:onClick="dial" android:background="@drawable/b2" /> <ImageButton android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="delete" android:background="@drawable/b3" /> </LinearLayout> </LinearLayout>
需要注意的是必须要设置相对应的权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.VIBRATE" />
短信功能(效果图如下):
实现该功能的主要代码为:
public void send(View view){
String telMsg=MainActivity.this.tel.getText().toString();
String contentMsg=MainActivity.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);//设置数据,要去的地方
MainActivity.this.startActivity(it);
}
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" 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" > <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="收信人:" /> <EditText android:id="@+id/tel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > <requestFocus android:layout_width="wrap_content" /> </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="内容:" /> <EditText android:id="@+id/content" android:layout_width="260px" android:layout_height="wrap_content" android:ems="10" android:lines="6" android:background="@layout/edit_bg" /> </TableRow> <Button android:id="@+id/send" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="send" android:text="发送短信" /> </TableLayout> </LinearLayout>
这里我是运用了edit_bg.xml来修饰内容框:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#EFEFEF"/> <corners android:radius="3dip" /> <stroke android:width="0.5px" android:color="#505050"/> </shape> </item> </layer-list>
相应的,也需要注意的是必须要设置相对应的权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />