手滑先发到博客频道了。。不知道现在这样算不算重复发帖。。……罪过
前段时间在论坛上看到一个帖子,说了一个关于短信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文件(其实工程里也有),个人觉得像自己经常打游戏忘了回短信之类的。。猛的holyshit一下还是可以提提神的
同时也希望通过交流认识更多的朋友,不管是Android,java,C#,甚至前端等等,本人患严重拖延症,一个人就容易闲下来,所以希望更多的学习碰撞可以让自己一直保持热情,上述的小程序也当是给征友找伙伴投石问路,如果达人们愿意平时指导指导小弟,交流交流技术,可以短消息联系,大家共同进步。
- 大小: 15.9 KB
分享到:
相关推荐
dota铃声的制作,怎样制作dota铃声?.docx
Android Dota的辅助信息app源码
根据李刚的《疯狂Android讲义》做的Android版dota2连连看,加了一些基础界面设计,连接算法主要还是抄书里的。比较适合初学者看,有做一点简单的注释,相当简单的注释。 有兴趣的可以下载导入eclipse编译看看,个人...
Dota2Helper, 掌刀:一款提供dota2游戏相关资讯与视频的Android App
#资源达人分享计划#
Android项目源码dota2游戏相关资讯集成客户端带服务端
对DOTA数据处理的程序,能够实现DOTA数据转json文件,方便后续操作。
DOTA全部音效打包下载,可以放到手机里做来电或短信的铃声。
希望对那些要开发跟当前热门游戏DOTA有关的程序员们,可以给你们提供ICO,图标等方面的帮助,本资源覆盖DOTA的所有图标,英雄头像、技能、物品图标。分类超详细
一些玩家有可能因为手速跟不上的原因,想要将技能施法设置为智能施法提高自己放技能的速度。那么DOTA2怎么设置智能施法呢?下面是店铺带来的DOTA2设置智能施法的方法的内容,希望对您有所帮助。 DOTA2设置智能施法的...
dota6.73ai中文版地图下载
Dota中的各种声音集合...很好的资源
dota imba 3.80 AI,dota imba 3.80 AI,dota imba 3.80 AI
dota整张图的所有代码,包括技能、出兵、击杀等等功能,全用jass语言编写
最新的mac下的dota地图、、lion下可用、亲测!!
dota6.67 ai地图,让你成为dota雄狮
dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序dota游戏数据分析程序...
dota6.64中文版 最新的地图 dota6.64中文版 最新的地图 dota6.64中文版 最新的地图
DOTA6.66B AI CN DOTA全集