基于android平台的视频播放器设计.docx

上传人:b****6 文档编号:16546272 上传时间:2023-07-14 格式:DOCX 页数:31 大小:362.44KB
下载 相关 举报
基于android平台的视频播放器设计.docx_第1页
第1页 / 共31页
基于android平台的视频播放器设计.docx_第2页
第2页 / 共31页
基于android平台的视频播放器设计.docx_第3页
第3页 / 共31页
基于android平台的视频播放器设计.docx_第4页
第4页 / 共31页
基于android平台的视频播放器设计.docx_第5页
第5页 / 共31页
基于android平台的视频播放器设计.docx_第6页
第6页 / 共31页
基于android平台的视频播放器设计.docx_第7页
第7页 / 共31页
基于android平台的视频播放器设计.docx_第8页
第8页 / 共31页
基于android平台的视频播放器设计.docx_第9页
第9页 / 共31页
基于android平台的视频播放器设计.docx_第10页
第10页 / 共31页
基于android平台的视频播放器设计.docx_第11页
第11页 / 共31页
基于android平台的视频播放器设计.docx_第12页
第12页 / 共31页
基于android平台的视频播放器设计.docx_第13页
第13页 / 共31页
基于android平台的视频播放器设计.docx_第14页
第14页 / 共31页
基于android平台的视频播放器设计.docx_第15页
第15页 / 共31页
基于android平台的视频播放器设计.docx_第16页
第16页 / 共31页
基于android平台的视频播放器设计.docx_第17页
第17页 / 共31页
基于android平台的视频播放器设计.docx_第18页
第18页 / 共31页
基于android平台的视频播放器设计.docx_第19页
第19页 / 共31页
基于android平台的视频播放器设计.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于android平台的视频播放器设计.docx

《基于android平台的视频播放器设计.docx》由会员分享,可在线阅读,更多相关《基于android平台的视频播放器设计.docx(31页珍藏版)》请在冰点文库上搜索。

基于android平台的视频播放器设计.docx

基于android平台的视频播放器设计

课程设计报告

课程名称《网络程序设计》课程设计

课题名称网络注册登录器

专业网络工程

班级1102

学号01

姓名刘龙飞

指导教师李远辉

2014年9月12日

湖南工程学院

课程设计任务书

 

课程名称网络程序设计

课题网络注册登录器

 

专业班级网络工程1102

学生姓名刘龙飞

学号01

指导老师李远辉

审批

 

任务书下达日期2014年9月1日

任务完成日期2014年9月12日

一、课程设计概述

1.1课程设计题目

一个基于Android平台的网络程序实现注册,登录

1.2课程设计要求

(1)能正确连接外部网络   

(2)能实现注册

(3)能实现正确登录

(4)能够在手机上使用该系统

二、硬件平台搭建

2.1JDK安装

JDK是Java语言的原创者推出的原始开发环境。

采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。

在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为

2.2AndroidSDK安装以及系统设置

下载好SDK包后,将zip文件解压缩至合适的地方。

在下文中,默认SDK安装目录为$SDK_ROOT。

●Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。

如果没有找到设定PATH变量的行,可以自己添加一行:

exportPATH=${PATH}:

<$SDK_ROOT/tools的完全路径>

●Mac下,在home目录中找到文件.bash_profile,和Linux的一样处理。

如果还没有在机器上设定这个文件,可以创建一个.bash_profile文件。

●Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。

通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。

需要注意到是,当升级了SDK后,如果安装路径有变动的话,不要忘记了更新PATH变量的设置,将其指向变动后的路径。

配置SDK有两种方法:

第一种,通过SDK下载器自动下载和配置。

适合网络好,下载速度快的情况;第二种,借助工具下载SDK文件,手工配置。

适合网络不是很好,下载速度慢的情况下。

2.3Eclipse安装以及ADT工具的安装

下载Eclipse安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。

Android为Eclipse定制了一个插件,即AndroidDevelpomentTools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。

ADT扩展了Eclipse的功能,可以让用户快速建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。

安装ADT:

启动Eclipse,选择Help>InstallNewSoftware,在出现的对话框里,点击Add按钮,在对话框的name一栏输入"ADT",然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件,点击OK。

返回可用软件的视图,你会看到这个插件,然后选择DevelopmerTools,点击Next,最后重启Eclipse。

