当前位置:文档之家› 安卓开发实例四

安卓开发实例四

安卓开发实例四
安卓开发实例四

NoteEditor深入分析

首先来弄清楚“日志编辑“的状态转换,通过上篇文章的方法来做下面这样一个实验,首先进入“日志编辑“时会触发onCreate和onResume,然后用户通过Option Menu选择”Edit title”后,会触发onSaveInstanceState和onPause,最后,用户回到编辑界面,则再次触发onResume。

最终通过LogCat可以得到下图:

那么下面就按照上述顺序对此类进行剖析。首先是onCreate方法,一开始先获取导致进入“日志编辑”界面的intent,分析其操作类型可得知是“编辑

日志”还是“新增日志”。

final Intent intent = getIntent();

// Do some setup based on the action being performed.

final String action = intent.getAction();

若是“编辑日志”,则设置当前状态为“编辑”,并保存待编辑日志的URI. mState = STATE_EDIT;

mUri = intent.getData();

若是“新增日志”,则设置当前状态为“新增”,并通过content provider 向数据库中新增一个“空白日志”,后者返回“空白日志”的URI.

mState = STATE_INSERT;

mUri = getContentResolver().insert(intent.getData(), null );

然后不管是“编辑”或“新增”,都需要从数据库中读取日志信息(当然,若是“新增”,读出来的肯定是空数据)。

mCursor = managedQuery(mUri, PROJECTION, null, null, null);

最后,类似于web应用中使用的Session,这里也将日志文本保存在InstanceState中,因此,若此activity的实例此前是处于stop状态,则我们可以从它那取出它原本的文本数据.

if (savedInstanceState != null)

{

mOriginalContent = savedInstanceState.getString(ORIGINAL_ CONTENT);

}

第二个来分析onResume函数,首先把游标置于第一行(也只有一行)

mCursor.moveToFirst();

然后取出“正文”字段,这时有一个比较有趣的技巧,“设置文本”并不是调用 setText,而是调用的setTextKeepState,后者相对于前者有一个优点,就是当界面此前stop掉,现在重新resume回来,那么此前光标所在位置仍然得以保存。而若使用setText,则光标会重置到行首。

String note = mCursor.getString(COLUMN_INDEX_NOTE);

mText.setTextKeepState(note);

最后,将当前编辑的正文保存到一个字符串变量中,用于当activity被暂停时使用。

if (mOriginalContent == null)

{

mOriginalContent = note;

}

通过前面的图可以得知,activity被暂停时,首先调用的是onSaveInstanceState函数。

outState.putString(ORIGINAL_CONTENT, mOriginalContent);

这里就仅仅将当前正编辑的正文保存到InstanceState中(类似于Session)。最后来看onPause函数,这里首先要考虑的是若activity正要关闭,并且编辑区没有正文,则将此日志删除。

if (isFinishing() && (length == 0) && !mNoteOnly)

{

setResult(RESULT_CANCELED);

deleteNote();

}

否则的话,就更新日志信息

ContentValues values = new ContentValues();

if (!mNoteOnly)

{

values.put(Notes.MODIFIED_DATE, System.currentTim eMillis());

if (mState == STATE_INSERT)

{

String title = text.substring(0, Math.min(30, length));

if (length > 30)

{

int lastSpace = https://www.doczj.com/doc/0214869264.html,stIndexOf(' ');

if (lastSpace > 0)

{

title = title.substring(0, lastSpace); }

}

values.put(Notes.TITLE, title);

}

}

values.put(Notes.NOTE, text);

getContentResolver().update(mUri, values, null, null); }

}

在生成Option Menu的函数onCreateOptionsMenu中,我们再一次看到下面这段熟悉的代码了:

Intent intent = new Intent(null, getIntent().getData());

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0,

new ComponentName(this, NoteEditor.class), null, intent, 0, null);

这种生成动态菜单的机制在Android实例剖析笔记(二)这篇文章中已经介绍过了,就不赘述了。最后,来看下放弃日志和删除日志的实现,由于还没有接触到底层的content provider,这里都是通过getContentResolver()提供的update,delete,insert来向底层的content provider发出请求,由后者完成

实际的数据库操作。

private final void cancelNote()

{

if (mCursor != null)

{

if (mState == STATE_EDIT)

{

// Put the original note text back into the database mCursor.close();

mCursor = null;

ContentValues values = new ContentValues();

values.put(Notes.NOTE, mOriginalContent);

getContentResolver().update(mUri, values, null, null);

}

else if (mState == STATE_INSERT)

{

// We inserted an empty note, make sure to delete it deleteNote();

}

}

setResult(RESULT_CANCELED);

finish();

}

private final void deleteNote()

{

if (mCursor != null)

{

mCursor.close();

mCursor = null;

getContentResolver().delete(mUri, null, null);

mText.setText("");

}

}

剖析NotePadProvider

