安卓实训报告

时间:2024.3.27

实习报告书

                     计算机科学与技术                 

                                            

报告题目                   安卓                         

报告人                                            

指导教师                   带队教师                          

实习时间                   实习地点                         

教务处监制


第二篇:安卓通讯录实训报告


安卓实训设计报告

安卓通讯录

设计题目:   安卓通讯录          

班    级:                       

姓    名:                         

学    号:                       

指导老师:                           

日    期:                         

内容要求

一、题目分析,功能要求。

   1.1  实验目的

         熟悉Android软件开发的基本架构

        利用Eclipse和ADT插件设计通讯录

   1.2  功能

本手机通讯录工具主要实现五大功能:联系人的查询:字段查询,分组查询,字母排序查询;增加、删除联系人以及修改联系人信息;导入、导出联系人;发送联系人信息;设置。

二、实验设计

2.1 UI设计

 我们用一个ListView来显示整个通讯录,其中用TextView显示每一记录,他们的xml文件分别为:main.xml(通讯录主界面),addres.xml(添加联系人界面),list_item.xml(浏览联系人界面),find.xml(查找联系人界面)。

2.2 数据库的设计

   Android中的android.database.sqlite.SQLiteOpenHelper 类是一个专门用于数据库创建和版本管理的辅助类。因此,为了更好的管理数据库,这里我们创建一个继承自SQLiteOpenHelper的辅助类DBHelper来维护和更新数据库。

2.3功能的设计

   为了在主界面中浏览联系人的信息,并且创建主要菜单栏,我们设计了MainActivity类,主要用于显示联系人信息和菜单栏,通过菜单栏,实现通讯录的相关功能。AddressBook类主要是为了实现联系人的添加功能,并且实现信息的保存后跳转到主界面。Findactivity类主要是为了实现联系人的查找功能,输入联系人的姓名,点击查找按钮,显示所查联系人的相关信息。

三、实验程序

  见附录一。

四、实验效果图

五、总结

通过设计该通讯录,主要学习了UI设计、数据库的综合操作、动态菜单的使用以及各种权限的注册。通过本次设计,使我对Android平台的数据库操作有了更进一步的理解,同时也对Android系统有了更深入的了解。

附录一

//定义数据

publicclass ContactColumn implements BaseColumns

{

         public ContactColumn()

         {

         }

         //列名

         publicstaticfinal String NAME = "name";                                 //姓名

         publicstaticfinal String MOBILENUM = "mobileNumber"; //移动电话

         publicstaticfinal String HOMENUM = "homeNumber";               //家庭电话

         publicstaticfinal String ADDRESS = "address";                         //地址

         publicstaticfinal String EMAIL = "email";                                //邮箱

         publicstaticfinal String BLOG = "blog";                                  //博客

         //列 索引值

         publicstaticfinalint_ID_COLUMN = 0;

         publicstaticfinalintNAME_COLUMN = 1;

         publicstaticfinalintMOBILENUM_COLUMN = 2;

         publicstaticfinalintHOMENUM_COLUMN = 3;

         publicstaticfinalintADDRESS_COLUMN = 4;

         publicstaticfinalintEMAIL_COLUMN = 5;

         publicstaticfinalintBLOG_COLUMN = 6;

         //查询结果

         publicstaticfinal String[] PROJECTION ={

                  _ID,

                  NAME,

                  MOBILENUM,

                  HOMENUM,

                  ADDRESS,

                  EMAIL,

                  BLOG,

         };

}

publicclass DBHelper extends SQLiteOpenHelper

{

         publicstaticfinal String DATABASE_NAME = "mycontacts.db";//数据库名

         publicstaticfinalintDATABASE_VERSION = 2;                                 //版本

         publicstaticfinal String CONTACTS_TABLE = "contacts";  //表名

         //创建表

         privatestaticfinal String DATABASE_CREATE =

                  "CREATE TABLE " + CONTACTS_TABLE +" ("                                          

                  + ContactColumn._ID+" integer primary key autoincrement,"

                  + ContactColumn.NAME+" text,"

                  + ContactColumn.MOBILENUM+" text,"

                  + ContactColumn.HOMENUM+" text,"

                  + ContactColumn.ADDRESS+" text,"

                  + ContactColumn.EMAIL+" text,"

                  + ContactColumn.BLOG+" text);";

         public DBHelper(Context context)

         {

                  super(context, DATABASE_NAME, null, DATABASE_VERSION);

         }

         publicvoid onCreate(SQLiteDatabase db)

         {

                  db.execSQL(DATABASE_CREATE);

         }

         publicvoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

         {

                  db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE);

                  onCreate(db);

         }

}

