`

Android试手——Dota铃声

阅读更多

 

前段时间在论坛上看到一个帖子,说了一个关于短信dota铃声的主意,正好自己在学习Android,就当试手做了一下,拿来分享一下,因为功力还非常浅,还希望大家多给提点意见,不管是从代码规范也好,实现方式也好。

程序主要功能是在短信来时播放超神(Holy Shit)的音效,并且在一定时间内如果继续有短信,则会继续播放Holy Shit Double Kill,Holy Shit Triple Kill。。。程序界面上就放了3个按钮,分别是用于启用,停止和设置间隔时间的,原来想稍微弄点图片美化下,后来也没弄


整个程序的逻辑是非常简单的,只是开启一个Service监听短信的事件,在短信到达后进行声音播放的处理,牵涉到的主要是Service,Broadcast,MediaPlayer,还有为了设置间隔时间还用了最简单的Preference。

为了让帖子不显得太简陋,贴上一些简单的代码,程序有3个类,分别是主程序Activity,后台跑的Service,以及设置用的PreferenceActivity

Activity中没有什么特别的地方,就是为3个Button设置了相应的事件

startButton.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
//				Toast.makeText(DotaBellActivity.this, "start", Toast.LENGTH_SHORT).show();
				Intent serviceIntent=new Intent();
				serviceIntent.setClass(DotaBellActivity.this, BellService.class);
				startService(serviceIntent);
			}
		});
        endButton.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
//				Toast.makeText(DotaBellActivity.this, "end", Toast.LENGTH_SHORT).show();
				//停止服务
				Intent serviceIntent=new Intent();
				serviceIntent.setClass(DotaBellActivity.this, BellService.class);
				stopService(serviceIntent);
			}
		});
        configButton.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
//				Toast.makeText(DotaBellActivity.this, "config", Toast.LENGTH_SHORT).show();
				Intent preferenceIntent=new Intent();
				preferenceIntent.setClass(DotaBellActivity.this, BellConfigPreference.class);
				startActivity(preferenceIntent);
			}
		});
 

Service中就是主要的一些处理部分,包含了存放铃声的Map和播放铃声等逻辑处理,第一次做的时候由于是采用MediaPlayer来播放,出现了用户多媒体声音关闭时候没有效果的情况,后来通过AudioManager来暂时打开多媒体声音,播放完再关闭解决了这一问题。

//播放音效
	private void playBell(Context context, int num) {
		//为防止用户当前模式关闭了media音效 先将media打开
		am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);//获取音量控制
		currentMediaStatus=am.getStreamVolume(AudioManager.STREAM_MUSIC);
		currentMediaMax=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
		am.setStreamVolume(AudioManager.STREAM_MUSIC, currentMediaMax, 0);
		//创建MediaPlayer 进行播放
		MediaPlayer mp = MediaPlayer.create(context, getBellResource());
		mp.setOnCompletionListener(new musicCompletionListener());
		mp.start();
	}
	
	private class musicCompletionListener implements OnCompletionListener {
		@Override
		public void onCompletion(MediaPlayer mp) {
			//播放结束释放mp资源
			mp.release();
			//恢复用户之前的media模式
			am.setStreamVolume(AudioManager.STREAM_MUSIC, currentMediaStatus, 0);
		}
	}
	//获取当前应该播放的铃声
	private int getBellResource() {
		//判断时间间隔(毫秒)
		int preferenceInterval;
		long interval;
		Date curTime = new Date(System.currentTimeMillis());
		interval=curTime.getTime()-lastSMSTime.getTime();
		lastSMSTime=curTime;
		preferenceInterval=getPreferenceInterval();
		if(interval<preferenceInterval*60*1000&&!justStart){
			currentBell++;
			if(currentBell>5){
				currentBell=5;
			}
		}else{
			currentBell=1;
		}
		justStart=false;
		return bellMap.get(currentBell);
	}
	//获取Preference设置
	private int getPreferenceInterval(){
		SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
		int interval=Integer.valueOf(settings.getString("interval_config", "5"));
//		Log.v("COOKIE", "interval: "+interval);
		return interval;
	}

Preference中就没有逻辑代码,都通过xml文件搞定了

 

附上工程以及apk文件(其实就在工程bin目录下),个人觉得像自己经常打游戏忘了回短信之类的。。猛的holyshit一下还是可以提提神的

 

同时也希望通过交流认识更多的朋友,不管是Android,java,C#,甚至前端等等,本人患严重拖延症,一个人就容易闲下来,所以希望更多的学习碰撞可以让自己一直保持热情,上述的小程序也当是给征友找伙伴投石问路,如果达人们愿意平时指导指导小弟,交流交流技术,可以短消息联系,大家共同进步。

尽管拍砖~~

 

  • 大小: 15.9 KB
2
0
分享到:
评论
1 楼 nameofming 2011-08-23  
改天我也试试,应该挺好玩!

相关推荐

    MFC小游戏(Dota连连看)

    《MFC小游戏——Dota连连看》 在编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于构建Windows应用程序。它基于面向对象的设计,为开发者提供了丰富的用户界面元素和系统功能接口。本项目...

    DOTA音效打包下载 手机铃声

    除了作为手机铃声,这些音效还能用于制作混音音乐、视频剪辑、游戏直播等创意内容,为作品注入DOTA的独特魅力。对于喜欢编程的玩家,甚至可以开发相关的小程序或应用,实现自定义的音效触发功能。 总结来说,DOTA...

    Android Dota的辅助信息app源码.zip

    《Android Dota辅助信息App源码解析》 在移动游戏领域,Android平台上的Dota游戏深受玩家喜爱。为了提升游戏体验,开发者们会制作各种辅助工具,其中之一就是Android Dota的辅助信息App。本篇文章将深入探讨这个App...

    dota铃声的制作,怎样制作dota铃声?.docx

    dota铃声的制作,怎样制作dota铃声?.docx

    Android项目源码dota2游戏相关资讯集成客户端带服务端

    在本项目中,"Android项目源码dota2游戏相关资讯集成客户端带服务端" 提供了一套完整的Android应用程序源代码,旨在为Dota 2游戏爱好者提供资讯聚合与服务功能。这个应用不仅包含了客户端的界面设计、数据展示以及...

    Android dota2连连看

    根据李刚的《疯狂Android讲义》做的Android版dota2连连看,加了一些基础界面设计,连接算法主要还是抄书里的。比较适合初学者看,有做一点简单的注释,相当简单的注释。 有兴趣的可以下载导入eclipse编译看看,个人...

    Dota2Helper, 掌刀:一款提供dota2游戏相关资讯与视频的Android App.zip

    Dota2Helper, 掌刀:一款提供dota2游戏相关资讯与视频的Android App

    机器人也玩DOTA——RoboMaster机甲大师赛介绍.pdf

    #资源达人分享计划#

    DOTA_devkit-master_遥感数据集DOTA处理程序_

    《DOTA遥感数据集处理程序详解》 在遥感图像分析领域,DOTA(Detection of Objects in Aerial Images)数据集是一个广泛使用的资源,它包含了大量的航空图像,旨在推动对象检测技术的发展。DOTA_devkit-master是...

    Android 游戏 2048源码(war3版)

    本篇文章将深入探讨一个特别的版本——"Android游戏2048源码(war3版)",并基于提供的文件名"test.txt"和"Demo_zhy_04_game_2048_dota"进行分析。 首先,我们关注的是"test.txt"。这个文件通常用于存储测试数据...

    DOTA图标 DOTA 英雄图标 物品图标 技能图标 搞笑图标 搞笑头像

    在IT行业中,游戏开发是一项复杂而充满挑战的任务,特别是在与热门游戏如DOTA相关的项目中。DOTA(Defense of the Ancients)是一款基于《魔兽争霸III》的地图编辑器创作的多人在线战斗竞技游戏,拥有丰富的英雄角色...

    dota改键精灵

    【Dota改键精灵】是一款专为Dota爱好者设计的辅助工具,它的主要功能是帮助玩家自定义游戏内的快捷键设置,以适应个人的游戏习惯,提高操作效率和游戏体验。在Dota这款多人在线对战游戏中,每个英雄都有多个技能和...

    使用yolo进行DOTA数据库训练,基于DOTA数据集的yolo训练-DOTA-YOLOv3.zip

    使用yolo进行DOTA数据库训练,基于DOTA数据集的yolo训练-DOTA-YOLOv3

    dota6.73ai中文版地图下载

    《Dota 6.73 AI中文版地图详解与下载指南》 Dota,全名Defense of the Ancients,是一款基于暴雪娱乐公司《魔兽争霸III:冰封王座》的地图编辑器制作的多人在线对战游戏。6.73版本是Dota历史上的一个重要里程碑,...

    dota ai地图6.67

    dota6.67 ai地图,让你成为dota雄狮

    DOTA2黑盒测试软件测试论文.doc

    DOTA2黑盒测试软件测试论文.doc 在本文中,我们将对DOTA2黑盒测试软件进行测试论文的研究,主要内容包括项目需求分析、项目设计、测试评估、项目实现、测试概要、测试内容和执行情况、总结和致谢等。 一、引言 在...

    dota2地形编辑教程.pdf

    5. **编辑器界面介绍**:打开Dota2 Workshop Tools Alpha后,将看到两个主要窗口——地图编辑器和Dota2运行器。两者相辅相成,不能关闭运行器窗口,否则编辑器也会关闭。 6. **创建新地图**:用户可以通过点击编辑...

    dota全图工具过11等

    【Dota全图工具过11等】是一个针对Dota游戏的辅助工具,主要用于帮助玩家在11对战平台、HF(浩方)平台以及VS(战旗)平台等多人在线游戏环境中获得全图视野。全图视野意味着玩家能够看到地图上的所有区域,包括敌方...

    DotA6.59c.rar

    【 DotA6.59c.rar 】是一个包含DotA(Defense of the Ancients)游戏更新的压缩包文件。这个版本是6.59c,是DotA Allstars系列地图的一个迭代,由冰蛙(IceFrog)或其他地图制作者进行维护和改进。DotA是一个基于...

Global site tag (gtag.js) - Google Analytics