NotePadProvider就是所谓的content provider,它继承自

android.content.ContentProvider,也是负责数据库层的核心类,主要提供五个功能:

1)查询数据

2)修改数据

3)添加数据

4)删除数据

5)返回数据类型

这五个功能分别对应下述五个可以重载的方法:

public int delete(Uri uri, String selection, String[] selectionArgs) {

return 0;

}

public String getType(Uri uri)

{

return null;

}

public Uri insert(Uri uri, ContentValues values)

{

return null;

}

public boolean onCreate()

{

return false;

}

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

{

return null;

}

public int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs)

{

return 0;

}

这些都要你自己实现,不同的实现就是对应不同的content-provider。但是activity使用content-provider不是直接创建一个对象,然后调用这些具体方法。

而是调用managedQuery,getContentResolver().delete,update等来实现,这些函数其实是先找到符合条件的content-provider,然后再调用具体

content-provider的函数来实现,那又是怎么找到content- provider,就是通过uri中的authority来找到content-provider,这些都是通过系统完成,应用程序不用操心,这样就达到了有效地隔离应用和内容提供者的具体实现的目的。

有了以上初步知识后,我们来看NotePadProvider是如何为上层提供数据库层支持的。下面这三个字段指明了数据库名称,数据库版本,数据表名称。

private static final String DATABASE_NAME = "note_pad.db";

private static final int DATABASE_VERSION = 2;

private static final String NOTES_TABLE_NAME = "notes";

实际的数据库操作其实都是通过一个私有静态类DatabaseHelper实现的,其构造函数负责创建指定名称和版本的数据库,onCreate函数则创建指定名称和各个数据域的数据表(就是简单的建表SQL语句)。onUpgrade负责删除数据表,再重新建表。

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context)

{

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db)

{

db.execSQL("CREATE TABLE " + NOTES_TABLE_NAME + " ("

+ Notes._ID + " INTEGER PRIMARY KEY,"

+ Notes.TITLE + " TEXT,"

+ Notes.NOTE + " TEXT,"

+ Notes.CREATED_DATE + " INTEGER,"

+ Notes.MODIFIED_DATE + " INTEGER"

+ ");");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

Log.w(TAG, "Upgrading database from version " + oldVersio n + " to "

+ newVersion + ", which will destroy all old data ");

db.execSQL("DROP TABLE IF EXISTS notes");

onCreate(db);

}

}

在Android实例剖析笔记(一)这篇文章中我们已经见识到了getType函数的用处了,也正是通过它的解析,才能区分开到底是对全部日志还是对某一条日志进行操作。

public String getType(Uri uri)

{

switch (sUriMatcher.match(uri))

{

case NOTES:

return Notes.CONTENT_TYPE;

case NOTE_ID:

return Notes.CONTENT_ITEM_TYPE;

default:

throw new IllegalArgumentException("Unknown URI " + uri); }

}

上面的sUriMatcher.match是用来检测uri是否能够被处理,而sUriMatcher.match(uri)返回值其实是由下述语句决定的。

sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

sUriMatcher.addURI(NotePad.AUTHORITY, "notes", NOTES);

sUriMatcher.addURI(NotePad.AUTHORITY, "notes/#", NOTE_ID);

sNotesProjectionMap这个私有字段是用来在上层应用使用的字段和底层数据库字段之间建立映射关系的,当然,这个程序里两处对应的字段都是一样(但并不需要一样)。

private static HashMap sNotesProjectionMap;

static

{

sNotesProjectionMap = new HashMap();

sNotesProjectionMap.put(Notes._ID, Notes._ID);

sNotesProjectionMap.put(Notes.TITLE, Notes.TITLE);

sNotesProjectionMap.put(Notes.NOTE, Notes.NOTE);

sNotesProjectionMap.put(Notes.CREATED_DATE, Notes.CREATED_DAT E);

sNotesProjectionMap.put(Notes.MODIFIED_DATE, Notes.MODIFIED_D ATE);

}

数据库的增,删,改,查操作基本都一样,具体可以参考官方文档,这里就仅仅以删除为例进行说明。一般可以分为三步来完成,首先打开数据库

SQLiteDatabase db = mOpenHelper.getWritableDatabase();

然后根据URI指向的是日志列表还是某一篇日志,到数据库中执行删除动作

