1、 修改并完成,提交验收;设计过程、步骤(可加页):一功能结构二设计说明1.备忘录数据存储实现为了持久地将用户的备忘录信息保存下来,需要将这些信息存储在SQLite数据库中。备忘录需要保存的信息有:编号(ID)、提醒日起(Datel)、提醒时间(Time1)、提醒内容(Content)、是否启用(NO_OFF)、是否声音提醒(Alarm)、创建日期(Created)等。在操作北往里数据表手机,一些属性在几个类中使用,为此我们将其定义为一个常量类,在该常量类中声明。常量类名称为TaskList,该类有一个内部Tasks继承BaseColumns,在该类中声明URI和列常量等,方便后面使用。2.备忘
2、录ContentProvidershi实现 为了使备忘录数据表具有通用的数据共享访问机制,需要通过ContentProvider来实现。这里我们定义一个TaskListProvide类,该类继承ContentProvider,实现了onCreate、query、getType、insert、deleted、update等方法,来支持数据的增、删、查、改等操作。3.备忘录列表展示 用户可能哟呵常见很多条备忘录信息,而且需要维护这些备忘录信息,例如删除、修改等功能。这里我们通过一个ListView来展示备忘录列表,通过选项菜单提供微幅数据借口。4.备忘录维护 备忘录维护是应该用程序的核心,提供了添
3、加、修改备忘录信息的功能。备忘录信息也通过ListView来展示,ListView的每一项通过自定义View来实现。通过单击ListView的每一项来设置备忘录信息。5.备忘录定时提醒 为了更好的提醒用户在特定时间做某项工作,要设置语音和震动等功能,该功能通过定义Activity发出广播,BroadcastReceiver接收广播,并通过Notification提醒用户。6.程序运行结果与分析(可以加页): 1.2.列表展示主要功能把备忘录界面展示给用户,用户可以添加和删除备忘录信息,很大程度上方便了用户的操作。运行结果3.备忘录定时提醒这个功能可以很有效的提醒用户关闭备忘录,以免造成不必要的
4、资源浪费。运行结果:设计体会与建议:这个课程设计主要研究了Android平台的架构以及在Android平台上开发备忘录软件,此应用除了具备简单备忘功能外,还具备简单数据处理功能,还有闹钟提醒相对高级点的功能。这个课程设计在Android平台以及在该平台上开发手机备忘录软件上做了大量的工作,但因个人能力有限,还有很多问题需要解决,现对未来可以进行的工作做出以下几点感言: (l)这个课程设计实现的备忘录客户端是基于Android平台进行开发的,但是还未能真正解析Android的精髓,系统的界面设计也不是很完善,对Android平台进一步研究,能够使系统在设计方面更加快捷和完善。 (2)这个课程设计
5、所开发的系统目前还只是在模拟器上进行运行,还有待移植到真机上进行进一步研究。相信随着研究的进一步深入,这些问题会逐步得到解决,相信基于Android平台的备忘录软件会有很好的应用前景。附录:源程序代码1. AlarmActivity.javapackage com.amaker.ch17.app;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.content.Context;import .Uri;import an
6、droid.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/* * author 冯春礼 * 提醒用户 */public class AlarmActivity extends Activity public static final int ID = 1; Override protected void onCreate(Bundle savedInstanceStat
7、e) super.onCreate(savedInstanceState); setContentView(R.layout.alarm); / 获得Button、TextView实例 Button btn = (Button) findViewById(R.id.cancelButton01); TextView tv = (TextView)findViewById(R.id.msgTextView01); / 获得NotificationManager实例 String service = Context.NOTIFICATION_SERVICE; final NotificationM
8、anager nm = (NotificationManager)getSystemService(service); / 实例化Notification Notification n = new Notification(); / 设置显示提示信息,该信息也会在状态栏显示 String msg = getIntent().getStringExtra(msg); / 显示时间 n.tickerText = msg; tv.setText(msg); / 设置声音提示 n.sound = Uri.parse(file:/sdcard/fallbackring.ogg / 发出通知 nm.not
9、ify(ID, n); / 取消通知 btn.setOnClickListener(new OnClickListener() Override public void onClick(View v) nm.cancel(ID); finish(); ); 2. TaskDetailActivity.javaimport java.util.Calendar;import android.app.AlarmManager;import android.app.AlertDialog;import android.app.DatePickerDialog;import android.app.D
10、ialog;import android.app.ListActivity;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.ContentUris;import android.content.ContentValues;import android.content.DialogInterface;import android.content.Intent;import android.view.LayoutInflater;import android.vi
11、ew.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.CheckedTextView;import android.widget.DatePicker;import android.widget.EditText;import android.widget.ListView;import android.widget.TimePicker;import android.widget.AdapterView.OnItemClickListener
12、;import com.amaker.ch17.app.TaskList.Tasks; * * 备忘录详细信息类,该信息public class TaskDetailActivity extends ListActivity / 备忘录信息列表 private ListView listView = null; / 提醒日期 private int mYear; private int mMonth; private int mDay; / 提醒时间 private int mHour; private int mMinute; / 日期显示TextView private TextView
13、dateName, dateDesc; / 时间显示TextView private TextView timeName, timeDesc; / 提醒内容TextView private TextView contentName, contentDesc; / 是否开启提醒 private int on_off = 0; / 是否声音警告 private int alarm = 0; / 显示日期、时间对话框常量 static final int DATE_DIALOG_ID = 0; static final int TIME_DIALOG_ID = 1; / 保存内容、日期、时间字符串
14、private String content, date1, time1; / 备忘录ID private int id1; / 多选框 private CheckedTextView ctv1, ctv2; / 访问布局实例 private LayoutInflater li; / 初始化方法 private void init(Intent intent) Bundle b = intent.getBundleExtra(b if (b != null) id1 = b.getInt(id content = b.getString(content date1 = b.getString(
15、date1 time1 = b.getString(time1 on_off = b.getInt(on_off alarm = b.getInt(alarm if (date1 != null & date1.length() 0) String strs = date1.split(/ mYear = Integer.parseInt(strs0); mMonth = Integer.parseInt(strs1); mDay = Integer.parseInt(strs2); if (time1 ! time1.length() String strs = time1.split(:
16、mHour = Integer.parseInt(strs0); mMinute = Integer.parseInt(strs1); public void onCreate(Bundle savedInstanceState) / 获得ListView listView = getListView(); / 实例化LayoutInflater li = getLayoutInflater(); / 设置ListView Adapter listView.setAdapter(new ViewAdapter(); / 可多选 listView.setChoiceMode(ListView.C
17、HOICE_MODE_MULTIPLE); / 获得Calendar实例 final Calendar c = Calendar.getInstance(); / 获得当前日期、时间 mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE); / 响应列表单击事件 listView.setOnItemClickList
18、ener(new OnItemClickListener() public void onItemClick(AdapterView av, View v, int position, long id) switch (position) / 设置是否开启提醒 case 0: ctv1 = (CheckedTextView) v; if (ctv1.isChecked() on_off = 0; else on_off = 1; break; / 设置提醒日期 case 1: showDialog(DATE_DIALOG_ID); / 设置提醒时间 case 2: showDialog(TIM
19、E_DIALOG_ID); / 设置提醒内容 case 3: showDialog1(请输入内容: / 设置是否开启语音提醒 case 4: ctv2 = (CheckedTextView) v; if (ctv2.isChecked() alarm = 0; setAlarm(false); alarm = 1; setAlarm(true); default: protected void onResume() super.onResume(); / 初始化列表 init(getIntent(); / ListView Adatper,该类实现了列表的每一项通过自定义视图实现 class
20、ViewAdapter extends BaseAdapter / 列表显示内容 String strs = 是否开启, 日期时间内容开启闹钟 ; / 获得列表列数 Override public int getCount() return strs.length; / 返回列表项 public Object getItem(int position) return position; / 返回列表ID public long getItemId(int position) / 获得当前列表项视图 public View getView(int position, View convertVi
21、ew, ViewGroup parent) View v = li.inflate(R.layout.item_row, null); switch (position) / 是否开启该条备忘录 case 0: ctv1 = (CheckedTextView) li .inflate( android.R.layout.simple_list_item_multiple_choice, null); ctv1.setText(strsposition); if (on_off = 0) ctv1.setChecked(false); else ctv1.setChecked(true); re
22、turn ctv1; / 提醒日期 case 1: dateName = (TextView) v.findViewById(R.id.name); dateDesc = (TextView) v.findViewById(R.id.desc); dateName.setText(strsposition); dateDesc.setText(mYear + + mMonth + + mDay); return v; / 提醒时间 case 2: timeName = (TextView) v.findViewById(R.id.name); timeDesc = (TextView) v.f
23、indViewById(R.id.desc); timeName.setText(strsposition); timeDesc.setText(mHour + + mMinute); / 提醒内容 case 3: contentName = (TextView) v.findViewById(R.id.name); contentDesc = (TextView) v.findViewById(R.id.desc); contentName.setText(strsposition); contentDesc.setText(content); / 是否声音提示 case 4: ctv2 =
24、 (CheckedTextView) li ctv2.setText(strsposition); if (alarm = 0) ctv2.setChecked(false); ctv2.setChecked(true); return ctv2; default: break; return null; / 显示对话框 protected Dialog onCreateDialog(int id) switch (id) / 显示日期对话框 case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); / 显示时间对话框 case TIME_DIALOG_ID: return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); return null; / 设置通知提示 private void setAlarm(boolean flag
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1