有内部集成的浏览器--基于开源的WebKit引擎。
◆提供针对手机优化的图形库。
◆使用集成了轻量级数据库管理系统SQLte作为结构化的数据存储。
◆娱乐功能丰富,支持多种媒体格式。
◆支持多种移动电话结束。
◆支持USB、蓝牙、WIFI等多种数据传输。
◆支持摄像头、GPS、传感器。
◆提供了丰富的开发工具,其中包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成开发环境插件等。
2011年年初的数据显示,正式上市仅两年多的操作系统Android已经超越称霸十年的Symbian系统,并成为全球最受欢迎的智能手机平台。随着Android的越来越红火,不少从事Android开发的人,难免会被问道这样的问题,就是这个平台的优点和缺点。
2.2.1优点
Android系统具有如下5大优势。
1) 开放性
开放的平台允许任何移动终端厂商加入Android联盟中,显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
2) 挣脱运营商的束缚
在过去很长的一段时间,手机应用往往受到运营商制约,例如使用什么样的功能进入什么样的网络。随着EDGE、CDMA、TD-SCDMA这些2G、3G乃至4G移动网络的逐步过渡和提升,手机随意接入网络,让我们使用手机更加自由。
3) 丰富的硬件选择
由于Android的开放性,众多的厂商会推出千奇百怪、各具功能特色的多种产品。
4) 不受任何限制的开发商
5) 无缝结合的Google应用
Google,一个渗透到互联网的各个方面的网络巨人,Google服务已经成为连接用户和互联网的重要纽带,而android普通手机将无缝结合这些优秀的Google服务。
2.2.2缺点
1) 安全和隐私
由于互联网和手机精密联系,个人隐私很难得到保障。除了上网过程中经意或不经意留下个人足迹,Google这个巨人也时时刻刻站在你的身后,洞穿一切,因此互联网的深入将会带来新一轮的隐私微机。比如今年由斯诺登引发的棱镜门事件。
2) 运营商任能够影响Android手机
用户购买到运营商定制手机,手机总会内置一些我们不需要的程序,严重的影响到我们使用手机。
3) 同类机型用户减少
对于Android手机平台,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化。
4) 过分依赖开发商,缺少标准配置
在Android平台中,由于其开放性,软件更多依赖于第三方产商,比如Android系统SDK中就没有内置音乐播放器,全部依赖第三方开发,缺少了产品的统一性。
2.3 Android系统框架
Android系统是以Linux系统为基础的,Google将其按照功能特性划分为四层,自上而下分别是应用程序、应用程序框架、中间件和Linux内核。如图2.2所示。
图2.2系统框架
2.3.1应用程序
Android系统内置了一些常用的应用程序,包括home视图、联系人、电话、浏览器等。这些应用程序和用户自己编写的应用程序是完全并列的,都是采用Java语言编写的。而且用户可以根据需要增加自己的应用程序,或者替换系统自带的应用程序。
2.3.2应用程序框架
应用程序框架提供了程序开发人员的接口,这是与Android程序员直接相关的部分。开发者可以用它开发应用,其中包括:
◆丰富而又可扩展的视图(views)
◆内容提供器(content providers)
◆资源管理器(resource manager)
◆通知管理器(notification manager)
◆活动管理器(activity manager)
2.3.3中间件
中间件包括两部分:核心库(Libraries)和Android运行时环境(Android runtime)
1)核心库
核心库中主要包括一些C/C++核心库,方便开发者进行应用的开发。
①界面管理器:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
②媒体框架:支持多种常用的音频,视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
③SQLite:轻型关系型数据库引擎。
④OpenGLES:是OpenGL三维图形API的子集针对嵌入式设备而设计。
⑤FreeType:位图BITmap和矢量字体vector显示。
⑥WebKit:web浏览引擎,支持android浏览器和一个可嵌入的web视图。
⑦SGL:底层的2D图形引擎。
⑧SSL:网络通信提供安全及数据完整性的一种安全协议。
⑨libc(系统C库):专门为基于Embedded Linux的设备制定的。
2) Android运行时环境
Android运行时环境主要包括:
①Android核心库:提供了Java库的大多数功能。
②Dalvik虚拟机:依赖于linux内核的一些功能,它能够在低资耗和没有响应相互干扰的情况下并行执行多个应用,每一个Android应用程序都在他自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
2.3.4Linux内核
Android平台运行在Linux2.6之上,其linux内核部分相当于手机硬件层和软件层之间的一个抽象层。
2.4 Android音乐播放器的工程
2.4.1 Android项目
Android的四大基本组件:Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转。
Android的五大布局方式:LinearLayout(线性布局),FrameLayout(帧布局) ,TableLayout(表格布局) ,AbsoluteLayout(绝对布局),RelativeLayout(相对布局)。五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。
Android的线程,以及线程之间通信的中介:Handler类。
Android数据库:将在第四章介绍。
Android配置文件:AndroidManifest.Xml及res资源文件中各种属性,布局方式,引用的资源等。
2.4.2 Android工程程序结构
Android工程基本结构目录包括:src(源代码)、gen(Android系统自动生成的常量)、Res(资源文件):主要存放程序界面的布局配置(.xml)文件和图片资源。AndroidMainfes.xml 是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。Android资源的类型和布局(表2.1)
表2.1 Android资源的类型和布局
目录结构 资源类型 res/anim/ XML动画文件 Res/drawable/ 位图文件 Res/layout/ XML布局文件 res/values/ 各种XML资源文件
Arrays.xml :XML数组文件
Colors.xml:XML颜色文件
Dimens.xml:XML尺寸文件
Styles。Xml:XML样式文件 Res/xml/ 任意XML文件 Res/raw/ 直接拷贝到设备中的原生文件 Res/menu/ XML菜单文件
下图2.3为音乐播放器代码结构和各界面的配置文件,图像资源等, 为一个Android工程所必须的结构
图 2.3 本设计的代码结构和配置文件
2.4.3 AndroidManifest.xml文件
Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了Android SDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。任何一个AndroidManifest.Xml文件的格式都应为:
Android系统有一个编码的规定,支持的编码是"utf-8",当程序中出现乱码是,我们须将其编码格式转化为"utf-8".在 AndroidManifest.xml中会在第一行声明一句:。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自xmlns:android="schemas.android/apk/res/android"
xmlns(XML namespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个xmlns,否则程序中的所使用的所有资源将无法找到。
在application元素我们定义android:icon="@drawable/icon"
android:label="@string/app_name",android:icon是程序在手机中显示的图片,我们运用@drawable/icon表示了对res/drawable目录下的icon.png的引用。@string/app_name表示了对res/value目录下string.Xml中定义的app_name参数的引用。
这是系统确定的首先要启动的Activity是PlayRackActivity。
在intent-filter选项中,有action和category等等属性,我们需要定义action的值为android.intent.action.MAIN,category的值为android.intent.category.LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其它属性值,系统会根据我们设定的属性值去AndroidManifest.Xml的application 中寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了。
在AndroidManifest.Xml中有一个根结点
,它是我们需要定义的ADT版本,例如我们将其值设定为android:minSdkVersion="4",则表示此Android工程所用的版本为1.6,Android还有1.1、1.5、1.6、2.0、2.1、这几个版本。
如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uses-permission,将其的值设置为android:name="android.permission.INTERNET,我们就可以访问网络了。当然uses-permission还有很多其它的权限,例如GPS定位权限,浏览器数据存取权限com.android.browser.permission.READ_HISTORY_BOOKMARKS等等。
当程序的任何一个组件要用到时,都必须在AndroidManifest.Xml文件中声明。四大组件要使用前都需要声明,其声明方式如下:
其中声明provider时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性。过滤器intent-filter 有两种启动方式来启动界面:
(1) 显示方式
显示方式是在代码中的直接启动组件,启动时会声明Intent,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。
(2) 隐式方式
隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.Xml文件中声明的。两种启动方式都可以通过程序setAction(ACTION常量)和startActivity(intent)或配置文件两种方式来实现组件的跳转。
第三章 环境搭建
Android程序由JAVA编程语言开发。因此在开发Android程序之前,需要下载并安装开发Java程序所需要的JDK,以及运行环境Eclipse。除此之外,还需要下载并安装SDK和ADT,并配置JDK和SDK的环境变量。下面我将依次介绍它们的下载和安装。
3.1下载并安装JDK
JDK是java开发工具包。
3.1.1下载JDK
登陆Oracle公司的官方网站。进入software download页面,然后选择适合自己计算机的JDK版本下载。我的电脑为win7 32位,选择下载jdk-7u45-windows-x86版本。
3.1.2安装JDK
双击下载的JDK安装包jdk-7u45-windows-x86,安装JDK到C盘的program files路径下。安装过程如图3.1所示.
图3.1 JDK安装过程
3.1.3配置环境变量
Java程序运行的环境变量主要包括Path和Classpath。Path用于指定JDK包含的工具程序所在路径。Classpath是Java程序运行所特需的环境变量,用于指定运行的Java程序所需的类的加载路径。设置步骤如下。
①设置Path
调出电脑的"环境变量"窗口,在其系统变量栏中选择编辑Path。在弹出的"编辑系统变量"对话框中的变量值文本框后面添加文本"C:\Program Files\Java\jdk1.8.0"用";"隔开。该文本为JDK包含的工具程序的路径。如图3.2所示。
图3.2 配置环境变量
②设置Classpath
在编辑变量时,不像Path变量,系统是没有Classpath变量的。此时需要新建一个Classpath的变量。单击"新建"按钮,弹出"新建系统变量"的对话框。新建一个Classpath的变量,在变量值文本框中添加文本,配置路径到"C:\Program Files\Java\jdk1.8.0"。
到现在JDK的安装与配置就结束了,接下来进入命令提示符CMD.运行Java命令,以测试JDK安装是否成功。选择"开始"菜单中的"运行"项,在对话框中输入"CMD",点击"确定"或按键盘回车键后打开命令行窗口。在命令提示符下输入Java -version,出现如下图3.3参数,说明JDK安装成功。
图3.3 cmd测试
3.2下载并安装Eclipse
Eclipse开发源代码的、基于Java的可扩展开发平台。从Eclipse官网下载目前最新的版本4.3.1,将其解压到指定位置。这样就将Eclipse安装完成了。下图为eclipse的开发环境界面。如图3.4所示。
图3.4 Eclipse欢迎界面
3.2.1 安装Android SDK
SDK(Software Development Kit ,软件开发工具包),是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时,使用的开发工具集合。Android SDK 就是用于进行android开发的工具包。
登陆developer.android/sdk/index.html网站,下载SDK for windows,选择适合自己计算机的版本,我下载的是86bit的软件。
Android SDK与 eclipse集成开发环境一样,不需要经过真正的安装过程,解压过后就可以直接运行。在第一次运行 SDK manager时,需要下载android各个版本的SDK数据包。
双击 SDK manager.exe执行文件程序将自动检测是否有更新的SDK数据包可下载,基于毕业设计的要求和我自己的手机android版本,于是我选择了android4.1和4.0版本数据包的更新。如下图3.5所示。
图3.5 SDK安装
3.2.2设置环境变量
SDK安装好后,还需要设置相对路径。在用户变量中添加变量,变量值为ANDROID_SDK_HOME,变量值为android-SDK-windows的路径。
然后在Path变量后添加SDK一些工具的路径,变量值方框里输入.;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools; 需要注意的是最前面的.一定要有两个%中间代表引用ANDROID_SDK_HOME的路径,然后将tools和platform-tools添加,不同的变量值之间用;隔开,注意中英文的分号不一样的。如图3.6所示。
图3.6 配置环境变量
最后在cmd中运行adb命令,出来下面的图片(图3.7)中所示就表示安装成功了。
图3.7 cmd测试
3.3安装ADT插件
Android为eclipse定制了一个插件,即android development tools(ADT),这个插件为我们用户提供了一个强大的综合环境,用于开发android应用程序。
安装ADT,首先启动eclipse,依次单击help/install new software,弹出install对话框,添加可以下载ADT的网址dl-ssl.google/Android/eclipse进行安装。安装过程如图3.8所示。
图3.8 安装ADT
3.4设定Android SDK 主目录
安装好插件后,还需要做如下配置才可以使用eclipse创建android项目,既需要设置Android SDK主目录,具体方法如下。
选择图中左侧的android选项,在右侧设定Android SDK所在目录为 SDK location,然后单击OK按钮完成设置,如图3.9所示。
图3.9 设置SDK主目录
3.5创建Android虚拟设备(AVD)
AndroidSDK为开发者提供了可以在电脑上运行的"虚拟手机",Android把它称为Android Virtual Devices(AVD)。如果开发者没有Android手机,则完全可以在AVD上运行自己编写的Android应用。
创建、删除和浏览AVD之前,通常应该先为Android SDK设置一个环境变量:ANDROID_SDK_HOME,该环境变量的值为磁盘上一个已有的路径。如果不设置该环境变量,开发者创建的虚拟设备默认保存在C:\Documents and Settings\\.android目录下:如果设置了ANDRODI_SDK_HOME环境变量,那么虚拟设备就会保存在%ANDROID_SDK_HOME%.android路径下。注意:这里有一点非常容易混淆,此处的%ANDROID_SDK_HOME%环境变量并不是Android SDK的安装目录。
1.通过Android SDK安装目录下AVD Manager.exe启动AVD管理器,系统启动如图所示的AVD管理器。单击该管理器左边的"Virtual devices"项,管理器列出当前已有的AVD设备。单击上图所示窗口右边的"New..."按钮,AVD管理器弹出如图3.10所示对话框
图3.10 创建AVD
2.单击上图所示窗口右边的"New..."按钮,AVD管理器弹出如图3.11所示对话框。
图3.11 AVD配置设置
3.在上图所示对话框中填写AVD设备的名称、Android平台的版本和虚拟SD卡的大小,然后单击该对话框下面的"OK"按钮,管理器即将开始创建AVD设备,我们只要稍作等待即可。
4.创建完成后选中创建的AVD单击窗口右下角的"Start"按钮即可启动,启动后的虚拟机如下图3.12所示:
图3.12 运行中的AVD
第四章 系统需求分析
4.1 功能需求
根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述:
4.1.1 播放器的基本控制需求
放器的基本控制需求
用户
图 4.1 播放器的基本控制
表 4-1 播放按钮控制
用例名称:播放 参与者:用户 目标:使得用户可以播放在播放列表中选中的歌曲 前置条件:播放器正在运行 基本事件流:1.用户单击"播放"按钮
2.播放器将播放列表中的当前的歌曲
表 4-2 暂停按钮控制
用例名称:暂停 参与者:用户 目标:使得用户可以暂停正在播放的歌曲 前置条件:歌曲正在播放且未停止和暂停 基本事件流:1.用户单击"暂停"按钮
2.播放器将暂停当前的歌曲
表 4-3 停止按钮控制
用例名称:停止 参与者:用户 目标:使得用户可以停止正在播放的歌曲 前置条件:歌曲正在播放或暂停 基本事件流:1.用户单击"停止"按钮
2.播放器将停止当前播放的歌曲
表 4-4 上一首/下一首按钮控制
用例名称:上一首/下一首 参与者:用户 目标:使得用户可以听上一首或下一首歌曲 前置条件:歌曲正在播放或暂停 基本事件流:1.用户单击"上一首或下一首"按钮
2.播放器将播放上一首或下一首歌曲
表 4-5播放清单按钮控制
用例名称:播放清单 参与者:用户 目标:使得用户可以进入播放清单 前置条件:程序在运行 基本事件流:1.用户单击"清单"按钮
2.播放器进入清单列表 4.1.2 播放清单列表管理需求
用户
图 4.2 播放清单
表 4-6 歌曲播放
用例名称:播放 参与者:用户 目标:使得程序播放选中的歌曲 前置条件:程序运行在播放菜单选项中 基本事件流:1.用户单击"播放"按钮
2.播放器进入播放状态
表 4-7 歌曲详细
用例名称:详细 参与者:用户 目标:使得程序显示歌曲详情 前置条件:程序运行在播放菜单选项中 基本事件流:1.用户单击"详细"按钮
2.显示歌曲详细状态
表 4-8 歌曲新增
用例名称:新增 参与者:用户 目标:使得程序进入手机扩展SD卡 前置条件:程序运行在播放菜单选项中 基本事件流:1.用户单击"增加"按钮
2.播放器进入手机扩展SD卡
表 4-9 歌曲移除/全部移除
用例名称:移除/全部移除 参与者:用户 目标:使选中的歌曲被移除 前置条件:程序运行在播放菜单选项中 基本事件流:1.用户单击"移除/全部移除"按钮
2.播放器移除选中歌曲/全部移除歌曲
表4-10 歌曲设定
用例名称:设定 参与者:用户 目标:使得程序进入播放器设定状态 前置条件:程序运行在播放菜单选项中 基本事件流:1.用户单击"设定"按钮
2.播放器进入设定界面
4.1.3 播放友好性需求
用户
图4.3 播放器设定
表 4-11 播放模式
用例名称:播放模式 参与者:用户 目标:使得程序进入播放模式设定状态 前置条件:程序运行在播放器设定界面中 基本事件流:1.用户单击"顺序、随机、单曲"按钮
2.播放器进入选中模式播放状态
表 4-12 显示歌词
用例名称:歌词显示 参与者:用户 目标:使得程序进入播放器歌词设置状态 前置条件:程序运行在播设定界面 基本事件流:1.用户单击"歌词开关按钮"按钮
2.播放器显示或关闭歌词
4.2 系统结构图和流程图
(1)音乐播放器的系统流程图(图4.6)
图4.6 流程图
(2) 系统功能表(表4-13)
表4-13系统功能表
功能类别 子功能 子功能
播放列表
播放列表菜单 退出播放 从扩展卡寻找歌曲
歌曲菜单 播放->进入播放界面 删除->数据库同步更新 重命名->数据库同步更新 向上、下移动->数据库同步更新
播放界面
播放 播放歌曲->线程启动->时间更新 暂停 暂停歌曲->线程暂停->时间暂停 停止 停止歌曲->线程停止->时间停止 上一首 播放列表索引变化->寻找上一ID歌曲 下一首 播放列表索引变化->寻找下一ID歌曲
播放界面菜单 返回到播放列表 返回到主菜单 从扩展卡寻找歌曲 退出播放器 隐藏播放界面 主菜单 退出程序 程序退出 进入播放列表 显示播放列表 4.3 系统界面设计
播放器界面要求布局合理,颜色舒适,控制按钮好,为了减少开发工程量(图4.8)
图4.8 播放器界面
4.4 系统性能设计
根据Android手机系统要求无响应时间为5秒,和手机来电话的特殊情况时,有如下性能要求:
(1) 当要求歌曲播放时,程序响应时间最长不能超过5秒
(2) 当要求歌曲暂停时,程序响应时间最长不能超过5秒
(3) 当要求歌曲停止时,程序响应时间最长不能超过5秒
(4) 当要求歌曲上/下一首时,程序响应时间最长不能超过5秒
(5) 当要求进行清单列表时,程序响应时间最长不能超过5秒
(6) 当正在播放歌曲时,来电,播放器自动暂停播放。
第五章 Android 数据库设计
数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。
5.1数据库及字段属性设计
5.1.1字段设计(表、图)
file_table :主要是保存歌曲名字、类型、路径
字段说明:Id 歌曲id号
fileName: 歌曲名字
filePath: 歌曲路径
sort: 歌曲类型(表5-1)
Android自带一个MediaStore封闭类专门来存储媒体信息,通过Uri EXTERNAL_CONTENT_URI 来访问SDcard中的歌曲详细信息。存放媒体信息如TITLE(标题)、ARTIST(艺术家)、ALBUM(专辑)、SIZE(大小 )(表5-2)。
表5.1 键值表
属性 数据类型 允许空 主键 _Id INTEGER Not null Primary key fileName TEXT Not null filePath TEXT sort INTEGER
表 5.2 键值表
属性 数据类型 允许空 主键 _ID INTEGER Not null Primary key TITLE TEXT Not null ARTIST TEXT ALBUM TEXT SIZE LONG
5.2数据库连接
这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下 ,Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库类为DBHelper extends SQLiteOpenHelper(继承关系),内容提供类DBProvider extends ContentProvider(继承关系)。
5.2.1创建数据库
Android 提供了标准的数据库创建方式。继承SQLiteOpenHelper ,实现onCreate 和 onUpgrade 两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:
public DBHelper(Context context) {// 创建数据库
super(context, DATABASE_NAME,null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {// 创建时调用
db.execSQL(DATABASE_CREATE);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 版本更新时调用
db.execSQL("DROP TABLE IF EXISTS File_Table");
onCreate(db);
}
@Override // 在ContextProvider运行时自动创建数据库
public boolean onCreate() {
dbOpenHelper= new DBHelper(getContext());
return true;
}
数据库如果创建不成功则抛出FIleNotFoundException异常。
5.2.2操作数据库
Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。
//数据库删除操作
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
try {
Db.delete(FileColumn.TABLE, arg1, arg2);
} catch (Exception ex) {
ex.printStackTrace();
}return 1;
}
@Override//数据库插入操作
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
long count = 0;
try { count = db.insert(FileColumn.TABLE, null, values);
} catch (Exception ex)
{ ex.printStackTrace(); }
if (count > 0) return uri;
else return null;}
// 数据库更新操作
@Override
public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
int i = 0;
try {
i = db.update(FileColumn.TABLE, values, selection, null);return i;
} catch (Exception ex) {}
return 0;}
5.2.3 数据显示
程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来
@Override//数据库查询操作
public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
// 依次参数为:表名,查询字段,where语句,替换,group by(分组),having(分组条件),order by(排序)
Cursor cur = db.query(FileColumn.TABLE, projection, selection,selectionArgs, null, null, sortOrder);return cur;}
第六章 Java程序设计
6.1JAVA
java是一种可以撰写跨平台应用软件的面向对
上一篇:大拇指西班牙语版
下一篇:试论APP广告在手机中的应用