硬件平台搭建好后,便可以开始创建项目了。

三、软件设计

3.1软件总体设计

此软件为一款网络软件,采用CS模式工作,服务器端用C语言编写,客户端为Android应用程序,相互间用socket通信。

3.2服务器端设计

先安装好mysql数据库,建立好相关数据库jsb,以及表userinfo(namechar[10],passwordchar[10])。

再用C编程连接好数据库,然后在4000端口监听,等待连接,相关逻辑代码如下:

while

(1)

{

inti=1,j=0,k=0;

inttf=1;

sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

memset(recvBuf,0,200);

recv(sockConn,recvBuf,200,0);

while(recvBuf[i])

{

if(recvBuf[i]=='+')

{

tf=0;

i++;

}

else

{

if(tf)

{

username[j]=recvBuf[i];

i++;

j++;

}

else{

userpaORme[k]=recvBuf[i];

i++;

k++;

}

}

 

}

switch(recvBuf[0])

{

case'1':

{

charmysqlzl[200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"insertintouserinfovalues('%s','%s');",username,userpaORme);

printf("%s",mysqlzl);

res=mysql_query(my_con,mysqlzl);//用户注册

break;

}

case'2':

{

charmysqlzl[200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"select*fromuserinfowherename='%s'andpassword='%s'",username,userpaORme);

mysql_query(my_con,mysqlzl);//登陆查询

my_res=mysql_store_result(my_con);

my_row=mysql_fetch_row(my_res);

if(my_row!

=NULL)

{

send(sockConn,"sucess\n",strlen("sucess\n")+1,0);

}

else

{

send(sockConn,"failed\n",strlen("failed\n")+1,0);

}

break;

}

}

closesocket(sockConn);

}

服务器截图

3.3Android客户端设计

次软件包含三个界面,3界面的视图设计分别如下:

主界面

注册界面

登陆成功跳转界面

在主界面点击登陆,登陆按钮回调函数首先获取用户名和密码输入框的值,然后用事先规定好的格式将数据传给服务器,再接收服务器的返回信息,如返回sucess,则进入登陆成功跳转界面,否则提示用户名或密码错误。

点击注册按钮进入注册界面后,在完成相关用户名和密码输入之后,点击注册按钮,注册按钮回调函数获取用户名和密码,比较两次输入的密码是否相同,相同的话,按事先规定好的格式将数据传给服务器,注册成功,不相同的话,提示两次密码不同。

 

四、总结与改进展望

在此次课程设计中,不仅了解到了android以及网络编程的有关知识,而且学习了Java语言以及eclipse等编程环境。

有几点需要特别注意:

(1)要明确课程设计的要求,想好系统应该包含哪些功能模块。

否则,在软件设计的后期,再想添加新的功能就需要花费大量的时间。

(2)要对android系统有一定的了解。

在软件设计过程中,大量的用到了android系统的四大组件:

Activity(提供可视化的界面)、Service(运行在后台的服务程序)、BroadcastReceiver(广播事件处理机制)、ContentProvider(使应用程序相互访问数据)。

只有对这些组件熟练掌握后,才能够真正设计出稳健搞笑的多媒体播放器。

(3)要对Java语言熟练掌握。

Android软件开发都是用Java语言写的,而Java又是由类组成的。

而Java语言本身又含有众多机制,只有深刻理解这些机制后,才能轻松地实现自己想要的功能。

(4)要对界面设计有一定的了解。

Android所有的布局都放在了res/layout中,而所有的菜单选项都放在了res/menu中。

合理的布局对人性化的界面也是至关重要的。

(5)要具备快速上网查资料的能力。

面对从没接触过的知识,要有信心才是最重要的。

另外,网上的很多现成的资料都可借鉴、学习。

在熟练理解了别人的应用程序的基础上,再做二次开发。

个人收获:

1.现学现做的能力。

从图书馆借一些参考光盘,对某项内容的原理大致了解后,直接运行它的源代码,先观察效果,给大脑直接的印象,然后再去理解程序。

2.上网查资料的能力。

网络是一个十分强大的信息工具。

网上有大量的Android参考资料以及很多著名的Android论坛,这上面为我提供了大量的有用信息。

尤其是碰到错误时,上网搜一搜,能很快找到解决办法。

3.英语阅读能力。

