基于安卓的校园信息助手系统设计(Eclipse开发)

news2024/12/23 23:48:08

使用说明
1.1 软件的安装
将.api文件安装到iphone手机上,点击图标即可使用。
2.2 软件的使用
2.2.1 初始界面
软件安装好之后,在手机上显示初始界面。
2.2.2 程序主界面
主要有【课程表模块】、【新闻模块】、【学校概况模块】、【黄页模块】、【考生问答】、【班车模块】、【招生专栏模块】、【校园风采模块】、【校历模块】、【空闲教室】。如图1,图2所示:
1)点击“课程表”,即可进入查看课表信息界面。通过本功能,可以查看当前课表信息。通过底部选择相应的项,即可查看我的课表和编辑课表,在我的课表页面这可以通过滚动选项卡选责当前所要显示的课表。在编辑课表页面可以进行手势右划进行课表删除。如下图所示:
点击我的课表右侧菜单按钮,出现菜单选项“课表设置下载”,“页面刷新”,“背景图片设定”,“返回“,通过点击课表设置现在按钮进入课表下载页面,读取远程数据的课表信息,根据你的学号,和身份证后六位进行你的课表下载。刷新页面按钮,是为了防止你所更改页面的信息不能同步,起到刷新的效果。通过点击背景图片设定,进入背景图片设定状态,点击默认背景可以直接恢复到本系统自带的背景状态。点击“从相册中选择”可进入本机相册中进行选择,设置你想要的背景图片。点击“alpha”恢复显示课表信息默认透明度设置,滑动第一个滑竿,设置有课表表内容的透明度设置,滑动第二个滑竿,设置无课表内容的透明度设置,效果如图:

课表模块支持横平显示,如图
2)点击“新闻”,即可查看院的最新新闻列表,点击新闻标题回跳转因为详细信息页面。具体结果如下图所示举例:
3)点击“学校概况”,即可查看学校简介如图所示:

4)点击“黄页”,即可查看学校所有部门的办公电话,点击既可拨出,如图所示:
5)点击“考生问答”,可以浏览考生问答信息列表,点击之后可以进入详细信息页面内容如下图
6)点击“班车”,可以阅览班车信息,上部选项卡选择星期几,下部分选项卡选择工作日还是休息日,点击具体班车站点信息会显示站点在地图上的具体位置,页面内容如图所示:
7)点击“招生专栏”,可以浏览招生专栏信息列表,点击之后可以进入详细信息页面内容如下图:
8)点击“校园风采”,可以浏览校园风采信息列表,点击之后可以进入详细信息页面内容如下
9)点击“校历”,可以浏览校历信息,拖动底部滚动条进行切换月份,点击之后可以进入详细信息页面内容如下图:

package com.example.IHXCI;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.mapapi.map.MyLocationOverlay.LocationMode;
import com.baidu.mapapi.map.PopupClickListener;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.platform.comapi.basestruct.GeoPoint;

public class Baiduditu extends Activity {
	public static final String strKey = "Ng91TYw8mnDnUrgVMil8nUYG";
//	kzLfrTANnchHWUEMEUC5v8ZL
//	6a099fc3b1a227b70e0d6a924c9937a7
	BMapManager mBMapMan = null;
	MapView mMapView = null;
	Button wodeweizhi;
	Button sousuo;
	Button gongjiaoxianlu;
	Button tuichu;
	Intent intent;
	private MyLocationOverlay mLocationOverlay = null;
	locationOverlay myLocationOverlay = null;
	// private LocationListener locationListener;
	LocationClient mLocClient;
	MapController mMapController;
	LocationData locData = null;
	GeoPoint pt;
	public MyLocationListenner myListener = new MyLocationListenner();
	// 弹出泡泡图层
	private PopupOverlay pop = null;// 弹出泡泡图层,浏览节点时使用
	private TextView popupText = null;// 泡泡view
	private View viewCache = null;

	private enum E_BUTTON_TYPE {
		LOC, COMPASS, FOLLOW
	}

	private E_BUTTON_TYPE mCurBtnType;
	MKSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用
	public static String weizhixinxi;

