本文在研究当前智能终端发展背景和手机银行软件国内外发展现状的基础上,使用Java语言并结合当前主流的Android手机操作系统和客户端手机银行模式,进行了基于Android客户端的手机银行软件设计。本项目实现的功能主要有缴纳党费、缴纳手机费、网点预约、零钱通、理财通、查看天气信息、注册、登录、转账、贷款、还款、修改密码、账户明细、修改个人信息、银行卡管理。其中,本系统通过外网实现了服务器和客户端的交互,用到okHttp网络访问、json数据解析、音视频播放等。
项目效果:
https://download.csdn.net/download/qq_57417926/89681348?spm=1001.2014.3001.5503
-
网点预约
系统先访问网络,获取网点信息,在用户提交申请后,系统向服务器发送请求,让服务器更改数据库。在预约后,用户可点击查看预约记录。同时,可以选择预约记录来取消记录。
-
显示天气
当用户选择地区后,系统会发送请求,查询对应地区的天气状况并显示出来。
-
零钱通
用户需要先开通零钱通,在开通零钱通时,要输入卡号和密码,并通过添加超链接的形式,可以让用户阅读《零钱通使用协议》,在勾选“已阅读《零钱通使用协议》”后,即可开通零钱通账户。此时,用户可以转入和转出零钱,系统会将零钱通的余额和存入日期存储在数据库中,当用户每次登录系统时,后台会自动查询零钱通的余额和存入日期来计算利息,并修改存入日期和余额。
//设置需要添加超链接的文字,并添加跳转的链接
SpannableString sp=new SpannableString("《零钱通使用协议》");
sp.setSpan(new URLSpan("http://192.168.43.50:8080/TestServer/index.jsp"),0,9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//将超链接添加到控件上
t.setText(sp);
//添加跳转事件
t.setMovementMethod(LinkMovementMethod.getInstance());
-
缴纳党费
进入首页点击“缴纳党费”即可进入如下图3-5、3-6所示界面,该界面在选择完地区之后,运用gson数据库解析json数据,在固定金额的要求下,点击“支付”按钮即可缴费成功。但在一个月内一个账户只能缴纳一次党费,这个功能是通过在数据库中对应账户实现的,如果该账户支付次数超过了一次,就把“支付”按钮设置成INVISIBLE。用户还可以选择自己账户下的支付卡号,每个登录账号下可以添加若干个银行卡,这部分内容是在首页“一键绑卡”的功能中实现的,具体是在数据库中对应账户中添加银行卡即可。
-
理财通
系统会通过handler+thread异步处理方式,从服务器上下载各类保险详细信息,当用户选择短期理财、中期精选、长期投资时,系统会根据用户选择产品类型,动态显示该类型下的保险信息,在用户选择好保险类型后,就可以浏览该类型的保险信息并点击购买。此外该页面上方还可以播放视频,可以让人们对保险有一定的了解,该视频是通过MediaPlayer+SurfaceView方式进行视频显示。
-
设置头像
用户登陆后,可以在账户信息——个人资料——头像处设置自己的头像,使用的是DownloadTask异步处理方式实现的头像设置,用户点击头像跳转到头像下载页面,点击下载图片,可以查看到服务器上所有的图片,用户可以选择一张图片作为头像。
-
视频播放
点击播放视频可以进行播放,点击暂停视频暂停,点击继续视频继续播放,点击停止视频自动跳到视频开始。
(1)创建播放器对象并设置音频/视频数据源
player=MediaPlayer.create(this, R.raw.baoxian);
(2)创建为MediaPlayer对象添加完成事件监听器
public void onCompletion(MediaPlayer mp) {
//重新开始播放
player.start();
}
});
(3)设置播放、暂停、停止按钮的事件监听
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final SurfaceHolder holder = surfaceView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
player.setDisplay(holder);
player.start();//播放视频
if (isPause) {
pause.setText("暂停");
isPause = false;
}
}
});
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(player.isPlaying() && !isPause){
player.pause();
isPause=true;
((Button) v).setText("继续");
}else
{
player.start();
((Button) v).setText("暂停");
isPause=false;
}
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(player != null){
player.stop();
player.prepare(); }
});
-
按键提示音
为主页面的首页、账户明细、账户信息三个按钮添加按键提示音。使用的是Soundpool技术。
(1)获取组件
btn_a = findViewById(R.id.btn_a);
btn_d = findViewById(R.id.btn_d);
btn_z = findViewById(R.id.btn_z);
(2)加载音频
private void soundPoolInit() {
//设置最多可容纳5个音频流,音频的品质为5
mSoundPool = new SoundPool(5, AudioManager.STREAM_SYSTEM, 5);
soundID.put(1, mSoundPool.load(this, R.raw.doo, 1));
//load加载音频文件,通过指定的资源id加载音频文件
}
(3)为按钮添加事件监听
public void onClick(View v) {
switch (v.getId()) {//获取按钮id
case R.id.btn_a: {
//播放指定音频
mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);
Intent intent = getIntent();
final String s = intent.getStringExtra("account");
final String s1 = intent.getStringExtra("pwd");
Intent i = new Intent(LendActivity.this, AccountActivity.class);
i.putExtra("account", s);
i.putExtra("pwd", s1);
startActivity(i);
break;
}
case R.id.btn_d: {
mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);
Intent i = new Intent(LendActivity.this, LendActivity.class);
Intent intent = getIntent();
final String s = intent.getStringExtra("account");
final String s1 = intent.getStringExtra("pwd");
i.putExtra("account", s);
i.putExtra("pwd", s1);
startActivity(i);
break;
}
case R.id.btn_z: {
mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);
Intent i = new Intent(LendActivity.this, DetailActivity.class);
Intent intent = getIntent();
final String s = intent.getStringExtra("account");
final String s1 = intent.getStringExtra("pwd");
i.putExtra("account", s);
i.putExtra("pwd", s1);
startActivity(i);
break;
}
default:break;
}
}