因为很多资料都是起源于国外,而很多参考书也是英文的。

此外,Android官网以及著名的Android论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。

4.与同学间的交流探讨。

大家经常交流,有助于开拓自己的思维,取长补短,共同解决碰到的问题,这正是一个相互学习的过程。

6、附录

v服务器C源码:

#include

#include

#include

#include

#include

//发生错误时,输出错误信息,关闭连接,退出程序

voiderror_quit(constchar*str,MYSQL*connection)

{

fprintf(stderr,"%s:

%d:

%s\n",

str,mysql_errno(connection),

mysql_error(connection));

if(connection!

=NULL)

mysql_close(connection);

exit

(1);

}

intmain(intargc,char*argv[])

{

MYSQL*my_con;

MYSQL_RES*my_res;

MYSQL_FIELD*my_field;

MYSQL_ROWmy_row;

introws,i;

intres;

WORDwVersionRequested;

WSADATAwsaData;

SOCKETsockSrv,sockConn;

SOCKADDR_INaddrSrv;

SOCKADDR_INaddrClient;

charsendBuf[200],recvBuf[200];

interror,len;

charusername[10];

charuserpaORme[20];

memset(username,0,10);

memset(userpaORme,0,20);

my_con=malloc(sizeof(MYSQL));

memset(recvBuf,0,200);

//连接数据库

mysql_init(my_con);

my_con=mysql_real_connect(my_con,"localhost","root","abc123",

"jsb",0,NULL,CLIENT_FOUND_ROWS);

if(NULL==my_con)

error_quit("MysqlConnectionfail",my_con);

printf("MysqlConnectionsuccess\n");

wVersionRequested=MAKEWORD(1,1);

error=WSAStartup(wVersionRequested,&wsaData);

if(error!

=0)

{

printf("启动套接字失败");

return0;

}

if(LOBYTE(wsaData.wVersion)!

=1||HIBYTE(wsaData.wVersion)!

=1)

{

WSACleanup();

return0;

}

sockSrv=socket(AF_INET,SOCK_STREAM,0);

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(4000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

printf("开始监听\n");

listen(sockSrv,5);

len=sizeof(SOCKADDR);

while

(1)

{

inti=1,j=0,k=0;

inttf=1;

sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

memset(recvBuf,0,200);

recv(sockConn,recvBuf,200,0);

while(recvBuf[i])

{

if(recvBuf[i]=='+')

{

tf=0;

i++;

}

else

{

if(tf)

{

username[j]=recvBuf[i];

i++;

j++;

}

else{

userpaORme[k]=recvBuf[i];

i++;

k++;

}

}

 

}

switch(recvBuf[0])

{

case'1':

{

charmysqlzl[200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"insertintouserinfovalues('%s','%s');",username,userpaORme);

printf("%s",mysqlzl);

res=mysql_query(my_con,mysqlzl);//用户注册

break;

}

case'2':

{

charmysqlzl[200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"select*fromuserinfowherename='%s'andpassword='%s'",username,userpaORme);

mysql_query(my_con,mysqlzl);//登陆查询

my_res=mysql_store_result(my_con);

my_row=mysql_fetch_row(my_res);

if(my_row!

=NULL)

{

send(sockConn,"sucess\n",strlen("sucess\n")+1,0);

}

else

{

send(sockConn,"failed\n",strlen("failed\n")+1,0);

}

break;

}

}

//printf("Clientsays:

%s\n",recvBuf);

closesocket(sockConn);

}

//释放空间,关闭连接

mysql_free_result(my_res);

mysql_close(my_con);

free(my_con);

return0;

}

vAndroid客户端界面源代码:

vActivity_main.xml

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

>

android="

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

orientation="vertical">

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

text="用户名"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/username"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

text="密码"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/userpass"

/>

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="登陆"

android:

id="@+id/dlButton"

/>

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="注册"

android:

id="@+id/zcButton"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/ztlview"

/>

 

vzhucei.xml:

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

>

android="

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

orientation="vertical">

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

text="用户名"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/zcusername"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

text="密码"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/zcuserpass"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

text="再次输入密码"

/>

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

id="@+id/zcaguserpass"

/>

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="注册"

android:

id="@+id/zhuceiButton"

/>

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="返回"

android:

id="@+id/BackButton"

/>

android:

layout_width="fill_parent"

android:

layo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2