环信聊天消息提示音的实现 仿微信新消息提示音设置。
思路:用RingtoneManager查询出title,Ringtone,uri信息,title用来展示,Ringtone用来播放,uri设置提示音时保存到本地,消息到来时,从本地获取存储的Uri,然后根据uri获取Ringtone对象,播放提示音。

效果图:

布局文件用ListView

实体类,用来存储提示音信息:
/*** @author 强* @time 2017-03-01 10:49* @类描述:用于存储ringtone对象和uri* @变更记录:*/
public class RingtoneBean {private String title;//提示音标题private String uriPath;//提示音Uri路径private Ringtone ringtone;public RingtoneBean(String title, String uriPath, Ringtone ringtone) {this.title = title;this.uriPath = uriPath;this.ringtone = ringtone;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getUriPath() {return uriPath;}public void setUriPath(String uriPath) {this.uriPath = uriPath;}public Ringtone getRingtone() {return ringtone;}public void setRingtone(Ringtone ringtone) {this.ringtone = ringtone;}
}
工具类核心方法,获取提示音列表
  public List<RingtoneBean> getRingtoneBeanList(int type) {List<RingtoneBean> resArr = new ArrayList<>();RingtoneManager manager = new RingtoneManager(mContext);manager.setType(type);Cursor cursor = manager.getCursor();RingtoneBean bean = null;if (cursor.moveToFirst()) {do {//获取uri废了一番功夫,api用的23,好多方法没有了,这句还是查看RingtoneManager源码找到的。以后还是要多看系统源码。Uri uri = ContentUris.withAppendedId(Uri.parse(cursor.getString(RingtoneManager.URI_COLUMN_INDEX)), cursor.getLong(RingtoneManager.ID_COLUMN_INDEX));Log.e("uri",uri.toString());String title = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);Ringtone ringtone = getRingtoneByUriPath(type, uri.toString());bean = new RingtoneBean(title,uri.toString(),ringtone);resArr.add(bean);} while (cursor.moveToNext());}return resArr;}

有了数据,接下来就是适配adapter了

/*** @author 丁建强* @time 2017-03-01 13:00* @类描述:提示音适配器* @变更记录:*/
public class SoundAdapter extends BaseAdapter {private Context mContext;private int index;//当前选中的indexprivate List<RingtoneBean> list;public SoundAdapter(Context mContext, List<RingtoneBean> list) {this.mContext = mContext;this.list = list;}public void setCurrentIndex(int index) {this.index = index;notifyDataSetChanged();}@Overridepublic int getCount() {return list == null ? 0 : list.size();}@Overridepublic Object getItem(int i) {return list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder = null;if (view == null) {view = View.inflate(mContext, R.layout.activity_sound_item, null);holder = new ViewHolder(view);view.setTag(holder);} else {holder = (ViewHolder) view.getTag();}holder.tvName.setText(list.get(i).getTitle());if (index == i) {holder.iv_sound.setImageResource(R.mipmap.checked);} else {holder.iv_sound.setImageResource(R.mipmap.unckecked);}return view;}static class ViewHolder {public TextView tvName;public ImageView iv_sound;public ViewHolder(View view) {tvName = (TextView) view.findViewById(R.id.tv_sound_name);iv_sound = (ImageView) view.findViewById(R.id.iv_sound);}}
}

listview点击时,选中当前项,并播放选中的提示音

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {adapter.setCurrentIndex(i);//选中当前项//停止播放之前的if (tempRingtone != null && tempRingtone.isPlaying()) {tempRingtone.stop();}tempRingtone = ringtoneBeanList.get(i).getRingtone();tempRingtone.play();saveIndex = i;}});

点保存按钮时,把选择的提示音的uri保存到本地

 tvSave.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String uriPath = ringtoneBeanList.get(saveIndex).getUriPath();String title = ringtoneBeanList.get(saveIndex).getTitle();SharedPreferences.Editor editor = preferences.edit();if (type == 0) {editor.putString("private_soundTitle", title);editor.putString("private_soundUriPath", uriPath);} else {editor.putString("group_soundTitle", title);editor.putString("group_soundUriPath", uriPath);}editor.commit();finish();}});
这个功能就差不多了,等环信聊天消息到来时调用环信的EaseNotifier,修改此方法,环信默认的提示音是系统的提示音,可以更改去播放自己设置保存到本地的提示音,自定义提示音就实现了。
 /*** 手机震动和声音提示*/public void viberateAndPlayTone(EMMessage message) {if (message != null) {if (EMClient.getInstance().chatManager().isSlientMessage(message)) {return;}}if (System.currentTimeMillis() - lastNotifiyTime < 1000) {// received new messages within 2 seconds, skip play ringtonereturn;}try {lastNotifiyTime = System.currentTimeMillis();// 判断是否处于静音模式if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {EMLog.e(TAG, "in slient mode now");return;}EaseSettingsProvider settingsProvider = EaseUI.getInstance().getSettingsProvider();if (settingsProvider.isMsgVibrateAllowed(message)) {long[] pattern = new long[]{0, 180, 80, 120};vibrator.vibrate(pattern, -1);}if (settingsProvider.isMsgSoundAllowed(message)) {if (ringtone == null) {Uri notificationUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);ringtone = RingtoneManager.getRingtone(appContext, notificationUri);if (ringtone == null) {EMLog.d(TAG, "cant find ringtone at:" + notificationUri.getPath());return;}}if (!ringtone.isPlaying()) {String vendor = Build.MANUFACTURER;ringtone.play();// for samsung S3, we meet a bug that the phone will// continue ringtone without stop// so add below special handler to stop it after 3s if// neededif (vendor != null && vendor.toLowerCase().contains("samsung")) {Thread ctlThread = new Thread() {public void run() {try {Thread.sleep(3000);if (ringtone.isPlaying()) {ringtone.stop();}} catch (Exception e) {}}};ctlThread.run();}}}} catch (Exception e) {e.printStackTrace();}}

安卓java代写

java安卓程序代做,安卓程序代做,专业程序代写,有需要请加QQ: 2103752102

我的淘宝店铺

Android仿微信新消息提示音相关推荐

  1. android接收消息后提示音,Android仿微信新消息提示音

    怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取 ...

  2. android微信加人有提示音吗,Android仿微信新消息提示音

    環信聊天消息提示音的實現 仿微信新消息提示音設置. 思路:用RingtoneManager查詢出title,Ringtone,uri信息,title用來展示,Ringtone用來播放,uri設置提示音 ...

  3. android新消息提醒功能,Android仿微信新消息提示音

    怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取 ...

  4. 高仿微信新消息提示音功能

    最近公司在做一个项目,有一个切换消息提示音的功能,可以切换本应用收到消息的提示音,而不影响系统提示音.我就按照微信的那个样式进行了编程,最终得到想要的效果. 转载请注明出处,谢谢:http://blo ...

  5. android 更换软件提示音,修改微信APP新消息提示音(教程)!

    熟悉我的朋友都知道,我只带来干货,每天都是实用技能!今天教大家如何自定义 消息通知铃声.来电铃声.闹铃铃声,Android操作系统由于其特征,自定义这些很简单,目前很多音乐APP软件都有个" ...

  6. android放微信@功能,Android仿微信语音消息的录制和播放功能

    一.简述 效果: 实现功能: 长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态生成录音文件,开始录音: 监听手指动作,规定区域.录音状态下手指划出规定区域取消录音,删 ...

  7. web页面 新消息提示音

    web页面 新消息提示音 链接:https://blog.csdn.net/fmyzc/article/details/83750141

  8. android 仿微信顶部消息 展示

    1.自定义拖动view package com.example.overlaymsg;import android.animation.Animator; import android.animati ...

  9. web页面 新消息提示音

    1.首先需要一个jq插件,将插件引入页面 下载地址     密码:ikkq 2.代码 html: <if condition="$tip eq true"><di ...

  10. android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能

    本文实例为大家分享了Android仿微信录制语音的具体代码,供大家参考,具体内容如下 前言 我把录音分成了两部分 1.UI界面,弹窗读秒 2.一个类(包含开始.停止.创建文件名功能) 第一部分 由于6 ...

最新文章

  1. hdu 2199 Can you solve this equation? 二分
  2. oracle datetime
  3. 在centos7中如何搭建局域网yum源仓库
  4. 手机开机画面制作工具(LogoBuilder)
  5. html制作主体部分,html – 使用CSS制作具有动态面板主体高度的面板填充父容器高度的其余部分...
  6. Node 即学即用 笔记 思维导图
  7. srve0255e尚未定义要怎么办_我的可转债中签了,该怎么办?
  8. 【英语学习】【WOTD】doldrums 释义/词源/示例
  9. PHP GD压缩图片
  10. 2017.11.20T19_5
  11. 大华海康等摄像头、录像机通过GB28181注册LiveGBS国标流媒体实现网页直播的注册流程解析...
  12. 关于程序员的冷笑话 (转载www.lenxiaohuadaquan.net )
  13. python恶搞小程序 画樱花树+启动摄像头+拍照+通过邮件发回+删除照片
  14. 3小时做完3天工作,她是用了什么办法做到的?
  15. 计网(第五版)3-41
  16. autocad Objectarx 使用setWindowArea设置打印区域后,发现与实际打印出来的区域不一致的问题
  17. 关于嵌入式常用显示屏的总结
  18. 已知一个字符串,将字符串中的大写英文字母转变/转化成小写字母,小写字母转变为大写字母,并将转变后的字符串输出
  19. Linux下的文件管理(初学者必看)
  20. 2021年衡师祁东附中高考成绩查询,2019祁东衡师附中录取分数线

热门文章

  1. html读取fbx文件,读取Fbx文件中的信息.doc
  2. 文字图片转换成html代码,IMG4Me 网站在线把文字转换为图片
  3. Linux如何快速生成大文件
  4. linux搭建mysql集群
  5. 【转载】前端项目开发流程及技术选型
  6. RTC唤醒低功耗(standby)模式
  7. 教你流程化梳理外贸工作(附18个全流程邮件模板分享)
  8. 美团饿了么外卖返利CPS公众号小程序话费加油团购源码淘客APP
  9. P40Pro鸿蒙OS刷机包,华为P40Pro+刷机包(官方系统最新固件下载10.1.0.145)
  10. 内容创作费时费力?这款AI写作神器超给力!