当前位置:文档之家› 基于android平台的视频播放器设计

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

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

课程设计报告

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

课题名称网络注册登录器

专业网络工程

班级1102

学号01

姓名刘龙飞

指导教师李远辉

2014年9 月12 日

湖南工程学院

课程设计任务书

课程名称网络程序设计

课题网络注册登录器

专业班级网络工程1102

学生姓名刘龙飞

学号01

指导老师李远辉

审批

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

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

一、课程设计概述

1.1 课程设计题目

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

1.2 课程设计要求

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

(2) 能实现注册

(3) 能实现正确登录

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

二、硬件平台搭建

2.1 JDK安装

JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为https://www.doczj.com/doc/2819156353.html,/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.3Eclipse安装以及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。

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

三、软件设计

3.1 软件总体设计

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

3.2服务器端设计

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

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

while(1)

{

int i=1,j=0,k=0;

int tf=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':

{

char mysqlzl [200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"insert into userinfo values('%s','%s');",username,userpaORme);

printf("%s",mysqlzl);

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

break;

}

case '2':

{

char mysqlzl [200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"select * from userinfo where name='%s' and password='%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.3 Android客户端设计

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

主界面

注册界面

登陆成功跳转界面

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

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

四、总结与改进展望

在此次课程设计中,不仅了解到了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中。合理的布局对人性化的界面也是至关重要的。

(5)要具备快速上网查资料的能力。面对从没接触过的知识,要有信心才是最重要的。另外,网上的很多现成的资料都可借鉴、学习。在熟练理解了别人的应用程序的基础上,再做二次开发。

个人收获:

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

2.上网查资料的能力。网络是一个十分强大的信息工具。网上有大量的Android参考资料以及很多著名的Android论坛,这上面为我提供了大量的有用信息。尤其是碰到错误时,上网搜一搜,能很快找到解决办法。

3.英语阅读能力。因为很多资料都是起源于国外,而很多参考书也是英文的。此外,Android官网以及著名的Android论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。

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

六、附录

?服务器C源码:

#include

#include

#include

#include

#include

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

void error_quit(const char *str, MYSQL *connection)

{

fprintf(stderr, "%s : %d: %s\n",

str, mysql_errno(connection),

mysql_error(connection));

if( connection != NULL )

mysql_close(connection);

exit(1);

}

int main(int argc, char *argv[])

{

MYSQL *my_con;

MYSQL_RES *my_res;

MYSQL_FIELD *my_field;

MYSQL_ROW my_row;

int rows, i;

int res;

WORD wVersionRequested;

WSADATA wsaData;

SOCKET sockSrv,sockConn;

SOCKADDR_IN addrSrv;

SOCKADDR_IN addrClient;

char sendBuf[200],recvBuf[200];

int error,len;

char username [10];

char userpaORme [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("Mysql Connection fail", my_con);

printf("Mysql Connection success\n");

wVersionRequested=MAKEWORD(1,1);

error=WSAStartup(wVersionRequested,&wsaData);

if(error!=0)

{

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

return 0;

}

if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) {

WSACleanup();

return 0;

}

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)

{

int i=1,j=0,k=0;

int tf=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':

{

char mysqlzl [200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"insert into userinfo values('%s','%s');",username,userpaORme);

printf("%s",mysqlzl);

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

break;

}

case '2':

{

char mysqlzl [200];

memset(mysqlzl,0,200);

sprintf(mysqlzl,"select * from userinfo where name='%s' and password='%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("Client says:%s\n",recvBuf);

closesocket(sockConn);

}

//释放空间,关闭连接

mysql_free_result(my_res);

mysql_close(my_con);

free(my_con);

return 0;

}

?Android客户端界面源代码:

?Activity_main.xml

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"

/>

?zhucei.xml:

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:layout_height="wrap_content"

android:id="@+id/zhuceiynview"

/>

?dlcg.xml:

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="登陆成功"

/>

?MainActivity.java:

package com.example1.jsb;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import https://www.doczj.com/doc/2819156353.html,.Socket;

import https://www.doczj.com/doc/2819156353.html,.UnknownHostException;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.widget.*;

public class MainActivity extends Activity {

public Button button1;

public Button button2;

public BufferedReader in;

public PrintWriter out;

public Socket socket;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/2819156353.html,yout.activity_main);

button1=(Button) this.findViewById(R.id.dlButton);

button1.setOnClickListener(new ButtonClickListener());

button2=(Button) this.findViewById(R.id.zcButton);

button2.setOnClickListener(new ButtonClickListener());

}

private final class ButtonClickListener implements View.OnClickListener{

public void onClick(View v){

if(button1==(Button)v)

{

EditText User=(EditText)findViewById(https://www.doczj.com/doc/2819156353.html,ername);

String Username=User.getText().toString();

EditText Pass=(EditText)findViewById(https://www.doczj.com/doc/2819156353.html,erpass);

String Userpass=Pass.getText().toString();

TextView ztl=(TextView)findViewById(R.id.ztlview);

try {

socket= new Socket("58.45.180.145", 4000);

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(

socket.getOutputStream())), true);

String sendmsg="2"+Username+"+"+Userpass;

out.println(sendmsg);

String fwq=in.readLine();

if(fwq.equals("sucess"))

{

Intent intent = new Intent();

// 设置Intent的源地址和目标地址

intent.setClass(MainActivity.this, dlcg.class);

startActivity(intent);

MainActivity.this.finish();

}

else if(fwq.equals("failed"))

{

ztl.setText("用户名或密码不对!");

}

else

{

ztl.setText(fwq);

}

// socket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

else if(button2==(Button)v)

{

Intent intent = new Intent();

// 设置Intent的源地址和目标地址

intent.setClass(MainActivity.this, zhucei.class);

startActivity(intent);

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

?Zhucei.java

package com.example1.jsb;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import https://www.doczj.com/doc/2819156353.html,.Socket;

import https://www.doczj.com/doc/2819156353.html,.UnknownHostException;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.*;

public class zhucei extends Activity {

public Button button1;

public Button button2;

public BufferedReader in;

public PrintWriter out;

public Socket socket;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/2819156353.html,yout.zhucei);

button1=(Button) this.findViewById(R.id.zhuceiButton);

button1.setOnClickListener(new ButtonClickListener());

button2=(Button) this.findViewById(R.id.BackButton);

button2.setOnClickListener(new ButtonClickListener());

}

private final class ButtonClickListener implements View.OnClickListener{

public void onClick(View v){

if(button1==(Button)v)

{

try {

socket= new Socket("58.45.180.145", 4000);

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(

socket.getOutputStream())), true);

// String fwq=in.readLine();

// socket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

EditText User=(EditText)findViewById(R.id.zcusername);

String Username=User.getText().toString();

EditText Pass=(EditText)findViewById(R.id.zcuserpass);

String password=Pass.getText().toString();

EditText Apass=(EditText)findViewById(R.id.zcaguserpass);

String apassword=Apass.getText().toString();

if(password.equals(apassword))

{

if(out!=null)

{

String SenM ="1"+Username+"+"+password;

out.println(SenM);

TextView

view1=(TextView)findViewById(R.id.zhuceiynview);

view1.setText("注册成功!");

}

else

{

TextView

view1=(TextView)findViewById(R.id.zhuceiynview);

view1.setText("网络问题注册未成功");

}

}

else{

TextView

view1=(TextView)findViewById(R.id.zhuceiynview);

view1.setText("两次输入密码不相同,请从新输入!!");

}

}

else if(button2==(Button)v)

{

zhucei.this.finish();

}

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

?dlcg.java:

package com.example1.jsb;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import https://www.doczj.com/doc/2819156353.html,.Socket;

import https://www.doczj.com/doc/2819156353.html,.UnknownHostException;

import android.os.Bundle;

import android.provider.Settings;

import android.app.Activity;

import android.content.Intent;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.View;

import android.widget.*;

public class dlcg extends Activity {

public Button button1;

public Button button2;

@Override

基于Android的多功能视频播放器的系统设计

文档编号:基于Android的多功能视频播放器 系统设计说明书 目录 1引言 4 1.1目的 4 1.2适用范围 4 2系统架构 5 2.1硬件架构 5 2.2软件架构 9 3完整功能结构图 11 4系统数据库设计 11 4.1 E-R图设计 11 4.2字段设计 11 4.2.1本地视频文件记录表 11

4.2.2历史播放文件表 12 4.2.3 收藏文件表 12 5视频播放器部署图 13 6 系统需求 13 6.1系统界面需求 13 6.2系统性能需求 13 6.1系统开发环境需求 14 7视频播放器流程图 14 1引言 1.1目的 本文档是多通道同步数字记录仪升级换代项目的系统设计文档。从系统的高层角度对系统的硬件架构、软件架构、网络架构、系统部署、系统运行方式进行设计,为下一步各个模块的详细设计提供系统级的视图。 1.2适用范围 本文用于描述多通道同步数字记录仪升级换代项目的系统设计,给出系统的主要架构与配置项,对相关运行、数据、用户接口、容错与复用和重要模块进行分

析,作为项目后续详细设计与开发实现的依据。本说明书的阅读对象为:跟我们同龄的有一定基础的大学生,以及相关的项目开发人员等等。 2系统架构 2.1硬件架构 2.1.1 JDK安装 JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为,也可从其他网站下载。下载完成后,双击运行JDK安装程序并根据提示设定环境变量。 2.1.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的完全路径加入其中。

android开发计算器设计开发报告

《安卓开发》程序设计报告 题目简单计算器开发 专业(班级)网工111班 姓名张波波 学号5(qq) 指导教师赵(老师) 日期 目录 一、设计说明:2 1.设计内容:Android简单应用程序开发,简单计算器。2 2程序说明:2 二、开发环境:3 三、概要设计:3 系统的总体3 四、程序流程和系统功能设计3 程序流程设计3 .系统功能设计4 基于Android平台系统具体设计4 总体模块详细设计5 输入模块详细设计 5

显示模块详细设计6 计算模块详细设计 6 五、计算器系统实现7 Android应用程序构成7 六、截图说明 8 1、图标8 2界面8 3运算界面9 4错误输入9 5设计平台界面10 6签名导出apk 10 七、总结 11 课程设计任务书 一、设计说明: 1.设计内容:Android简单应用程序开发,简单计算器。 2程序说明: 1、计算器界面友好,方便使用。 2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。能够判断用户输入运算数是否正确。4、 支持小数运算。 具有退格功能,能够删除最后一个输入,ce。 具有清除功能,删除所有,c。 具有结果存储功能,能够显示存储器状态,支持触屏手机。 支持最低版本,最高版本。开发时为

二、开发环境: 开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。 三、概要设计: 系统的总体 整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其她的功能。 总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其她的信息。 计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。 四、程序流程和系统功能设计 程序流程设计 知道了系统的功能以后,我们通过来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。 系统流程图如图4-1所示:

多媒体播放器的设计与实现

《多媒体技术》 课程论文 题目:基于MFC的多媒体播放器的设计与实现专业: 班级: 姓名: 学号: 指导老师:

摘要: 本程序是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能的多媒体播放器。具有打开文件、播放、暂停、全屏、音量调节、静音、快进、快退等基本播放功能。系统开发平台为Windows 7操作系统,程序设计环境采用Visual C++ 6.0。 关键字:MFC,ActiveMovie,多媒体

1.开发工具及相关知识介绍 MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。 MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。 一个MFC窗口对象是一个C++ CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows窗口在MFC 窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。

安卓计算器开发实验报告

上海电力学院 嵌入式WebOS应用开发 实验报告 实验名称:使用Android Developer SDK开发应用程序 专业: 姓名: 班级: 学号:

一、作品的运行环境及安卓SDK基础操作 SDK Android Developer是一款在windows系统上运行的针对Android应用开发的谷歌官方软件(需要JAVA环境支持)。 1、导入工程 2、建立虚拟机 在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB,因为部分程序如果调用资源过大会导致虚拟机无法运行。

3、虚拟机界面 二、作品介绍 我的应用是一个计算器。能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。

三、编程以及运行调试 (一)、在MyDesktop主界面中添加应用图标 1. 首先在我的桌面上添加你应用的图标以及文字,双击 图标后就可以看见对应的代码,可直接在代码中进行修改图片文字的大小颜色等等。 以下是对应图像图标的代码

图片可以在左侧的选 项中自行进行挑选; 也可以添加自己的图片, 只要将图片放到对应的 文件夹之下在刷新就可 以,但不建议放分辨率 过高图片可能会出现超 出界面的等错误。 (二)、在res/layout目录下新建.xml文件,由于计算器的按钮很多,要在xml界面中添加排版: xml代码首末的格式较为自由可以直接在界面中拖动图标位置以及修改大小,而其他layout则更会自动排列,各有优劣。 (三)、在src/weibo.test.ui目录下新建.java文件,计算器的按钮

android开发计算器设计开发报告

Xx大学计算机与电子 信息学院《移动编程 技术》安卓程序开发 设计报告---简单计算 器 《安卓开发》程序设计报告 题目简单计算器开发 专业(班级) 网工111班 姓名张波波 学号952937885(qq) 指导教师赵(老师) 日期2014.5.7

目录 一、设计说明: (3) 1.设计内容:Android简单应用程序开发,简单计算器。 (3) 2程序说明: (3) 二、开发环境: (3) 三、概要设计: (3) 3.1 系统的总体 (3) 四、程序流程和系统功能设计 (4) 4.1程序流程设计 (4) 4.2.系统功能设计 (5) 4.3基于Android平台系统具体设计 (6) 4.3.1 总体模块详细设计 (6) 4.3.2 输入模块详细设计 (6) 4.3.3 显示模块详细设计 (7) 4.3.4 计算模块详细设计 (7) 五、计算器系统实现 (8) 5.1 Android应用程序构成 (8) 六、截图说明 (9) 1、图标 (9) 2界面 (10) 3运算界面 (11) 4错误输入 (11) 5设计平台界面 (12) 6签名导出apk (12) 七、总结 (13)

课程设计任务书 一、设计说明: 1.设计内容:Android简单应用程序开发,简单计算器。 2程序说明: 1、计算器界面友好,方便使用。 2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。 3、能够判断用户输入运算数是否正确。 4、 4、支持小数运算。 5、具有退格功能,能够删除最后一个输入,ce。 6、具有清除功能,删除所有,c。 7、具有结果存储功能,能够显示存储器状态,支持触屏手机。 8、支持最低版本2.0,最高版本4.4。开发时为4.2 二、开发环境: 开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。 三、概要设计: 3.1 系统的总体 整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最

视频播放器课程设计报告

课程设计实验报告 题目:基于andriod平台的视频播放器设计院(系):电子与信息工程系 专业: 团队成员: : : 辅导老师: 2011 年 12 月 29 日

摘要 一.Andriod平台 1.谷歌与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。 2.Android 是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是”应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验 二.Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程

语言起源于

Sun公司的一个叫“Green”的项目,目的是开发嵌入家用电器的分布式系统,使电器更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java 1.2版本是一个重要的版本,基于该版本,Sun将Java技术分成J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 三.Eclipse Eclipse的基础是富客户机平台(Rich Client Platform,即RCP)。 RCP包括下列组件: ?核心平台(启动Eclipse,运行插件) ?标准集束框架(OSGi:Open Service Gateway initiative) ?可移植构件工具包(SWT:Eclipse’s Standard Widget Toolkit) ? JFace(文件缓冲,文本处理,文本编辑器) Eclipse采用的技术是IBM公司开发的SWT,这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。

android开发——简易计算器的设计报告

简易计算机的设计 摘要:Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行。 一、实训目的 1、了解Android系统,学会Android开发环境的搭建。 2、了解E clipse,学会用E clipse和Java 开发一个Android程序。 3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。 4、巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。 二、实训任务 1、Activity的相关知识 简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。 (1)Activity的相关方法及相关函数:void onCreate(Bundle)首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息);void onStart() 说明了将要显示给用户的活动;void onRestart()将处于停止状态的活动重新显示给用户;void onResume()用户可以开始与活动进行交互时

基于Android的视频播放器的设计与实现

基于Android的视频播放器的设计与实现

基于Android的视频播放器的设计与实现 中文摘要 如今,随着基于Android操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。因此,设计一个基于android手机的多功能播放器,具有重要的实际意义。 本次毕业设计主要使用JDK + Eclipse + Android-SDK-Windows工具进行开发,使用的编程语言是Java语言。该程序主要由4个不同Activity来实现,每个Activity实现相应的功能模块,能够有效满足Android手机用户在视频播放中的常见需求。 本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。对程序主要的Activity都进行了详细的介绍和分析,包括对其使用的布局文件的具体介绍,以及各个控件的作用。在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了大量截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。所开发的程序界面比较友好,操作相对容易,达到设计要求。 关键词:安卓;视频播放;Activity;Mediaplayer

The Design and Implementation of Video Player Based on Android ABSTRACT Now, with the wide application of smart phone based on the Android operating system, video player has become the essential application of smart phone. Most of consumers urgently require a personalized video player which is close to user and facilitate user. Therefore, the design of a multifunctional player based on android mobile phones has an important practical significance. The project design is developed by using JDK, Eclipse, and Android-SDK-Windows tools. The programming language is Java. The program consists of four different Activities and each Activity achieves the corresponding functional modules which can effectively satisfy the common requirements for playing video on Android mobile phones. This paper introduced the design ideas, design scheme, system architecture and project engineering structures of video player. The feasibility and requirements of system were analyzed in detail. The system function and each module were explained. The main Activity of the program are described and analyzed in detail including the using layout file, as well as the role of each control. Finally, I made the test for the program including the functions of each implemented modules. In order to observe whether the program should function properly and find the problems that may exist in the program, many screenshots were saved to demonstrate the test results. The developed program has a friendly interface and can be operated relatively easy, which has achieved the design requirement. KEY WORDS: Android; Video Play; Activity; Mediaplayer

安卓计算器开发实验报告

嵌入式WebOS应用开发 实验报告 实验名称:使用An droid Developer SDK开发应用程序 专业:_________________________ 姓名:__________________________________ 班级:_______________________________ 学号:______________________________ 一、作品的运行环境及安卓SDK基础操作 SDK An droid Developer 是一款在windows系统上运行的针对 An droid应用开发的谷歌官方软件(需要JAVA环境支持)。 1、导入工程 2、建立虚拟机 在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB因为部分程序如果调用资源过大会导致虚拟机无法运行。 3、虚拟机界面 二、作品介绍 我的应用是一个计算器。能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。

加应用图标 1.首先在我的桌面上添加你应 用的图标以及文字,双击图标后 项中自行进行挑选; 也可以添加自己的图片, 只要将图片放到对应的 文件夹之下在刷新就可 以,但不建议放分辨率 过高图片可能会出现超 出界面的等错误。 要在xml 界面中添加排版: xml 代码首末的 格式较为自由可以直接在 界面中拖动图标位置以及修改大小,而其他layout 则更会自动排列, 各有优劣。 三、 编程以及运行调试 (一)、在MyDesktop 主界面中添 fin^_ok,prig 世IF it launchiWipng 32E img'O.png jdE im^il.png] 3E img?.pHg 血 imql.pngi 32E img4.png 血 im^S.pngi Tn? imgg.png JJL -mgT.pngj ..1. imy^.png ..1. uiHiprxg 就可以看见对应的代码, 可直接 在代码中进行修改图片文字的 大小颜色等等。 以下是对应图像图标的代码 图片可以在左侧的选 (二)、在 res/layout 目录下新建.xml 文件,由于计算器的按钮很多, TIF charfrc 起 ch^tfrorn_bg_ipTW5&d !S'.pflg ~l <+i?,kbnif^M 口 .股 ch?kbojco#f bsckgrourid^na SE chfkb rn (」]n.hewlcgin 口unci 岱n 评 弧 tlwr^na TTF de^ r o 1 .pnq

android简单计算器课程设计

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

基于嵌入式技术的视频媒体播放器的设计

本科毕业论文 题目:基于嵌入式技术的 视频媒体播放器的设计 学院: 班级: 姓名:王帅 指导教师:李怀繁职称:副教授 完成日期:2014 年6月 5 日

基于嵌入式技术的视频媒体播放器的设计 摘要:随着用户需求的日趋多样化,单一功能的视频媒体播放器功能已经渐渐强大起来。嵌入式设备以其强大的功能、低廉的价格等优点成为了开发视频媒体播放器首选设备。本文设计的播放器将视频媒体技术与嵌入式技术完美结合起来,不仅实现了音视频的播放,而且采用mini2440开发板,搭载Linux内核,使其具有强大的潜力,可开发实现多种功能,满足用户多变的需求。该视频媒体播放器支持多种格式的音、视频文件的播放,可实现媒体文件播放的暂停、音量调节等播放功能,并且由于其应用于Linux 内核之上,比其他播放器有更广阔的发展空间。 关键词:mini2440开发板;视频媒体播放器;Linux内核;嵌入式技术;

目录 1.引言 (1) 1.1 研究背景与目的 (1) 1.2 研究方法 (2) 2. 系统分析 (3) 2.1 概要分析 (3) 2.2 开发环境 (3) 3. 系统设计 (4) 3.1 构建基本环境 (4) 3.2 配置相关服务器 (5) 3.3 移植应用程序 (6) 4. 系统实现 (8) 4.1 运行流程 (8) 5 系统测试 (9) 5.1 测试流程 (9) 5.2 功能测试 (10) 结论 (13) 参考文献 (14) 附录 (16)

1引言 1.1 研究背景与目的 在现代信息化社会,视频媒体在信息产业和媒体技术的发展和在人类社会的应用等方面产生的影响和作用越来越明显,且越来越重要[1]。视频媒体技术的发展和应用,使得文化教育、科技、娱乐等诸多行业的飞速发展与相互渗透,同时,正在逐步改变着整个人类社会的生活方式与工作结构。不言而喻,媒体产业的产生和发展,不仅会引发计算机工业的革命,而且也将会推动人类社会发生巨大变革。 嵌入式操作系统是计算机技术发展到一定阶段的中间产物,它无法与功能全面的计算机操作系统相比,但却凭借自身体积小、功能专用、稳定性高、价格低廉等优点正迅猛发展。目前,具有知识产权保护的嵌入式系统在中国逐渐形成了一个热门领域,嵌入式系统的稳步发展使嵌入式软件的研发的重要性与日俱增。优秀的平台需要配合相应的应用才能充分发挥最大潜力,所以,视频媒体技术的嵌入式发展已成为视频媒体技术发展的必然。 近年来,随着嵌入式技术的飞速发展,越来越多的企业开始开发嵌入式软件,并取得了一定的成果,开发了许多产品,其中包括了一些类型的嵌入式视频播放器。但是却没有一款产品能够垄断嵌入式视频播放器的市场。究其原因,现今的视频媒体播放器大部分是由计算机上通用的媒体播放器移植而来的,忽视了嵌入式设备的特殊性,其播放器在实用功能、视频显示和操作方便上不能媲美于计算机,而且也没有发挥嵌入式系统的潜力[2]。 在世界的其他国家,对视频媒体技术的研究和媒体产业的发展非常重视,投入了大量的人力、物力,开发出了一些体积小、易用性好的媒体播放器,并且产品不断更新换代,发展上升空间巨大,功能日趋完善。 随着计算机的发展和影视行业以及数据处理等技术的日趋成熟,为视频媒体技术的起步奠定了坚实的基础,并为各个行业的相互渗透与大融合提供了可靠保证。同时,视频媒体是人类可直接接受的最丰富和最全面的信息来源,对于推动当今社会的发展和文明的进步起着重要作用,视频媒体技术的需求与日俱增。 在日益信息化的现代社会中,计算机和网络已经渗透了我们日常生活的方方面面。作为一个现实,一个新的嵌入式设备中各种应用的数量正在稳步上升,人们可以有各种嵌入式设备,甚至一个人有多种,如手机,MP3或智能电器[3],嵌入式技术正在飞速地发展。 将嵌入式技术与视频媒体技术的结合,将使得二者的功能更加强大。一种具有体

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

课程设计报告 课程名称《网络程序设计》课程设计 课题名称网络注册登录器 专业网络工程 班级1102 学号01 姓名刘龙飞 指导教师李远辉 2014年9 月12 日

湖南工程学院 课程设计任务书 课程名称网络程序设计 课题网络注册登录器 专业班级网络工程1102 学生姓名刘龙飞 学号01 指导老师李远辉 审批 任务书下达日期2014 年9 月1 日 任务完成日期2014 年9 月12 日

一、课程设计概述 1.1 课程设计题目 一个基于Android平台的网络程序实现注册,登录 1.2 课程设计要求 (1)能正确连接外部网络 (2) 能实现注册 (3) 能实现正确登录 (4) 能够在手机上使用该系统 二、硬件平台搭建 2.1 JDK安装 JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为https://www.doczj.com/doc/2819156353.html,/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.3Eclipse安装以及ADT工具的安装 下载Eclipse安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。 Android为Eclipse定制了一个插件,即Android Develpoment Tools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。ADT扩展了

Android计算器设计报告

《Android课程实践》报告 课设题目Android计算器程序设计 学院 班级 学生姓名 学号 序号 指导教师 时间2019.11.21

一、设计分析 1.1 实现功能 本次实验进行设计可保存计算过程的计算器,实现功能如下: 1.仿照真实的计算器实现其功能。 2.在左上方的文本框中显示当前的计算过程,在右边的文本区中显示以往的计算过程。 3.单击“保存”按钮可以将文本区中的全部计算过程保存到文件;单击“复制”按钮可以将文本区中选中的文本复制到剪贴本;单击“清除”按钮可以清除文本区的全部内容。 1.2 设计思路 考虑到计算器的美观和易用性,可以把计算器做在 Android 端,Android 系统的 App 的底层功能由 Java 实现,所有工作主要分为两部分: 1.设计计算器界面 (activity_main.xml) 计算器界面用xml文件编写,包括手机竖屏和横屏两个布局文件: 竖屏:activity_main.xml 布局为 portrait 横屏:activity_main_land.xml 布局为 landscape 竖屏模式可以完成基本的四则运算,不涉及科学计算 横屏模式除了完成基本的四则运算,还添加了科学运算 2.编写计算接口 (ScienceCalculator.java) ScienceCalculator 可以完成包含科学运算函数的 math,先实现可以完成基本四则运算的 BaseCalculator,在此基础上,实现 ScienceCalculator。 运算的思路是先通过 ScienceCalculator 完成math中需要科学计算函 数的部分,再用这些部分计算的结果替换原 math 中的这些部分,使包含科学计算函数的 math 转变成可用 BaseCalculator 计算的 math。

基于安卓的计算器的设计与实现

安卓应用程序设计 ——简易计算器的实现院(系)名称 专业名称 学生姓名 学生学号 课程名称 2016年6月日

1.系统需求分析 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android 的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。基于android的计算器的设计,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。 2.系统概要设计 2.1计算器功能概要设计 根据需求,符合用户的实际要求,系统应实现以下功能:计算器界面友好,方便使用,,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有清除功能。 图2.1系统功能图 整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。 输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及 响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。 显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结

视频播放器设计分析

视频播放器设计 1 需求分析 由于计算机的普及,极大地改变了人们的生活。随之带来了开发各种软件的需求。家用型计算机主要用于家用软件、学习软件、游戏软件和多媒体和多媒体软件,以及播放CD、VCD、DVD、MP3等多媒体信息。然而多媒体播放器的开发仍然不能满 足人们的需求,多媒体文件格式多样,但却没有一款播放器能够满足所有格式的解码。人们渴望解码能力更强大,功能更完备的多媒体播放器。 “多媒体”是一种新型的信息处理与传播技术。有人认为它是信息及其传输媒介方面的一场根本革命。人们对新技术的渴望和欢迎、新奇感和占有欲、宣传热情 和赞美态度,是发自内心的。特别是计算机多媒体技术的功能,令人大开眼界,惊 叹不已。它在商业、信息检索、文化娱乐和教育等方面的应用效果明显,前景广阔。 由多媒体播放器的开发现状看来,并没有哪一款播放器能适应所有多媒体文件 的解读,随着视频、音频的迅猛发展,媒体文件的格式层出不穷,由过往美国在线(AOL)公司的Nullsoft部门开发的Winamp独占鳌头,到Real Networks公司的Real Player和微软公司的Windows M edia Player风靡全球,再到如今播放器开发的百花 齐放的竞争时代,多媒体播放器的开发经历了许多风浪和变化,但是,仍然没有出 现全能的播放器,始终没有跨越编码格式的局限,随着多媒体技术的不断发展,人 们对多媒体软件的要求也不断高涨,所以对多媒体软件的开发也成为当今计算机开 发的重要课题。目前的音频、视频格式繁多,研制格式覆盖面广的多媒体播放器前 景非常广泛。 随着计算机、家电、通信等技术的不断发展,多媒体技术有着广泛的开发前景,尤其是多媒体播放器的开发,开发格式覆盖面更广,兼容性更好,功能更完备的播 放器势在必行。本文主要采用C++ Builder2009作为开发工具,设计并实现一个多 媒体播放器。可播放MP3,AVI,WMV,WMA,RM,RMVB,SWF等多种格式的多媒体文件,并且能够控制播放,暂停,停止,快进,后退,音量控制的调节,选择上一曲,选择下一曲,图像的显示,文件的计时,列表文件的添减操作等多种播放控制功能,界面简明,操作简单。 2 系统总体设计 2.1DirectShow概述 DirectShow是一种通过自定义或内置的大量的Filter(过滤器)来处理多媒体 数据的体系结构。这些Filter大致分三类:Source Filter(源过滤器)、Transform Filter(转换过滤器)、Render Filter(呈现过滤器)。源过滤器主要负责获取数据,数据源可以是文件、网络、计算机采集卡或数字摄像机里的,然后数据向下传输到Transform Filter,它主要负责数据的格式转换,然后继续向下传输到Render Filter,它主要负责数据的最终去向,将数据送给显卡声卡进行播放或输出变成文 件存储起来,见图2-1。

android简单计算器代码

package hua.xing.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class CalculatordemoActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button but0 = null; private Button but1 = null; private Button but2 = null; private Button but3 = null; private Button but4 = null; private Button but5 = null; private Button but6 = null; private Button but7 = null; private Button but8 = null; private Button but9 = null; private Button dim = null; private Button add = null; private Button sub = null; private Button mult = null; private Button div = null; private Button equ = null; private EditText etext = null; private double value = 0;

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