	// --------------------------------------------------------------------------------------
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mBMapMan = new BMapManager(getApplication());
		mBMapMan.init(strKey, new MKGeneralListener() {

			// 授权错误的时候调用的回调函数
			@Override
			public void onGetPermissionState(int iError) {
				if (iError == MKEvent.ERROR_PERMISSION_DENIED) {
					Toast.makeText(getApplication(), "API Key错误,请检查!",
							Toast.LENGTH_LONG).show();
				}
			}

			// 一些网络状态的错误处理回调函数
			@Override
			public void onGetNetworkState(int iError) {
				if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
					Toast.makeText(getApplication(), "您的网络出错啦!",
							Toast.LENGTH_LONG).show();
				}
			}
		});
		// 注意:请在试用setContentView前初始化BMapManager对象,否则会报错
		setContentView(R.layout.activity_baiduditu);
		intent = getIntent();
		mMapView = (MapView) findViewById(R.id.bmapsView);
		// 隐藏自带的地图缩放控件
		// mMapView.setBuiltInZoomControls(false);
		wodeweizhi = (Button) findViewById(R.id.wdwz);
		sousuo = (Button) findViewById(R.id.sousuo);
		gongjiaoxianlu = (Button) findViewById(R.id.gongjiaoxianlu);
		tuichu = (Button) findViewById(R.id.tuichu);
		mCurBtnType = E_BUTTON_TYPE.LOC;
		mMapView.setBuiltInZoomControls(true);
		// 设置启用内置的缩放控件

		// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
		GeoPoint point = new GeoPoint((int) (45.882615 * 1E6),
				(int) (126.513214 * 1E6));
		// 华夏坐标 -->126.513214,45.882615
		// 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
		mMapController = mMapView.getController();
		mMapController.setCenter(point);// 设置地图中心点
		mMapController.setZoom(18);// 设置地图zoom级别
		mMapView.getController().enableClick(true);
		// 显示交通地图
		// mMapView.setTraffic(true);
		// 显示卫星地图
		// mMapView.setSatellite(true);

		// 创建 弹出泡泡图层
		createPaopao();
		mLocClient = new LocationClient(Baiduditu.this);
		locData = new LocationData();
		mLocClient.registerLocationListener(myListener);
		mLocClient.setAK(strKey);
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true);// 打开gps
		option.setCoorType("bd09ll"); // 设置坐标类型
		option.setAddrType("all");// 接受所有信息以便反解析坐标的地理信息
		option.setScanSpan(1000);
		mLocClient.setLocOption(option);
		// 定位图层初始化
		myLocationOverlay = new locationOverlay(mMapView);
		// 设置定位数据
		myLocationOverlay.setData(locData);
		// 添加定位图层
		mMapView.getOverlays().add(myLocationOverlay);
		myLocationOverlay.enableCompass();
		myLocationOverlay.setMarker(getResources().getDrawable(
				R.drawable.icon_geo));
		wodeweizhi.setOnClickListener(new WeizhiOnClick());
		tuichu.setOnClickListener(new TuichuOnClick());
		// 其他按钮的监听事件 等待处理
	}

	// ------------------------------------------------------------------------------
	/**
	 * 定位按钮监听事件
	 */
	class WeizhiOnClick implements OnClickListener {

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			// 修改定位数据后刷新图层生效

			mLocClient.start();

			// 修改定位数据后刷新图层生效
			mMapView.refresh();
		}

	}

	/**
	 * 定位按钮监听事件
	 */
	class TuichuOnClick implements OnClickListener {

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			intent.setClass(Baiduditu.this, Main.class);
			Baiduditu.this.startActivity(intent);
			finish();
		}
	}

	/**
	 * 创建弹出泡泡图层
	 */
	public void createPaopao() {
		viewCache = getLayoutInflater()
				.inflate(R.layout.custom_text_view, null);
		popupText = (TextView) viewCache.findViewById(R.id.textcache);
		// 泡泡点击响应回调
		PopupClickListener popListener = new PopupClickListener() {
			@Override
			public void onClickedPopup(int index) {
				Log.v("click", "clickapoapo");
				pop.hidePop();
			}
		};
		pop = new PopupOverlay(mMapView, popListener);
		MyLocationMapView.pop = pop;

	}

	/**
	 * 定位SDK监听函数
	 */
	public class MyLocationListenner implements BDLocationListener {

		@Override
		public void onReceiveLocation(BDLocation location) {
			if (location == null)
				return;

			locData.latitude = location.getLatitude();
			locData.longitude = location.getLongitude();
			weizhixinxi = location.getAddrStr();
			System.out.println(weizhixinxi);
			// 如果不显示定位精度圈,将accuracy赋值为0即可
			locData.accuracy = location.getRadius();
			locData.direction = location.getDerect();
			// 更新定位数据
			myLocationOverlay.setData(locData);
			// 更新图层数据执行刷新后生效
			mMapView.refresh();
			// 是手动触发请求或首次定位时,移动到定位点

			// 移动地图到定位点
			Log.d("LocationOverlay", "receive location, animate to it");
			mMapController.animateTo(new GeoPoint(
					(int) (locData.latitude * 1e6),
					(int) (locData.longitude * 1e6)));
			myLocationOverlay.setLocationMode(LocationMode.FOLLOWING);

			mCurBtnType = E_BUTTON_TYPE.FOLLOW;
			mLocClient.stop();
			System.out.println(locData.latitude + "+" + locData.longitude);

		}

		@Override
		public void onReceivePoi(BDLocation arg0) {
			// TODO Auto-generated method stub
			if (arg0 == null) {
				return;
			}
		}

	}

	// 继承MyLocationOverlay重写dispatchTap实现点击处理
	public class locationOverlay extends MyLocationOverlay {

		public locationOverlay(MapView mapView) {
			super(mapView);
			// TODO Auto-generated constructor stub
		}

		@Override
		protected boolean dispatchTap() {
			// TODO Auto-generated method stub
			// 处理点击事件,弹出泡泡
			popupText.setBackgroundResource(R.drawable.popup);
			popupText.setText(weizhixinxi);
			pop.showPopup(BMapUtil.getBitmapFromView(popupText), new GeoPoint(
					(int) (locData.latitude * 1e6),
					(int) (locData.longitude * 1e6)), 8);
			return true;
		}

	}

	/**
	 * 修改位置图标
	 * 
	 * @param marker
	 */
	public void modifyLocationOverlayIcon(Drawable marker) {
		// 当传入marker为null时,使用默认图标绘制
		myLocationOverlay.setMarker(marker);
		// 修改图层,需要刷新MapView生效
		mMapView.refresh();
	}

	@Override
	protected void onDestroy() {
		mMapView.destroy();
		if (mBMapMan != null) {
			mBMapMan.destroy();
			mBMapMan = null;
		}
		if (mLocClient != null) {
			mLocClient.start();
		}
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		mMapView.onPause();
		if (mBMapMan != null) {
			mBMapMan.stop();
		}
		super.onPause();
	}

	@Override
	protected void onResume() {
		mMapView.onResume();
		if (mBMapMan != null) {
			mBMapMan.start();
		}
		super.onResume();
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			intent.setClass(Baiduditu.this, Main.class);
			Baiduditu.this.startActivity(intent);
			finish();
		}
		return false;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.baiduditu, menu);
		return true;
	}
}