switch (sUriMatcher.match(uri)) {

case NOTES:

count = db.delete(NOTES_TABLE_NAME, where, whereArgs);

break;

case NOTE_ID:

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

count = db.delete(NOTES_TABLE_NAME, Notes._ID + "=" + not eId

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

break;

}

最后,一定记得通知上层:其传递下来的URI在底层数据库中已经发生了变化。

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

对NotePad的改进

首先我想指出NotePad的一个bug,其实这个小bug在2月份就有人向官方报告了,参见https://www.doczj.com/doc/0214869264.html,/p/android/issues/detail?id=1909。NoteEditor类中的变量mNoteOnly根本就是没有用处的,因为它始终都是false,没有任何变化,所以可以删除掉。第二点是在NoteEditor类中,有下面这样的语句:

setResult(RESULT_OK, (new Intent()).setAction(mUri.toString())); setResult(RESULT_CANCELED);

可到底想展示什么技术呢?实际上并没有完整展现出来,这里我对其进行修改后来指明。参见

https://www.doczj.com/doc/0214869264.html,/p/android/issues/detail?id=1671)。首先在NotesList类中增加一个变量

private static final int REQUEST_INSERT = 100;//请求插入标识符

然后修改onOptionsItemSelected函数如下:

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

switch (item.getItemId())

{

case MENU_ITEM_INSERT:

this.startActivityForResult(new Intent(Intent.ACTION_INSE RT, getIntent().getData()), REQUEST_INSERT);

return true;

}

return super.onOptionsItemSelected(item);

}

最后重载onActivityResult函数来处理接收到的activity result。

protected void onActivityResult(int requestCode, int resultCode, Intent data)

{

if(requestCode == REQUEST_INSERT)

{

if(resultCode==RESULT_OK)

{

Log.d(TAG, "OK!!!");

}

else if(resultCode==RESULT_CANCELED)

{

Log.d(TAG, "CANCELED!!!");

}

}

}

试试,当你在NoteEditor中保存或放弃日志时,观察LogCat,你可以看到下面这样的画面:

windowsXP下Android安卓开发环境搭建详细教程及图解

注:本教程是讲解在Windows XP下搭建安卓开发环境的。 安装目录: 步骤1 安装JDK 步骤2 安装Android SDK 步骤3 安装Tomcat 步骤4 安装Ant 步骤5 安装Eclipse 步骤6 安装Eclipse的ADT插件 步骤7 在图形界面下管理AVD 步骤8 设置Android系统语言 本教程的软件可以从我博客“绿杨芳草”下载。 方法/步骤 1、安装JDK 运行安装程序【jdk-6u22-windows-i586-p.exe】,分别点击下一步进行安装。 在安装过程中先后会出现两次选择安装目录的界面,全部改为以下路径: jdk安装目录:C:\Java\jdk1.6.0_22 jre安装目录:C:\Java\jre6\

安装好之后,配置环境变量: 打开环境变量窗口方法:右键【我的电脑】--单击【属性】--单击【高级】--单击【环境变量】。 在上方的用户变量中依次新建如下变量,并分别填入如下路径: 变量名:JAVA_HOME 变量值:C:\Java\jdk1.6.0_22 变量名:PATH 变量值:%JAVA_HOME%/bin 变量名:CLASSPATH 变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar 图1 配置完成之后,分别点击【开始】--【运行】--输入【cmd】--输入【javac】--按【回车键】,若看到以下信息,则代表配置成功。

图2 2、安装Android SDK 将【android-sdk_r17-windows.zip】解压到E:\Android目录下(Android目录自己新建,以后所有关于Android开发相关软件都会统一放到该目录中),得到一个android-sdk-windows 文件夹,该文件夹包含如下文件结构: add-ons:该目录下存放额外的附件软件。刚解压后,该目录为空。 platforms:该目录下存放不同版本的Android版本。刚解压后,该目录为空。 tools:该目录下存放了大量Android开发、调试的工具。 SDK Manager.exe:该程序就是Android SDK和AVD(Android虚拟设备)管理器。 通过该工具可以管理Android SDK和AVD。 运行E:\Android\android-sdk-windows目录下的【SDK Manager.exe】 然后等待更新...(该步骤必须联网,因为SDK安装包需要在线获取)。 在更新的过程中若遇到如下的提示窗口:

C语言实训--万年历源代码

# include #include #include #include #include # define YEAR 365 int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int leap(int year); int calday(int y,int m); int counterdays(int year,int month,int day); int week(int year,int month,int day); int eachyeartotal(int year,int month,int day); int maxDay(int y,int month); void print(int y,int m,int w); void festival (int year,int month,int day); int IsLeap(int y); int guanli(int i); void rili(int year,int month); int rili1(); void rili2(); void rili3(); void rili4(); void rili5(); void fan(); void show(int year,int month,int date,int sec,int mini,int hour); int main() { int i; printf("***************************************\n"); printf("1.查询日历,输入年份:\n"); printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n"); printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n"); scanf("%d",&i); guanli(i); return 0; } int guanli(int i) { switch(i) { case 1:rili1();return main();

Android应用程序开发个人总结

