全部博文(436)
分类:
2010-10-21 23:18:09
5.发送短信(此部分内容由付佳丽完成)
5.1功能描述
自制的发送短信的程序端
5.2程序
Main.xml文件
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="输入短信号码"/>
<EditText
android:id="@+id/txtPhoneNo" //id后的内容为在java文件中定义的名称
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="短信" />
<EditText
android:id="@+id/txtMessage"
android:layout_width="fill_parent"
android:layout_height="150px"
android:gravity="top"/>
<Button
android:id="@+id/btnSendSMS"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="发送短信"/>
LinearLayout>
TinySMS.java文件
package com.stdio.android.chp05.ex02;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class TinySMS extends Activity{
EditText txtPhoneNo;//定义组建对象
EditText txtMessage;
Button btnSendSMS;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtPhoneNo=new EditText(null);//初始化对象
txtMessage=new EditText(null);
btnSendSMS=new Button(null);
btnSendSMS.setOnClickListener(new View.OnClickListener() {//为发送按钮添加监听者
public void onClick(View v) {//发送短信的过程在事件中完成
String phoneNo=txtPhoneNo.getText().toString();
String message=txtMessage.getText().toString();
if(phoneNo.length()>0&&message.length()>0){
sendSMS(phoneNo,message);
}else {
Toast.makeText(TinySMS.this,"请重新输入电话号码和短信内容",Toast.LENGTH_LONG).show();
}
}
});
}
public void sendSMS(String phoneNumber,String message){//完成发送短信的方法
PendingIntent pi=PendingIntent.getActivity(this,0,new Intent(this,TinySMS.class),0);
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
}
}
Tinsms Mainfest 文件为应用程序设置权限
xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""
package="com.stdio.android.chp05.ex02"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TinySMS"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
application>
<uses-sdk android:minSdkVersion="4" />
<users-permission android:name="android.permission.SEND_SMS"/>//表示应用程序需要使用的发送短信的权限
manifest>
5.3 功能效果图
6.添加游戏(此部分内容由吴雄飞完成)
6.1贪吃蛇
这周我主要对Android平台上程序设计必须要掌握的图案设计方法进行了一些了解,为了以后在所做的程序中设定需要的图案(主要是几何图型)打下基础。
我参看了两个Android小游戏程序:
在贪食蛇中,我主要注意了设计者对于蛇身和食物这两个物体的设计方法
我发现,在Android平台设计图案,与在MFC下设计图案有些相似,首先是设定基点坐标(X,Y),然后使用编程环境的资源,用getContext().getResources()调用这些资源,画出红点Drawable tile = r.getDrawable(R.drawable. redstar );
6.2扑克牌
另外一个例子是是猜扑克
在这个小程序中,我主要学习的是在事件发生后,如何使对象作出适当的变化(比如翻牌)
在这个游戏中,翻牌被定为事件,即onClick,,在发生点击后,调用如下函数:
myImageView.setImageResource(R.drawable.p04);
myImageView2.setImageResource(R.drawable.p04);
myImageView3.setImageResource(R.drawable.p04);
对三张牌重新设计,setImageResource(),达到翻牌的效果。
二.已解决问题
上一阶段的问题:可以在.xml中改变组建的属性和布局。.xml和.java的使用是根据个人的需要,可以都是用,也可以不同时使用。这一阶段的问题:xml文件和java文件的连接问题,在xml文件中搭建了图形界面,在java文件中不能调用,需要用到按钮或文本框总是报出错误,没有定义。后来通过反复时间按,发现了xml文件和java文件中组建的关系。xml文件中id后面的名称就是在java文件中定义组建的名称,组建要现在java文件中定义,才能可以通过id和名称找到。还有函数的应用方面,需要使用的函数要有针对性的查资料。对于上次遗留的获取标识ID有了进一步的理解,比如程序中出现的@+id/height, height是这个界面元件中的android:id。程序中使用R.id.height来取得这个界面元件。@+id可以通过这个识别符号来控制所对应的界面元件,R类别会自动配置一个位址给这个界面元件。R类无须自己编写。
三.遗留问题
只有图形界面的时候程序运行正确如图一所示,加入java文件后程序没有错误,却总是不能正常运行,强制关闭。程序运行的预期结果为实现两台手机的短信通信,不能运行成功。在游戏的示例中对于图形的移动还是不太明白,比如刚才的贪食蛇游戏,如何利用彩色方块的移动来表现蛇的移动还不是太明白,还有一些平面赛车类游戏,需要图形的连贯变化。另外,对于贪吃蛇和扑克牌的例子中的随机变量的设定,也还存有疑点。例如贪食蛇中的食物是如何随机出现的以及扑克牌点数的随机变化,这些还要深入研究一下。
四.本阶段总结和下一阶段任务
在这个阶段,我们主要的任务是实现较大的有实际意义的程序。首先,我们进行了分工,小组的每一个成员都会有针对性的完成一个比较复杂的功能,这些资源有的来自于网络有的是看书上的例子。通过阅读代码来深入理解Android的编程。我们实践所找资料中的较大工程,通过阅读别人的程序扩展自己的思路。这次我们实现的功能已经不仅仅是一些简单的,而是为我们下一个阶段的开发做铺垫。我们每个人实现功能的方法都会有选择的在开发阶段进行应用。在本阶段末,小组讨论,交流经验和收获,汇总代码,保证了小组每个成员都能阅读几个较大工程,亲自实践一个大工程。通过前三个阶段我们对平台的搭建,熟悉环境,进行了小的实验,以及大的工程之后,我们小组下一个阶段就要进入真正的开发阶段了。在下一个阶段我们会先讨论在那个模块添加什么功能,并把每个功能细化,然后分配到每一个组员身上,大家各自完成自己的板块。最后我们进行阶段功能的汇总。
五.个人总结
在前一个阶段搭建的图形界面的基础上,本阶段尝试着进行了界面响应方面的编程实现。在这个过程中遇到了很多的困难,有按钮与响应连接方面的问题(已解决),有函数应用方面的问题,还有各个Activity之间的交互问题……但总的来说,目前问题最大的还是函数的应用方面。Android平台提供了很多的实现函数,但是每个函数怎么用,我们并不知道,当然也不可能全知道。只能是用到某个功能时上网查询看是否有可以实现的函数,但是这样效率很低。我觉得应当是将一些常用的函数都看看,心中大致知道可以有什么函数去实现什么功能,这样应用的时才会有一个大致的方向,而不是盲目的寻找。所以这一块,应当要作一些弥补。 ——李玲
这个阶段的学习中我主要是掌握了Andriod ListView 的常用方法。ListView的用法稍微复杂一点,总结一下,方便理解。程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。首先在xml里面定义一个ListView,其次是定义ListView每个条目的Layout,用RelativeLayout实现。最后在Activity里面调用和加入Listener。最容易出错的地方是在JAVA程序中。生成动态数组,加入数据时使用了循环来获取图像资源。生成适配器的Item和动态数组对应的元素这部分我用了特别长的时间查阅资料才看明白。这部分要包括:数据源,ListItem的XML实现,动态数组与ImageItem对应的子项 ,ImageItem的XML文件里面的一个ImageView,两个TextView ID 。在在这个阶段中我重点掌握了添加长按点击和长按菜单响应函数这两部分内容,我想通过这次的例子我可以在下一阶段的开发中用使用这两种功能。 ——陈卓
这一阶段,我是在上一阶段的基础上进行了深入,在程序中加入逻辑运算,实现了计算BMI值和给出建议的功能。我发现比前两次实施起来困难。本次较上次的改进之处在于,上次是将描述只写在了main.xml文件下,而这一次对main.xml文件进行了修改,将部分描述写在了string.xml文件下,透过将描述字串统一集中在string.xml中,使得以后要修改界面时更有弹性。除此之外,对于上次遗留的获取标识ID有了进一步的理解,比如程序中出现的@+id/height, height是这个界面元件中的android:id。程序中使用R.id.height来取得这个界面元件。@+id可以通过这个识别符号来控制所对应的界面元件,R类别会自动配置一个位址给这个界面元件。R类无须自己编写。 ——陈艳艳
在这个程序中主要学习了SmsManager类。SmsManger是android.telepony.gsm.SmsManager中定义的用户管理短信的应用的类,不需要直接实例化SmsManager类,而只需要调用静态方法getDefault()获得SmsManager对象。SendTextMessage()用于发动短信到指定的好吗。另外,对于上一阶段的id问题有了一定的认识,知道了id与名称的关系,一个组建的id建立的时候就是一定的,而组建id对应的名称则可以随着程序更改。搞清楚了整个程序的运行步骤和方法,在不报任何错误时调试程序非常困难,整个程序没有报任何错误,不能调试成功。 ——付佳丽
这次的学习主要是针对多个activity的用户界面设计,首先进行activity的创建,其中用到了Intent intent=new Inetent();通过它,可以找到下一个要显示的activity,并为这个activity携带一些数据。然后完成的是UI的设计,创建布局,在xml中进行配置。最后,编辑AndroidManifest.xml,这个文件像户口簿一样记录每一个activity的信息,Android系统会通过这个文件,在执行程序的时候,启动相应的activity的信息,同时,它还包括Intent等其他信息。此外,我还知道了如何在资源中引用其他资源,例如定义了属性name为hello。
——陈艳玲
在看完这两个程序后,虽然我对图形的操作有了一定的了解,但是对于图形的移动还是不太明白,比如刚才的贪食蛇游戏,如何利用彩色方块的移动来表现蛇的移动还不是太明白,还有一些平面赛车类游戏,需要图形的连贯变化,感觉难度也不小。另外,对于贪吃蛇和扑克牌的例子中的随机变量的设定,也还存有疑点。例如贪食蛇中的食物是如何随机出现的以及扑克牌点数的随机变化,这些还要深入研究一下。 ——吴雄飞