/**
 * 继承MapView重写onTouchEvent实现泡泡处理操作
 * 
 * @author hejin
 * 
 */
class MyLocationMapView extends MapView {
	static PopupOverlay pop = null;// 弹出泡泡图层,点击图标使用

	public MyLocationMapView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public MyLocationMapView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public MyLocationMapView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		System.out.println("------------+++++++++++++---------------");
		System.out.println("------------+++++++++++++---------------");
		System.out.println("------------+++++++++++++---------------");
		if (!super.onTouchEvent(event)) {
			// 消隐泡泡

			if (pop != null && event.getAction() == MotionEvent.ACTION_UP)
				pop.hidePop();
		}
		return true;
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员的刻板印象,都是真的吗?

自从当了程序员,身边人对于我的职业一直好奇不断,刚好看到网上大家的刻板印象,整理几个最常见的问题,实事求是地解答一下! “青春饭、35岁危机、会修电脑、年薪10w、还有戴眼镜、格子衫、发际线高” 这些大家都在网上见…

8-事件组或标志

1-事件位(标志) 事件位用于指示事件是否发生。事件位通常称为事件标志。例如,一个应用程序可以: 定义一个标志,当为1时,表示消息已经接收并进行处理,当为0时,表示没有消息要处理。…

【王道计算机网络笔记】数据链路层-数据链路层的功能

文章目录数据链路层的研究思想数据链路层基本概念数据链路层功能概述为网络层提供服务链路管理帧定界、帧同步与透明传输(组帧)封装成帧透明传输组帧方法字符计数法字符填充法零比特填充法违规编码法流量控制停止-等待协议停等协议-无差错情况停等协议-有…

es搜索功能——DSL查询文档——DSL基本语法

1、查询的基本语法 # GET请求方式(固定写法) # indexName 要查询的索引库 # _search 查询语句的固定格式 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 2、无条件查询&#xff…

基础入门 - Spring Boot HelloWorld 第一节

需求&#xff1a;浏览器发送 /hello 请求&#xff0c;响应 Hello&#xff0c;Spring Boot 2 创建 maven 项目 boot-01-helloworld 如果想用Spring Boot来进行开发 需要在pom中创建父工程 <!-- Spring Boot 父工程 --> <parent> <groupId>org.springframew…

医疗健康产品展

​ 国内医疗健康行业的独角兽公司&#xff08;估值超10亿&#xff09; 下面&#xff0c;我们先看名列第二的企业&#xff1a; 微医&#xff08;平安医疗健康管理股份有限公司&#xff09; 基本信息 微医是国际领先的医疗健康科技平台&#xff0c;由廖杰远及其团队于2010年创建…

【GD32F427开发板试用】FreeRTOS移植工程

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;kings669669 前言 为了方便需要FreeRTOS&#xff0c;附上移植完毕的工程&#xff0c;方便大家后续的开发。 GitHub&#xff1a;https://githu…

【flutter电子木鱼】flutter 打包 android apk,记录配置签名的过程/调试的过程及flutter build apk放到手机上用。

目标&#xff1a; 目标通过这篇blog记录一下flutter打包android apk的过程&#xff0c;项目是参考以下链接的git仓库&#xff0c;然后自己重新创建了一个project。安卓应用市场的木鱼充斥着广告和付费体验极差&#xff0c;自己做一个还可以根据喜好做适应性调整&#xff0c;不…

图文版实现无头非循环单链表的增加和删除操作

hi&#xff0c;上一期已经给大家分享过代码版的链表的增删查改了&#xff0c;现在要对部分方法进行详细的介绍了 首先来说一说在任意位置的增加一个结点 废话不多说&#xff0c;开整 先来一幅图 加入已经有这样的链表了&#xff0c;现在要在 任意一个位置插入元素 我们先考…

zookeeper的安装与配置

1. 在root账户下创建zookeeper安装目录&#xff1a;mkdir /home/zookeeper 2. 进入zookeeper目录&#xff1a;cd /home/zookeeper 3. 通过wget命令下载zookeeper安装包&#xff1a;wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0…

以太网 VLAN(简介、MAC地址表与VLAN)

2.8.1 以太网 VLAN&#xff08;简介、MAC地址表与VLAN&#xff09; VLAN 虚拟局域网&#xff08;Virtual Local Area Network&#xff09;&#xff0c;通过VLAN划分不同的网络&#xff0c;能够有效提升网络的稳定性、缓解广播风暴带来的影响。 不同VLAN表示不同的虚拟局域网&am…

Unity与IOS⭐Unity接入IOS SDK的流程图

文章目录 🟥 整体思路🟧 如何复用SDK🟥 整体思路 1、先看一遍sdk的调用方法,将需要在unity中调用的方法记住给第二步使用。 2、新建一个Unity项目,写好去使用IOS SDK的方法。 3、导出Xcode工程,在Xcode中接入SDK。并根据SDK的文档,写好暴露给Unity的.h和.m文件。 …

[附源码]Python计算机毕业设计SSM焦作旅游网站(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计市场摊位管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

振弦采集模块的信号检测与分析计算

VM系列振弦采集模块的信号检测与分析计算 1、延时采样 如下图示&#xff0c; 振弦传感器钢弦起振后&#xff0c;信号强度在短时间内迅速达到最大&#xff0c;然后在钢弦张力及空气阻力作用下逐渐恢复静止。我们可将整个振动过程分为起振、调整、稳定、消失几个阶段&#xff0c…

第5章 R语言基础学习——金融资产收益率计算

5.1 收益率定义 5.1.1 常用收益率 5.1.2 红利收益率 数据中Adjusted一般就调整好了红利的收益率 5.1.3 超额收益率 与市场基准比较 5.2 股票类资产收益率计算 5.2.1 单个股票收益率计算 1. 从txt读取数据 2. 三种方法、计算股票百分比日收益率 3. 算术平均收益 4. 几何平…

电源常用LDO线性稳压IC大全!

LDO线性稳压IC FS7203 高输入电压&#xff1a;高达30V 输超低静态电流&#xff1a;0.8uA&#xff08;Typ&#xff09; 输出电压范围&#xff1a;1.5-12V 输出电压精度&#xff1a;2% 输出电流&#xff1a;IOUT150mA &#xff08; VIN4.8V&VOUT3.3V&#xff09; 短路电流&am…

桥接模式Bridge

1.意图&#xff1a;将抽象部分与其实现部分分离&#xff0c;使它们都可以独立地变化。 2.结构 Abstraction定义抽象类的接口&#xff0c;维护一个指向Implementor类型对象的指针&#xff1b; RefinedAbstraction扩充由Abstraction定义的接口&#xff1b; Implementor定义实现类…

ruoyi系统启动

系统概要 系统分为2部分前端vue —— vscode&#xff0c;后端spring-boot —— eclipse 系统依赖服务&#xff1a; 数据库——mysql 缓存——redis 启动顺序 mysql ——> redis ——> eclipse ——> vscode mysql 启动 windowQ 输入 service 打开服务管理 找到…

[附源码]Python计算机毕业设计Django实验室管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…