Android应用程序开发个人总结 Android应用程序开发个人总结范文 篇一:Android应用程序开发-个人总结 一、项目简介: 送祝福App是一款逢年过节为方便发送祝福信息的软件,并且介绍各种节日的相关情况。包含节日祝福短信,支持直接发送短信给好友,也可定时发送给好友,编写模版。为生活提供了便利。 二、个人在项目中承担的任务: 我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面 三、学习本门课程收获、体会及建议: 在本门课程中,我初步认识了安卓应用开发所需基本知识,比如安装体系结构,常用的控件以及API的使用方法,知道了安卓体系存储数据的方式。这一学期,安卓相关的知识自己掌握的不多,不过也透过安卓课程看到移动端应用的火热。这一个学期里,老师讲得比较细,自己单独下来练一个知识点了,也可以,不过当几个知识点的内容整合到一起,自己就凌乱了,自己的思路就不清晰。在期末项目中,我是任务是整合成员负责的模块,把各个模块整合到一起,然后把主界面的效果做出来,主界面参考的是微信的界面,由于时间和能力的限制,只完成了部分功能,功能没有完全实现。 篇二:Android程序员-201*年度个人工作总结和计划

逝者如斯夫,不舍昼夜!转眼间,自己在XX网里参加工作已经有一年有余了。回首即将逝去的201*年,可以说是平淡而不普通的一年,发现自己在各方面都比上一年有所进步、提高。一年的结束孕育着新一年的到来,新的一年意味着新的起点、新的挑战。昂首期待未来,总结以往经验。在新一年来临之际,我现把这一年的工作总结一下以及将新一年计划列一下。 大概3月份左右,XXXXApp第一期基本开发完成比较稳定的版本。在此之前,我主要负责参考XXXXApp的Android客户端的开发工作。XXXX第一期开发的难度系数相对比较低,开发起来还是相对的容易,所学到的基础知识基本上可以开发出来。我个人认为当时的开发效率还是比较低的,这里说的是整个项目的开发效率,不是个人负责工作的完成效率,换句话来说是团队的整体开发效率不高,没有达到高效。这个也许是团队协调与沟通交流还存在不足的地方。XXXXApp实际上基本可以满足用户的使用(表面),但是项目的代码管理(本质)比较杂乱、扩展性差、健壮性也不错、兼容性也不算好。这无疑导致开发的工作量大大的增加。产生这些问题的原因有团队的项目开发经验缺乏,有自己个人的开发水平有限、技能不足。简言之,我的专业技能还不够强。 在3月份之前,公司聘请了外包团队与我们的团队一起开发问答App。公司的目的培训公司的团队,让我们学习外包团队的技能。在外包团队的参与和指导下问答App开发工作相当顺利,团队的分工清晰、交流充分、协调都比较好。问答App的工作接近尾声,意味着XXX

万年历系统源代码

#include #include #include #include #include #define KEYNUMUp 0x48 #define KEYNUMDown 0x50 #define KEYNUMLeft 0x4b #define KEYNUMRight 0x4d #define KEYNUMPageUp 0x49 #define KEYNUMPageDown 0x51 int year,month,day; //全局变量记录时间 int daysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31, 31,30,31, 30,31}}; int runYear(int year) //判断是否是闰年 { int flag=0; if(year%400==0||(year%4==0&&year%100!=0)) flag=1; return flag; } struct tm* getDay()//从系统取得当前时间 { time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer); return gmt; } int dayExame(int year,int month,int day)//检查日期是否正确 { if(year<0||month<1||month>12||day<1||day>31) return 0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10:

安卓android课程设计报告

安卓a n d r o i d课程设计 报告 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

湘潭大学课程设计报告课程名称______手机安卓开发_______ 课题名称______天气预报APP_______指导老师______周唯___________ 姓名____黄柳________ 班级____12计2班________ 小组______棒棒糖_______ 时间____2015年1月26 日_____ 一、需求分析 (一)引言 1.编写目的 1.1 为用户提供一个显示天气预报的软件,可以根据百度地图显示用户需求的城 市位置,以及用图标表示各城市对应的气象信息,可以简洁的表示出“晴、 雨、雪”和“气温”气象信息。 2. 项目风险 2.1 (项目风险识别是指找出影响项目目标顺利实现的主要风险因素,并识别出 这些风险究竟有哪些基本特征、可能会影响到项目的那些方面。) 2.2 联网收费视用户电话运营商的收费标准决定 2.3 手机或者无线信号不好时,可能无法连接或更新天气情况 3. 预期读者和阅读建议 3.1 预期读者:会使用已经安装安卓系统的手机或者平板电脑及其他移动设备的 用户 3.2 阅读建议:读者应通过该文档可以了解相关项目的需求分析、使用注意事项 以及可能存在的风险 4. 产品范围 2.2手机,平板电脑,MP4,导航仪,上网本,电纸书等使用安卓系统的数码领 域 (二)综合描述 1.产品的状况

