实 验 报 告学年学期:课程名称:移动互联网指导老师:学 院:计算机学院班 级:学 号:姓 名: 湖 南 工 业 大 学1 / 17 实 验 报 告 第 16 周实 验 名 称移动互联网技术实验性质必修实验类型综合实验课时8实验日期、时间12月20日实验消耗器材台式计算机实验仪器设备CPU core i5,硬盘 500G,Window xp,相关开发工具eclipse等实验目的通过学习基于Android的音乐播放器制作和实现基于Android的浏览器项目实际开发,学会了基于Android的移动互联网技术应用软件开发能力实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)一.引言1.编写目的从该阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描绘出软件的总的概貌本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。
2.项目背景Android包含操作系统、用户界面和应用程序——移动电话所使用的大部分软件,它还不存在任何以往影响移动产业创新发展的专有权障碍Google与手机联盟合作研发了Android,这个联盟由:中国移动、摩托罗拉、高通、宏达电和T-Mobile等30多家技术和无线应用的领军企业构成Google与运营商、设备生产商、开发商有关各方结成深层次的合作伙伴关系,希望建立标准化、开放式的移动电话软件平台,在移动行业内形成一个开放式的系统 作为谷歌企业战略的重要组成部分,Android将进一步实施“随时随地为每个人提供信息”这一企业宗旨不再让移动通讯依赖与设备平台出于这个宗旨,Android将补充,而不会代替谷歌长期以来奉行的移动发展战略:通过与各地的手机制造商、移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品 近两年来由于Android操作系统具有良好的开放性和平台的便捷性等特点,采用Android操作系统的手机越来越受到人们的亲睐同时Android操作系统在智能手机领域中所扮演的角色越来越重要3.项目说明设计基于android的手机浏览器客户端,通常一个浏览器包括前端界面、后端任务处理。
手机浏览器使用Eclipse环境进行设计实现手机微博的基本功能,如浏览网页,刷新网页,前进,后退等 4.项目目标该阶段目的在于明确系统的数据结构和软件结构,此外总体设计还将给出内部软件和外部系统部件之间的接口定义,各个软件模块的功能说明,数据结构的细节以及具体的装配要求实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)二.系统需求1.界面需求(1)简洁美观(2)易于操作(3)使用方便2.性能需求能够运行android 2.3的手机3.可行性需求Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构由下而上,其核心为嵌入式Linux2.6作业系统,向上搭配Google为Android开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序4.运行环境需求软件基本运行环境为智能手机android 操作系统 实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)三.功能需求(1)能够联网进行数据交换(2)能够获取网页数据并展示(3)能够对网页进行手动的刷新(4)能够前进到网页的下一页(5)能够后退到上一个访问的网页实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)四、实现程序界面代码: 主要代码:import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.view.Menu;import android.view.View;public class MainActivity extends Activity implements OnClickListener { private EditText et_path; private Button bt_entry; private WebView webview; private Button bt_left; private Button bt_right; private Button bt_refresh; private ProgressBar pd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_path = (EditText) findViewById(R.id.et_path); bt_entry = (Button) findViewById(R.id.bt_entry); bt_left = (Button) findViewById(R.id.bt_left); bt_right = (Button) findViewById(R.id.bt_right); bt_refresh = (Button) findViewById(R.id.bt_refresh); pd = (ProgressBar) findViewById(R.id.pd); webview = (WebView) findViewById(R.id.webview); bt_entry.setOnClickListener(this); bt_left.setOnClickListener(this); bt_right.setOnClickListener(this); bt_refresh.setOnClickListener(this); initSettings(); } private void initSettings() { webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { et_path.setText(url); return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { pd.setVisibility(View.VISIBLE); super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { pd.setVisibility(View.GONE); super.onPageFinished(view, url); addImageClickListener(webview); } }); webview.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { // TODO Auto-generated method stub super.onReceivedTitle(view, title); } @Override public void onProgressChanged(WebView view, int newProgress) { pd.setProgress(newProgress); super.onProgressChanged(view, newProgress); } }); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); webview.addJavascriptInterface(new AndroidNative(), "imagelistener"); } private void addImageClickListener(WebView webView) { webView.loadUrl("javascript:(function(){" + "var objs = document.getElementsByTagName(\"img\");" + "for(var i=0;i