// URI类型转换

         public String getType(Uri uri)

         {

                  switch (uriMatcher.match(uri))

                  {

                           caseCONTACTS:

                                    return "vnd.android.cursor.dir/vnd.yarin.android.mycontacts";

                           caseCONTACT_ID:

                                    return "vnd.android.cursor.item/vnd.yarin.android.mycontacts";

                           default:

                                    thrownew IllegalArgumentException("Unsupported URI: " + uri);

                  }

         }

// 删除指定数据列

         @Override

         publicint delete(Uri uri, String where, String[] selectionArgs)

         {

                  int count;

                  switch (uriMatcher.match(uri))

                  {

                           caseCONTACTS:

                                    count = contactsDB.delete(CONTACTS_TABLE, where, selectionArgs);

                                    break;

                           caseCONTACT_ID:

                                    String contactID = uri.getPathSegments().get(1);

                                    count = contactsDB.delete(CONTACTS_TABLE,

                                                                                            ContactColumn._ID

                                                                                            + "=" + contactID

                                                                                            + (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""),

                                                                                            selectionArgs);

                                    break;

                           default:

                                    thrownew IllegalArgumentException("Unsupported URI: " + uri);

                  }

                  getContext().getContentResolver().notifyChange(uri, null);

                  return count;

         }

// 插入数据

         public Uri insert(Uri uri, ContentValues initialValues)

         {

                  if (uriMatcher.match(uri) != CONTACTS)

                  {

                           thrownew IllegalArgumentException("Unknown URI " + uri);

                  }

                  ContentValues values;

                  if (initialValues != null)

                  {

                           values = new ContentValues(initialValues);

                           Log.e(TAG + "insert", "initialValues is not null");

                  }

                  else

                  {

                           values = new ContentValues();

                  }

                  // 设置默认值

                  if (values.containsKey(ContactColumn.NAME) == false)

                  {

                           values.put(ContactColumn.NAME, "");

                  }

                  if (values.containsKey(ContactColumn.MOBILENUM) == false)

                  {

                           values.put(ContactColumn.MOBILENUM, "");

                  }

                  if (values.containsKey(ContactColumn.HOMENUM) == false)

                  {

                           values.put(ContactColumn.HOMENUM, "");

                  }

                  if (values.containsKey(ContactColumn.ADDRESS) == false)

                  {

                           values.put(ContactColumn.ADDRESS, "");

                  }

                  if (values.containsKey(ContactColumn.EMAIL) == false)

                  {

                           values.put(ContactColumn.EMAIL, "");

                  }

                  if (values.containsKey(ContactColumn.BLOG) == false)

                  {

                           values.put(ContactColumn.BLOG, "");

                  }

                  Log.e(TAG + "insert", values.toString());

                  long rowId = contactsDB.insert(CONTACTS_TABLE, null, values);

                  if (rowId > 0)

                  {

                           Uri noteUri = ContentUris.withAppendedId(CONTENT_URI, rowId);

                           getContext().getContentResolver().notifyChange(noteUri, null);

                           Log.e(TAG + "insert", noteUri.toString());

                           return noteUri;

                  }

                  thrownew SQLException("Failed to insert row into " + uri);

         }

// 更新数据库

         publicint update(Uri uri, ContentValues values, String where, String[] selectionArgs)

         {

                  int count;

                  Log.e(TAG + "update", values.toString());

                  Log.e(TAG + "update", uri.toString());

                  Log.e(TAG + "update :match", "" + uriMatcher.match(uri));

                  switch (uriMatcher.match(uri))

                  {

                           caseCONTACTS:

                                    Log.e(TAG + "update", CONTACTS + "");

                                    count = contactsDB.update(CONTACTS_TABLE, values, where, selectionArgs);

                                    break;

                           caseCONTACT_ID:

                                    String contactID = uri.getPathSegments().get(1);

                                    Log.e(TAG + "update", contactID + "");

                                    count = contactsDB.update(CONTACTS_TABLE, values, ContactColumn._ID + "=" + contactID

                                                      + (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""), selectionArgs);

                                    break;

                           default:

                                    thrownew IllegalArgumentException("Unsupported URI: " + uri);

                  }

                  getContext().getContentResolver().notifyChange(uri, null);

                  return count;

         }

}

publicboolean onPrepareOptionsMenu(Menu menu)

         {

                  super.onPrepareOptionsMenu(menu);

                  finalboolean haveItems = getListAdapter().getCount() > 0;

                  if (haveItems)

                  {

                          

                           Uri uri = ContentUris.withAppendedId(getIntent().getData(), getSelectedItemId());

                           Intent[] specifics = new Intent[2];

                           specifics[0] = new Intent(Intent.ACTION_EDIT, uri);

                           specifics[1] = new Intent(Intent.ACTION_VIEW, uri);

                           MenuItem[] items = new MenuItem[2];

                                   

                           //添加满足条件的菜单

                           Intent intent = new Intent(null, uri);

                           intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

                           menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items);

                           if (items[0] != null)

                           {

                                    //编辑联系人

                                    items[0].setShortcut('1', 'e').setIcon(R.drawable.edituser).setTitle(R.string.editor_user);  

                           }

                           if (items[1] != null)

                           {

                                    //查看联系人

                                    items[1].setShortcut('2', 'f').setTitle(R.string.view_user).setIcon(R.drawable.viewuser);  

                           }

                  }

                  else

                  {

                           menu.removeGroup(Menu.CATEGORY_ALTERNATIVE);

                  }

                  returntrue;

         }