1.1 Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设 备。目前未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。 Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由 Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及 其他数码领域上。我们开发的相关项目正是一个在安卓平台上开发的软件, 可以用这个软件来实现用户在一些简单的手持设备如手机或者平板电脑等上 面及时的了解到用户所在城市的天气预报。 2. 产品的功能 2.1 天气信息获取 2.2 天气信息显示 3. 系统配置功能 3.1 用户类和特性 安卓平台用户:安卓新用户可以使用软件来了解用户所在城市的天气预报。熟悉安卓平台用户还可以选择对相关软件的系统按自己的喜好进行配置并保留自己的个性化系统配置。 安卓软件开发者:安卓软件开发者(喜好者)可以通过相关的开源代码来了解软件运行的原理。 3.2 运行环境 软件需要在支持安卓系统的可移动设备中正确安装才能正常运行。安卓版本需在及以上,同时建议用户如果是在手机移动设备使用的话,需确保手机支持联网服务。 3.3 设计和实现上的限制 Eclipse是开发相关应用软件的首选集成开发环境,安卓开发环境首先需要安装支持java应用软件运行的java开发软件包(即JDK),然后安装集成开发环境Eclipse,最后安装Android SDK的Eclipse的ADT插件。 Android SDK和Eclipse的ADT插件是必须使用的。 软件支持高效、快速的数据存储方式,包括快速数据存储方式SharedPreferences、文件存储和轻量级关系数据块SQLite,可软件可以使用适合的方法对数据进行进程保存和访问。 3.4 假设和约束(依赖) 软件必须在安卓系统下才可以正常运行,若需要获取天气更新或者是短信服务,需确保用户的数码设备支持联网及短信服务。 (三) 外部接口需求 1 用户的手机设备可以支持联网。 2 用户界面 3 软件接口 软件提供轻量级的进程间通信机制Intent,实 现跨进程组件通信。 4 访问硬件的API库函数通讯接口 4.1 HTTP 协议:有多种接口可以调用 你可以用Java类库封装的 HttpConnection 或者用Apach的开 源项目的 HttpGet 或者HttpPost ,

安卓音乐播放器开发,含源代码

基于an droid平台的音乐播放器开发 实验报告 学生姓名:_______ 温从林 _________________ 学号: ___________________________________ 班级:计自1201 _____________ 第一章引言 1.1项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Win dowsmobile,symbia n,以及谷歌的An droid操作系统,其中占有开放源代码优势的An droid系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌An droid系统就能做到。本文的音乐播放器就是基于谷歌An droid手机平台的播放器。 An droid :是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于An droid平台的。 1.2编写目的 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3 Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。

本项目是一款基于An droid手机平台的音乐播放器,使An droid手机拥有个性的 多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练An droid的技术和其它在市场上的特点。 1.3开发环境 Eclipse、An droid SDK 320 第二章系统需求分析 2.1功能需求(用例图分析) 根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述: 2.1.1播放器的用例图 假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作, 启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下 图2.1 播放器基本用例图 2.1.2用例分析

Android开发实战中常用安卓开发框架

Android是基于Linux平台的开源移动操作系统,主要适用于移动设备,如智能手机和平板电脑(当然现在已经适用车控应用了),由Google公司和开放手机联盟领导及开发。不完全统计,Android平台手机的全球市场份额已经达到80%,本文介绍了android开发者实战中最喜欢使用的几种Android开发框架。 1) Corona SDK Corona SDK是一个跨平台技术的工具,它利用Lua开发脚本,从一个特定的移动操作系统开发应用。应用程序可以在模拟器中测试,然后编译为Android的本机代码。同时Corona SDK 还支持与Map、Facebook、OpenFient、GameCenter的集成。然而在编译项目时,程序员需要把代码上传到Corona的服务器上去编译,不能在本地直接编译。 2) Phonegap Phonegap是一款开源的开发框架,旨在让开发者使用HTML、Java、CSS等Web APIs开发跨平台的移动应用程序。它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5及以上版本配套开发。使用PhoneGap比为每个平台分别建立应用程序稍好一些,因为虽然基本代码是一样的,但是程序员仍然需要为每个平台分别编译应用程序。 3) Xamarin Xamarin 始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。Xamarin 由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与?NET框架的开源、跨平台实现。 而这其中Xamarin Studio就是一个用C#语言开发跨平台应用的集成开发环境,它和iOS 以及Android SDK紧密整合。Xamarin Studio提供了很多现代开发所需功能,包括代码完成、调试器、打包和发布应用(支持通过TestFlight发布应用程序)。对于Android,Xamarin还包含了自己的UI生成器(对于iOS,则使用苹果Xcode的UI生成器),此外还集成了Git和Subversion。Android开发者可以使用Xamarin Studio在模拟器和真机上对移动应用进行测试和bug调试。 4) Sencha Touch 2 Sencha Touch是由Sencha公司开发的移动Web应用开发框架,用以提升主流移动设备在浏览器上的触碰操作,增强用户体验。该框架以久负盛名的Ext JS富客户端框架为基础,并支持最新的HTML5及CSS3标准,与流行的Apple iOS和Andriod设备兼容。一方面,它以Webkit浏览器引擎为基础,提供了出色的性能和用户体验;另一方面,它提供了基于GPL V3许可的开源版本和详尽的API文档,体现了良好的开放性和易用性。因此,该框架可帮助移动应用开发人员提升开发效率,从而创造出更多富有创意的移动应用。 5) Appcelerator Appcelerator是一个构建基于SOA的RIA应用的全集成平台,用来构建富应用、交互式的网站和应用程序。Appcelerator应用的语言——Web Expression Language,是一种对HTML 的扩展,它采用直观、声明的方法来构建动态的web应用。

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

