移动互联网应用技术 (Android平台)
课程设计报告
所 在 系 : 信息工程系 学 号:
学 生 姓 名:
指 导 教 师: 刘发久
起 止 日 期:2015.09-2015.10
1
前 言
移动互联网,就是将移动通信和互联网二者结合起来形成的网络。
近年来,随着智能手机和移动互联网的普及,以及大数据、云计算的出现和运用,互联网迎来了加速度裂变化的新一轮革命。这场革命不仅使社会的各个方面发生了许多颠覆性的变化,而且改变了人类时间的空间轴、时间轴和思想维度。互联网将带来一个低成本和零边际成本营销的时代。产品为王是一条铁的规律。互联网未来在产品体验、营销模式上的争夺会更加激烈。
iiMeida Research(艾媒咨询)数据显示,截止20xx年上半年,中国手机网民用户规模达6.57亿人,环比增长1.9%,增速有所放缓。截止20xx年上半年,中国智能手机用户规模首次超过6亿,为6.01亿人。
Mobile Everything “万物皆移动,移动生万物”,正是对当前移动互联网的描述。如今的“Mobile”已不仅仅只是手机、iPad、超级本,还可以是智能手表、谷歌(微博)眼镜、特斯拉、机器人等等,这些都是“移动互联网”的载体,而这些智能硬件的摄像头、麦克风、传感器、定位功能,也都已经成了人类“触觉”的延伸,越来越多的人在购物、用餐、出行、工作时,都习惯性地使用移动设备,移动互联网成为当前推动产业乃至经济社会发展最强有力的技术力量。
20xx年,Symbian系统仍占据中国移动(微博)操作系统市场全年出货量的74.7%,而随着Android系统以开源、免费吸引中国企业大规模进入智能终端领域,迅速成长为市场主导力量。至20xx年底,Android已占到增量市场的86.4%,其它系统中,Symbian仅余2%,苹果iOS占8.6%,Windows占1.2%,而国内自主操作系统普遍未超过1%。工信部电信研究院最近发布的《移动互联网白皮书(20xx年)》显示,与计算机产业的摩尔定律相比,移动互联网终端硬件、软件、应用、流量都6个月的短周期升级或增长。过去几年间,操作系统格局全面翻盘,Android占到主导地位。
本课程设计报告叙述了Android开发技术的主要内容和特点,介绍了本人在Android开发平台上开发的动画与音乐播放项目、SQLite数据库开发项目、手机数据库共享项目、 手机访问Web服务器项目和掌上作业系统需求分析文档。
2
目 录
1 软件产品介绍 ...................................................................................................................... 7
1.1 软件产品名称 ............................................................................................................ 7
1.2 软件总体功能 ............................................................................................................ 7
2 软件开发环境 ...................................................................................................................... 8
2.1 JDK安装 .................................................................................................................... 8
2.2 Android SDK安装以及系统设置 ............................................................................. 8
2.3 Eclipse安装以及ADT工具的安装 ......................................................................... 8
3 软件功能说明 ...................................................................................................................... 9
3.1 软件布局 .................................................................................................................... 9
3.2 视频文件搜索功能 .................................................................................................. 10
3.3 播放控制功能 .......................................................................................................... 11
3.4 其他功能 .................................................................................................................. 12
4 程序流程图 ........................................................................................................................ 12
5 软件界面及程序主要代码 ................................................................................................ 13
5.1 软件在虚拟机上调试及分析 .................................................................................. 13
5.2 软件在手机上的调试及分析 .................................................................................. 14
5.3 程序主要代码 .......................................................................................................... 15
6 设计总结 ............................................................................................................................ 16
7 设计收获 ............................................................................................................................ 17
8 附录 .................................................................................................................................... 17
3
1. Android平台概述
1.1 Android简介
Android 系统最初由AndyRubin制作,20xx年被谷歌收购。20xx年11月5日以谷歌为首的80多家公司宣布成立开放手机联盟(OHA)。20xx年 9月23日,谷歌发布了Android SDKv1.0版,这是第一个正式的SDK版本。20xx年10月21日,谷歌开放了Android平台的源代码。20xx年10月19日上午十点,谷歌与三星联手在中国香港举办发布会,公布有关Android 4.0系统信息。20xx年11月3日,Android的最新版本5.0 Lollipop面向用户正式推出。20xx年11月10日LG官方宣布LG G3将会在本周推出Android 5.0的升级包,荷兰将会是首个获得LG G3 Android 5.0升级包的国家,中国于20xx年3月3日OTA推送更新。
Android 是一个以Linux为基础用于移动设备的操作系统及软件架构,由Google和开放手持设备联盟(Open Handset Alliance)开发和主导。Android是针对移动设备的软件开发平台,包括操作系统、中间件和一些重要的应用程序。
Android Software Development Kit (SDK) 是Android专属的API类库,提供了使用Java语言进行Android 应用项目开发的接口和必须的工具,其中包括代码编译器、资源编译器、调试器和模拟器。通过MyEclipse Window Preferences指定SDK路径。
Android SDK是使用Java语言进行项目开发所必须的API和工具。在android-sdk-windows\docs下可以看到SDK的官方文档,帮助你使用SDK。
Android Development Tools(ADT)是谷歌提供的Eclipse插件,包括Android项目开发的向导程序和应用模板,使应用项目的开发更加简单和容易。Android ADT是项目的开发工具。
1.2 APP开发过程、apk文件结构和运行环境
4
APP开发过程如下图所示:
apk文件及其结构:
apk是AndroidPackage的缩写,将apk文件直接传到Android模拟器或Android手机中执行。.apk文件是把sdk编译的工程打包成一个格式为.apk的安装包。apk文件其实是zip格式,但后缀名被修改为apk,解压后可以看到.dex文件,Dalvik执行程序是Dalvik字节码.dex文件,而不是JavaME字节码.class
1) META-INF\ (Jar文件中常可以看到);
2) res\ (存放资源文件的目录) ;
3) AndroidManifest.xml (程序全局配置文件) ;
4) classes.dex (Dalvik字节码);
5) resources.arsc (编译后的二进制资源文件)。
运行环境:
Dalvik是Google 设计的用于Android手机的Java虚拟机。Dalvik虚拟机可以有多个实例, 每一个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码.class格式的文件,而是运行一种称为.dex格式的文件。
Dalvik Debug Monitor Service(DDMS)是Dalvik调试器 。
1.3 Android四大组件
-------------------------------
2. 课程设计项目之一:动画与音乐播放项目
5
2.1 功能描述(UML 用例图、用例说明)
2.2 项目结构
2.3 主要代码分析
2.4 演示截图
3. 课程设计项目之二:SQLite数据库开发项目
3.1 功能描述(UML 用例图、用例说明)
3.2 项目结构
3.3 主要代码分析
3.4 演示截图
4. 课程设计项目之三:手机数据库共享项目
5. 课程设计项目之四:手机访问Web服务器项目
6. 课程设计项目之五:手机考试系统
7. 总结
收获、体会、优点、缺点
6
1.Activity 顾名思义,Activity就是活动。应用程序必须至少包含一个Activity。Activity提供了一个虚拟的用户接口,每一个Activity都有一个默认的窗口可以用来显示用户界面,一般情况下,它是全屏的窗口。例如,影音播放软件的每个用户界面就是Activity。
2.Service Service与Activity的主要区别在于,Service是在后台活动的,它没有用户界面。典型的应用场景是,用户选择了一个播放列表开始播放后,离开了该用户界面(Activity),如果仍然希望歌曲不会暂停,就可以用Service去调用播放器,而不是在Activity中调用播放器。
3.Intent 在Android中,每一个行为都可以抽象为一个Intent。可以简单地把Intent理解为一个包含了数据的消息。Intent可以用于启动一个Act-ivity或者Service,可以用于进程间的通信。事实上,应用程序的启动也是通过Intent实现的。
4.Content providers Android平台内置了一套SQLite数据储存机制,并包含一系列管理SQLite Database的相关方法。在应用程序中,可以通过Content prov-iders访问数据库。每个Content provider都定义了一系列的方法用于访问它对应的数据库。应用程序在新建数据库时也可以定义相应的Con-tent provider用于向其他应用程序共享数据。一般情况下,应用程序不直接调用Content provider定义的函数,而是通过ContentResolver间接调用。
1 软件产品介绍
1.1 软件产品名称
一个基于Android平台的视频播放器
1.2 软件总体功能
(1) 能够播放.avi, .mp4等文件
(2) 能处理简单的异常,例如文件不存在等
(3) 能正常启动,退出
(4) 能够在手机上使用该系统
7
2 软件开发环境
2.1 JDK安装
JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为/technetwork/indexes/downloads/index.html,也可从其他网站下载。下载完成后,双击运行JDK安装程序并根据提示设定环境变量。
2.2 Android SDK安装以及系统设置
下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,默认SDK安装目录为$SDK_ROOT 。
? Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。如果没有找到设定PATH变量的行,可以自己添加一行: export PATH=${PATH}:<$SDK_ROOT/tools的完全路径>
? Mac下,在home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,可以创建一个.bash_profile文件。
? Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。
通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。需要注意到是,当升级了SDK后,如果安装路径有变动的话,不要忘记了更新PATH变量的设置,将其指向变动后的路径。
配置SDK有两种方法:第一种,通过SDK下载器自动下载和配置。适合网络好,下载速度快的情况;第二种,借助工具下载SDK文件,手工配置。适合网络不是很好,下载速度慢的情况下。
2.3 Eclipse安装以及ADT工具的安装
下载Eclipse安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。
Android为Eclipse定制了一个插件,即Android Develpoment Tools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。ADT扩展了Eclipse的功能,可以让用户快速建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。安装ADT:启动Eclipse,选择Help>Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入"ADT",然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件,点击OK。返回可用软件的视图,你会看到这个插件,然后选择Developmer Tools,点击Next,最后重启Eclipse。
软件开发环境搭建好后,便可以开始创建项目了。
8
3 软件功能说明
3.1 软件布局
此为一个视频播放器,设计的软件需要支持快进、快退、暂停、继续和进度拖曳等功能。视频播放软件工程文件主要包括src文件夹(Java源码)、res文件夹(资源文件)和AndroidMainfest.xml(程序清单)。软件主要由Activities组成,每个Activity对应一个模块。不同的Activity通过Intent进行通信和相互调用。软件的布局(main.xml)如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/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="@string/hello"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="键入文件名称"
android:textSize="20dp"
/>
<EditText
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/starttoplay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Open file"
android:textSize="20dp"
/>
<VideoView
android:id="@+id/video"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
9
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" 点击界面获取播放控制键"
android:textSize="20dp"
/>
<Button
android:id="@+id/quit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Quit"
android:textSize="20dp"
/>
</LinearLayout>
布局主体为LinearLayout,由多个TextView、Button等类组成。
3.2 视频文件搜索功能
此程序需要输入文件的绝对路径,例如"/sdcard/video.mp4";输入文件名字之后,点击open file,即可搜索到你想要播放的视频,部分程序如下:
if(video.exists()){
videoView.setVideoPath(video.getAbsolutePath());//文件绝对路径
videoView.setMediaController(mediaController);//设置videoView与mediaControler的关联
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
}
图1
10
3.3 播放控制功能
在打开播放文件之后,点击画面的空白部分,这时会弹出视频播放控制按钮,分别是后退、播放/暂停和前进,下面显示视频播放时间轴,可以进行拖曳。
图2
点击qiut即可退出界面
图3
11
3.4 其他功能
此程序还能处理简单的异常,输入文件后,若文件不存在,会提醒你“很抱歉,您输入的文件不存在,请重新输入”,若文件格式不符合,也会有相应的提示。部分程序如下:
if(video.exists()){......}
else{
Toast.makeText(VideoPlayerActivity.this,"很抱歉,您输入的文件不存在,请重新输入", Toast.LENGTH_LONG).show();
}
图4
4 程序流程图
明确了主要功能后,就需要对此软件基本流程有一个总体规划,本款手机视频播放器基本流程图如图所示。
12
5 软件界面及程序主要代码
5.1 软件在虚拟机上调试及分析
此次调试采用的虚拟机是Android 2.1,并且分别导入avi,mp4,mp3等文件进行调试。一开始系统点击视频播放器的图标进入视频播放器的界面,执行VideoPlayerActivity.java就可以执行视频播放器的操作了:播放,暂停,快进,快退,退出。
? 在调试过程中,遇到了不少问题,大致如下:
1)Unable to resolve target 'android-2'
原因:将一个低版本的Android项目导入到workspace里通常会在第一时间出现这样的错误提示。
解决办法:将default.properties属性文件中的Project target修改为android-7即可,android 2.1对应的API为7.
2)Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
解决办法:点击菜单栏中的project>properties>Java Compiler>Enable project specific settings,将Compiler compliance level改为1.6。
3)Could not find videoPlayer.apk!
解决办法:点击菜单栏中的project>properties>Java Build Path,选择Libraries,点下面的Android 2.1,然后点右边按钮Remove,然后apply,然后ok。再选择project>android tools>Fix project properties,运行就可以了。
13
还遇到了许多小小的错误,如向sdcard中导入文件不能使用中文路径,在此不一一列出。
在解决这些问题过程中,更加熟练地掌握了虚拟机的调试方法,最终能成功地播放文件。在模拟器上大体不错,界面很酷,并且很整齐,功能都可以实现。下面是在模拟器上的实现:
图5
5.2 软件在手机上的调试及分析
播放器的安装:将程序安装包下载到手机上,在手机中找到videoplay.apk的安装文件,打开文件按指示安装videoplay播放器,并在手机的sd卡中放入相应的音频、视频文件。
文件的播放:
1)安装成功后,直接打开视频播放器,找到音频、视频文件所在地方,按播放器界面提示,输入要播放的文件的绝对路径,打开文件使之播放,在手机上视频播放更为流畅。流程图如下所示:
14
文件路径,打开播放器,在第一个输入框中输入要播放的文件的打开路径,点击下方Open file 即可打开文件,手机屏幕上提示显示“点击屏幕获取播放控制键”,按指示点击,跳出控制键,点击播放键,即可听音乐或放视频。控制小界面上有播放/暂停、上一曲/快退、下一曲/快进控制键,以及播放进度显示条,我们亦可点击进度条,使播放文件迅速跳转到我们需要的地方。
当文件播放完时,屏幕显示跳回到流程图中第三个画面。而当打开的路径不正确时,屏幕上也会给出错误提示,如第六个图所示。如若要退出程序,则点击下方的Quit键,即可退出播放器。
2)打开sd卡内文件夹,找到音频、视频文件所在地,直接点击文件,文件即可在播放器中播出。
5.3 程序主要代码
此程序需要输入文件的绝对路径,例如"/sdcard/video.mp4";输入文件名字之后,点击open file,即可搜索到你想要播放的视频,部分程序如下:
if(video.exists()){
videoView.setVideoPath(video.getAbsolutePath());//文件绝对路径
15
videoView.setMediaController(mediaController);//
videoView与mediaControler的关联
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
} 设置
输入文件后,若文件不存在,会提醒你“很抱歉,您输入的文件不存在,请重新输入”,若文件格式不符合,也会有相应的提示。部分程序如下:
else{
Toast.makeText(VideoPlayerActivity.this,"很抱歉,您输入的文件不存在,请重新输入", Toast.LENGTH_LONG).show();
}
设置窗口的像素格式、,实现按钮
//public Window getWindow () 返回当前activity的window
//void android.view.Window.setFormat(int format)
//public void setFormat (int format) 设置窗口的像素格式
//PixelFormat.TRANSLUCENT 透明格式
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);
videoView=(VideoView)findViewById(R.id.video);
editText=(EditText)findViewById(R.id.edittext);
openButton=(Button)findViewById(R.id.starttoplay);
openButton.setOnClickListener(new startlistener());
qiutButton=(Button)findViewById(R.id.quit);
qiutButton.setOnClickListener(new qiutlistener());
mediaController=new MediaController(this);
6 设计总结
在此次课程设计中,不仅了解到了android的有关知识,而且学习了Java语言以及eclipse等硬件环境。有几点需要特别注意:
(1)要明确课程设计的要求,想好系统应该包含哪些功能模块。否则,在软件设计的后期,再想添加新的功能就需要花费大量的时间。
(2)要对android系统有一定的了解。在软件设计过程中,大量的用到了android系统的四大组件:Activity(提供可视化的界面)、Service(运行在后台的服务程序)、Broadcast Receiver(广播事件处理机制)、Content Provider(使应用程序相互访问数据)。只有对这些组件熟练掌握后,才能够真正设计出稳健搞笑的多媒体播放器。
(3)要对Java语言熟练掌握。Android软件开发都是用Java语言写的,而Java又是由类组成的。而Java语言本身又含有众多机制,只有深刻理解这些机制后,才能轻松地实现自己想要的功能。
(4)要对界面设计有一定的了解。Android所有的布局都放在了res/layout中,而所有的菜单选项都放在了res/menu中。合理的布局对人性化的界面也是至关重要的。 16
(5)要具备快速上网查资料的能力。面对从没接触过的知识,要有信心才是最重要的。另外,网上的很多现成的资料都可借鉴、学习。在熟练理解了别人的应用程序的基础上,再做二次开发。
还需要改进的地方:
1.播放器的播放界面设置较为简单,不够精美和方便,看过班上很多同学设计的播放器有些甚是完整,完全可以在手机上作为专门的媒体播放器使用,可以向他们学习,加以改进,使我们的作品也更完善;
2.只支持.avi,.mp3,.mp4格式的,还应支持.flv等其他格式的;
3.只能播放一个视频,以后还要扩展成能播放多个视频的;
4.播放音频文件时不能显示播放歌曲的歌词,这是一个较大的缺陷,在程序上可以进行补充和调整,对于下载的模拟器中一些功能的调用更全面,可以将之改进;
5.播放音频文件时不能实现播放模式的选择。
7 设计收获
1.现学现做的能力。从图书馆借一些参考光盘,对某项内容的原理大致了解后,直接运行它的源代码,先观察效果,给大脑直接的印象,然后再去理解程序。
2.团队协作意识。身为团队的一员,必须与自己的队友合作。尤其是刚开始做时,要将任务分配明确,还要定期监督各自的进度。
3.上网查资料的能力。网络是一个十分强大的信息工具。网上有大量的Android参考资料以及很多著名的Android论坛,这上面为我提供了大量的有用信息。尤其是碰到错误时,上网搜一搜,能很快找到解决办法。
4.英语阅读能力。因为很多资料都是起源于国外,而很多参考书也是英文的。此外,Android官网以及著名的Android论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。
5.与同学间的交流探讨。此次我们团队为两个人,我们经常交流,有助于开拓自己的思维,取长补短,共同解决碰到的问题,这正是一个相互学习的过程。
8 附录
? VideoPlayerActivity.java:
package Ld.videoPlayer;
import java.io.File;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.MediaController;
import android.widget.Toast;
17
import android.widget.VideoView;
public class VideoPlayerActivity extends Activity {
/** Called when the activity is first created. */
VideoView videoView;
private String fielname;
MediaController mediaController;
EditText editText;
Button openButton;
Button qiutButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//public Window getWindow () 返回当前activity的window //void android.view.Window.setFormat(int format)
//public void setFormat (int format) 设置窗口的像素格式 //PixelFormat.TRANSLUCENT 透明格式
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);
videoView=(VideoView)findViewById(R.id.video);
editText=(EditText)findViewById(R.id.edittext);
openButton=(Button)findViewById(R.id.starttoplay);
openButton.setOnClickListener(new startlistener());
qiutButton=(Button)findViewById(R.id.quit);
qiutButton.setOnClickListener(new qiutlistener());
mediaController=new MediaController(this);
/*
File video=new File("/sdcard/re.mp4");
//若文件被找到
if(video.exists()){
videoView.setVideoPath(video.getAbsolutePath());//文件绝对路径 videoView.setMediaController(mediaController);//设置videoView与mediaControler的关联
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
}
*/
}
class startlistener implements OnClickListener{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
18
fielname=editText.getText().toString();
System.out.println(fielname);
//File video=new File("/sdcard/re.mp4");
File video=new File(fielname);
//若文件被找到
if(video.exists()){
videoView.setVideoPath(video.getAbsolutePath());//文件绝对路径
videoView.setMediaController(mediaController);//设置videoView与mediaControler的关联
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
}
else{
Toast.makeText(VideoPlayerActivity.this,"很抱歉,您输入的文件不存在,请重新输入", Toast.LENGTH_LONG).show();
}
}
}
class qiutlistener implements OnClickListener{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
finish();
}
}
}
? Main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="/apk/res/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="@string/hello"
/>
<TextView
19
android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="键入文件名称"
android:textSize="20dp"
/>
<EditText
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/starttoplay"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Open file"
android:textSize="20dp"
/>
<VideoView
android:id="@+id/video"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<TextView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text=" 点击界面获取播放控制键" android:textSize="20dp"
/>
<Button
android:id="@+id/quit"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Quit"
android:textSize="20dp"
/>
</LinearLayout>
? Strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">视频播放器</string>
<string name="app_name">VideoPlayer</string> </resources>
20