"1.0" encoding="utf-8"?>

"http://schemas.android.com/apk/res/android"

      package="com.yarin.android.MyContacts"

      android:versionCode="1"

      android:versionName="1.0"

    "@drawable/icon" android:label="@string/app_name"

         "ContactsProvider"

            android:authorities="com.yarin.android.provider.ContactsProvider"/>

        ".MyContacts"

                  android:label="@string/app_name"

           

                "android.intent.action.MAIN" />

                "android.intent.category.LAUNCHER" />

            

       

        ".ContactEditor"

                  android:label="@string/editor_user"

           

                "android.intent.action.EDIT" />

                "android.intent.category.DEFAULT" />

                "vnd.android.cursor.item/vnd.yarin.android.mycontacts" />

           

           

                "android.intent.action.INSERT" />

                "android.intent.category.DEFAULT" />

                "vnd.android.cursor.dir/vnd.yarin.android.mycontacts" />

           

       

        ".ContactView"

                  android:label="@string/view_user"

           

                "android.intent.action.VIEW" />

                "android.intent.category.DEFAULT" />

                "vnd.android.cursor.item/vnd.yarin.android.mycontacts" />

           

           

                "android.intent.category.DEFAULT" />

                "vnd.android.cursor.dir/vnd.yarin.android.mycontacts" />

           

       

   

         "android.permission.CALL_PHONE">

         "android.permission.SEND_SMS">

         "android.permission.RECEIVE_SMS" />

    "5" />

更多相关推荐:
Android实训报告

通信与电子信息专业实训报告项目名称基于Android的游戏开发班级10通信1班姓名学号指导教师成绩实训时间年月日目录一实训目的及其意义311目的及意义312研究现状3二实训主要任务重点及难点421任务422重点...

android实训报告

多媒体技术综合实训课题名称多媒体展示系统的设计与开发计算机与软件学院计算机多媒体游戏软件设计与开发计媒10211002553224学号10025532061002553218院系专业班级100255321210...

android实训报告

android实训报告学号09090103姓名冯超洁南京师范大学泰州学院题目学姓班信息工程学院Android实训报告AndroidGPS系统号09090103名冯超洁级信工09120xx年6月1AndroidG...

安卓实训

实训报告题目:Android学号:姓名:班级:指导教师:20##年6月摘要Android(安卓)系统是手机或一些平板电脑等终端的操作系统,可以说是现在最流行的系统之一。是目前最流行的手机智能平台开放的开发平台,…

android实训报告总结

学员个人实训总结

安卓天气预报实训报告

电子与信息工程学院计算机科学与技术系开放与创新实验设计报告安卓实训设计报告Android天气预报设计题目Android天气预报班级姓名学号指导老师日期20xx年6月7日1电子与信息工程学院计算机科学与技术系开放...

android实训报告

实习报告实习性质学院班级学生姓名学号指导老师实习时间一实训目的和任务1实训任务信息工程学院android视频播放器系统的设计与实现2实训目的本学期我们学习了JAVA课程和Android应用程序开发课程而Andr...

Android实训报告

Android学院班级学号姓名实训报告目录一实训背景及目的要求311背景简介312实训目的及要求3二设计思路321设计题目322功能分析423模块划分4三设计实现及代码分析431第一个Activity4311布...

android实训报告[2]

实习报告实习性质学院班级学生姓名学号指导老师实习时间一实训目的和任务1实训任务信息工程学院android视频播放器系统的设计与实现2实训目的本学期我们学习了JAVA课程和Android应用程序开发课程而Andr...

Android实训报告

年日摘要本文首先介绍了Android开发环境的安装和部署过程之后介绍了Android项目的架构及应用程序组成着重讲解了手机用户界面的布局方法和常见开发控件的使用然后介绍了Android中的文件存储管理SQLit...

安卓开发实训报告

长沙学院课程设计说明书题系部目通信系统综合课程设计电子信息与电气工程通信3班专业班级姓学指导教名李元春号20xx043312师冯璐刘光灿陈威兵王路露张刚林李广柱起止日期20xx102620xx1113长沙学院课...

android生产实习报告

生产实习报告一实习目地生产实习是把理论与实际结合通过对理论知识的理解领悟从而运用到生活实际巩固所学的知识提高对实际生活的认识积累经验同时生产实习也是大学生以学生身份到工作者身份的一个重要过度阶段在此期间学生能够...

安卓实训报告(31篇)