搭建安卓开发环境-详细教程

搭建安卓开发环境-详细教程 注:本教程是讲解在Windows XP下搭建安卓开发环境的,不是XP系统的朋友请绕行! 在开始搭建之前,请大家先到本人的网盘中下载所需的6个文件。 下载网址为:https://www.doczj.com/doc/0214869264.html,/c0balfh535(超链接,按住Ctrl键,单击蓝色文字,即可直接跳转) 安装目录: 步骤1→安装JDK---------------------------------对应的安装文件:jdk-6u22-windows-i586.exe 步骤2→安装Android SDK--------------------对应的安装文件:android-sdk_r17-windows.zip 步骤3→安装T omcat----------------------------对应的安装文件:apache-tomcat-7.0.26-windows-x86.zip 步骤4→安装Ant---------------------------------对应的安装文件:apache-ant-1.8.3-bin.zip 步骤5→安装Eclipse-----------------------------对应的安装文件:eclipse.part1.rar和eclipse.part2.rar 步骤6→安装Eclipse的ADT插件----------对应的安装文件:ADT-17.0.0.zip 步骤7→在图形界面下管理AVD 步骤8→设置Android系统语言 ===========================================1、安装JDK 运行安装程序【jdk-6u22-windows-i586-p.exe】,分别点击下一步进行安装。 在安装过程中先后会出现两次选择安装目录的界面,全部改为以下路径: jdk安装目录:C:\Java\jdk1.6.0_22 jre安装目录:C:\Java\jre6\ 安装好之后,配置环境变量: 打开环境变量窗口方法:右键【我的电脑】--单击【属性】--单击【高级】--单击【环境变量】。 在上方的用户变量中依次新建如下变量,并分别填入如下路径: →变量名:JAVA_HOME 变量值:C:\Java\jdk1.6.0_22 →变量名:PATH 变量值:%JAVA_HOME%/bin →变量名:CLASSPATH 变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar

安卓日历开发源代码

Android日历需求分析报告(···)

1.1编写目的 为广大的安卓手机用户提供一个实用的,强大的日历软件。 1.2项目背景 软件名称:备忘迷你日历 总负责人:程浩老师 该项目组员: 组长: 刘泽文 其他组员: 严小丽 陈禄海 陈毅军 蔡博 杨丰年 1.3术语说明 用到的术语的定义及英文(待定) 1.4参考资料(暂略) 2.项目概述 2.1待开发的软件的一般描述 安卓市场上现在有很多的日历软件和备忘软件,但是能够很好结合日历与备忘功能的软件却不多,为此,我们计划做一个实用的,易用的,强大的,方便的,有个性的备忘迷你日历。 2.2待开发的软件的主要功能(图&表说明易理解:顶层数据流图,用例图,系统流程图,层次方框图) 日历查询功能; 备忘功能; 闹铃提醒功能 2.3用户特征和水平 该软件主要面向拥有安卓2.3及以上系统的手机的中国用户,本软件不提供简体中文以外的其他文字形式 2.4运行环境 操作系统Android 2.3以上 软件运行环境(硬件平台,硬件要求,操作系统版本等) 2.5条件与限制 影响开发人员的在设计时的约束:开发时间和开发 经验 硬件限制:当前手机硬件配置 1.功能需求 3.1功能划分 ①日历查询功能 ②备忘笔记 ③闹铃提醒 列举全部要实现的功能(文字,图标,数学公式等

3.2功能描述 a.日历查询功能: 查询范围从1980年1月1号到2030年12月31号; 默认日期是程序发布的日期; 具有公历及其对应的农历,可以显示每年的24节气,我国的传统节日及国外一些在中国具有广泛影响的节日及一些特殊的纪念日(如世界地球日等),每天所处的是星期几; 用户可以随心查询,点击年份,就可以改变查询的年份,点击月份,就可以改变查询的月份,也可以输入一定格式的公历日期可查询农历或输入农历可以查询公历; 节日及纪念日搜索功能:例如输入2013 母亲节就可以显示2013年母亲节的完整日期。 可以显示当天的天气情况,气温的高低,空气的质量,及一些简单的生活小提示。 b.备忘笔记: 用户可以随意添加备忘录,添加备忘录时用户可以点击想要写备忘的日期,进入输入记录状态,并且可以设定具体需要备忘的时间。 例如:在2013年6月中点击19日,之后可以设定14:30将要做XX事 可以进行一般形式手写或虚拟键盘输入也可进行手写涂鸦形式输入: 例如:一个完整比较完整的备忘录 2013年6月20,8:20去XXX上课,配置好安卓开发环境及进行本组项目的具体介绍,21:00和XX去XX地点约会。 当到了预先设定的时间的时候可以自动显示到手机屏幕之上,并持续一段时间(如30秒或45秒),当没有收到用户确认知道该备忘之后,可以过一段时间之后再次显示,如5或10分钟之后。 c.闹铃提醒功能: 可以在实现备忘录后开启此功能,实现备忘内容的闹铃提醒,在备忘内容显示在屏幕之上后伴随有闹铃提醒,可以用来提醒用户查看备忘录,以防用户忘记自己所备忘的重要事情,而且铃声可以根据自己的喜好更换,不同的事情可以设定不同的铃声。 例如: 吃早餐8.00 铃声1 涛声依旧 去XXX上课8.30 铃声4 叮叮当 配置好安卓编程环境16.30 铃声1 涛声依旧 和XX约会21.30 铃声2 好好恋爱 铃声会持续一段时间(如30秒或45秒),当收到用户确认后铃声将会停止闹铃,如果如果没有收到确认指令闹铃将会持续到预先设定的时间结束,并且过一段时间之后将会再次显示(如5或10分钟之后)。 例如2013年6月19日21:30手机屏幕有对话框显示和XX约会同时手机会响铃《好好恋爱》 d.当前日期的未来五天可以进行天气预报,帮助用户指定近期计划 3.外部接口要求 4.1用户界面

安卓开发Android开发前景

安卓开发Android开发前景 一:Android开发前景 当前,Android系统因其开放性和免费广受欢迎,所占市场份额最大,截至2014年第四季度,国内市场Android手机的市场份额已经占据了整体智能机市场的88.4%。国内三大运营商如火如荼的4G营销战持续升温,再加上4G的推出对整个行业的巨大推动作用,无疑将引爆4G-Android开发工程师这个黄金职位,符合条件的Android工程师屈指可数,企业招聘难度可想而知。我们相信,在未来几年内,Android开发工程师将成为4G行业炙手可热的岗位之一。据数据统计显示:目前热招的Android技术相关岗位约有6882个,而一个月内的有效岗位量在4298个。主要热招职位包括Android 开发工程师、Android软件工程师、Android应用开发工程师、系统驱动工程师,Android手机游戏开发、Android系统软件开发、Android程序员、Android游戏应用版本管理、人机交互分析工程师、Android中间层开发工程师等。 Android的火爆让眼光独到之人纷纷投身Android开发行业中,做一名Android开发者已经成为很多人的理想工作,作为未来五年极具潜力的行业,Android开发者收获的不仅是眼下的利益,有Java 扎实的基础,未来科技怎么变革都能在行业中顺利转型,站稳脚跟。

随着Android平台的扩张,引发了Android人才荒,未来人才需求缺口将达百万。但符合条件的Android工程师屈指可数,企业招聘难度可想而知。据某知名媒体报道Android工程师一年经验月薪8000元,公司的技术骨干或主管,主流薪水平均在12-15K以上。对此李开复曾在微博谏言学生转学Android软件开发。我们相信,在未来几年内,Android开发工程师将成为3G、4G甚至未来投入应用的5G行业中炙手可热的岗位之一。 二:大学生如何学好Android? 虽然了解到Android行业未来的发展前景,Android人才的紧缺。但是作为刚毕业的应届大学毕业生如何才能加入这个热门行业?怎样才能学好Android开发? 首先:学习一门语言 众所周知,Android行业是一个高门槛行业,所以想要进入这个行业,首先要学习一门编程语言:从人才需求类型来看,目前对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。偏向Android硬件驱动Android人才,首先要学习的是C语言。由于现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多

java日历制作源代码

import java.util.Scanner; public class rili{ public static void main(String[] args){ Scanner in=new Scanner(System.in); System.out.println("请输入年份,并回车:"); int year=in.nextInt(); System.out.println("请输入月份,并回车:"); int month=in.nextInt(); int sum=0; for(int i=1900;i

基于安卓Android的手机系统助手软件的实现文献综述毕业论文

基于Android的手机系统助手软件的实现 1. 引言 随着手机的普及以及手机应用的深入人心,近几年“智能手机”成为了人们关注的话题。在现今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统。Android凭借其开放性和良好的人机界面,受到广大手机生产商的重视。 Android是基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,而且不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。[1]从Android的从业角度分析,Android的开发概括为两类:一是系统开发,包括低层linux内核的裁剪和扩展,硬件驱动的开发和系统移植等,从业人员主要工作在硬件厂商的公司里:而是应用开发,主要包括游戏开发、Android互联网客户端开发和工具软件开发等。随着用户群体的不断壮大,Android系统有望成为手机操作系统的“Windows”所以Android应用开发应用需求将非常大。[2] 2. 研究背景 2.1 Android的前世今生 Android平台是开放手机联盟为创造一代更好的移动电话而合作开发的产品。该联盟由谷歌领导,成员包括移动运营商,手机设备制造商,元件制造商,软件解决方案和平台供应商以及销售商。从软件开发的角度,机器人立足于开源世界。 市场上第一款基于Android系统的手机G1由HTC制造并供应给T - Mobile 用于销售。然而,该设备从放出风声到真正发布,用了大概一年的时间,因为发布的sdk补丁累计了一年才使唯一的软件开发工具变得可用。随着G1发布日期的临近,Android团队发布了SDK1.0,为新的平台而设计的应用也开始浮出水面。 为了鼓励创新,谷歌赞助了两轮“Android开发者挑战大赛”,并提供了数百万美元的奖励。在G1发布后的几个月,谷歌发布了Android市场,它允许用户直接在自己的手机上浏览和下载应用程序。大约过了18个月,一个新的移动平

安卓开发的自制计算器源代码

这是本人自己用安卓编写的计算器,代码的优化可能有所问题,不过大家都在学习阶段,欢迎大家批评指正,还是上源码吧。 先来运行图 package com.example.nanchen.exam_1_1; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn0; private Button btn1;

private Button btn2; private Button btn3; private Button btn4; private Button btn5; private Button btn6; private Button btn7; private Button btn8; private Button btn9; private Button btnAdd; private Button btnSub; private Button btnMul; private Button btnDiv; private Button btnDec; private Button btnEqual; private Button btnClear; private Button btnBackSpace; private TextView textView_result; double num1 = 0,num2 = 0,result = 0;//定义存储结果和两个操作数boolean isCheckEqu = false;//检测是否点击了等于 int op = 0;//定义运算符 boolean hasDec = false; boolean hasOp = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/0214869264.html,yout.activity_main); textView_result = (TextView) findViewById(R.id.result); btn0 = (Button) findViewById(R.id.btn0); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn4 = (Button) findViewById(R.id.btn4); btn5 = (Button) findViewById(R.id.btn5); btn6 = (Button) findViewById(R.id.btn6); btn7 = (Button) findViewById(R.id.btn7); btn8 = (Button) findViewById(R.id.btn8); btn9 = (Button) findViewById(R.id.btn9); btnAdd = (Button) findViewById(R.id.btn10); btnSub = (Button) findViewById(R.id.btn11);

Win7下搭建安卓android开发环境

Win7下搭建安卓开发环境 首先说明,本文针对windows 7而写,Windows XP差别不大。其他系统请暂时绕道。 第一部分:准备工作 假设你现在什么都没有,那么你需要下载以下的东西: 1. JDK(Java Development Kit),即jdk-7u4-windows-i586.exe,官网下载最新版本即可,有旧一点的也问题不大。(本文使用的依然还是6u3版本) 2. Eclipse Classic 3.7.2-win32.zip,官网推荐使用这个,在Eclipse官网下载。 3. ADT,安卓开发插件,最新版本为ADT-18.0.0.zip。 4. Android SDK:android-sdk_r18-windows.zip或者installer_r18-windows.exe。(这只是个下载工具,不是真正的SDK) PS: 有些TX可能不知道在哪下载,为此,附上详细的下载步骤,供参考: 1. JDK:https://www.doczj.com/doc/0214869264.html, 点击下图中的Downloads 出现下图,往下拉

拉到如下图所示,点击红圈内的链接 出现下图,点击红圈内的链接 点击红圈内的单选框,如下图:

如下图所示,根据操作系统选择相应的版本,红圈内第一个x86的为32位系统的版本,x64为64位系统的版本。 2. Eclipse: https://www.doczj.com/doc/0214869264.html, 点击Downloads,出现如下图的列表

根据操作系统选择相应的版本,以32位为例。 3. ADT和SDK:https://www.doczj.com/doc/0214869264.html, 点击上图中的SDK,点击下图中的红圈内的链接下载Android SDK下载工具,第一个是压缩包,直接解压就可以用,第二个是windows安装程序,二选一下载一个即可。

安卓音乐播放器开发,含源代码

基于android平台的音乐播放器开发 实验报告 学生姓名:温从林 学号:0215 班级:计自1201

第一章引言 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。 Android:是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。 编写目的 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。 本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练Android的技术和其它在市场上的特点。 开发环境

Eclipse、Android SDK 第二章系统需求分析功能需求(用例图分析) 根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述: 播放器的用例图 假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作,启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下 图播放器基本用例图

相关主题
文本预览
相关文档 最新文档