时间:2015-06-12 来源:

高仿微信新消息提示音功能 【编程语言】

最近公司在做一个项目web外包,有一个切换消息提示音的功能,web外包可以切换本应用收到消息的提示音,html前端制作而不影响系统提示音.我就按照微信的那个样式进行了编程,div页面最终得到想要的效果.

/** * 选择消息提示音后,承接网页前端外包跳转到功能界面后网页html切图排版, ringName+"传过来的值"); if (ringName != null) { pager.setCurrentItem(2); } } 直接跳转到第二个Fragment界面.如下图所示:

这样基本的功能就写完了,承接网站前端因为是公司整个项目的,html切图报价所以不能发源码给大家,承接网页制作但是有任何意见或者问题web外包,可以在评论和我沟通,web外包嘿嘿网页切图制作,共同进步嘛.

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="5dp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/text" android:layout_margin="5dp" android:gravity="center_vertical" android:text="mingzi" android:textSize="15sp" /> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="5dp" android:layout_below="@id/title" /> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_margin="10dp" android:src="@drawable/umeng_socialize_oauth_check_on" android:visibility="gone" /> </RelativeLayout> 里面的有两个空白的textView是为了扩开每个item的高度,网页切图制作为了让铃声名字看起来是在中间位置.

当我选择了Clever这个铃声的时候div+css+js切图,我再次进入这个页面,网页重构报价会从Clever这行开始显示.这个功能是这样实现的.嘿嘿承接网站前端,并没有想象的那么难吧,承接网站前端其实listview就自带这个方法的psd切图html,只需要传入当前item的位置是第几个就行了.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="55dip" android:background="@color/balck" android:orientation="horizontal" > <LinearLayout android:id="@+id/back_button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:onClick="allClick" > <ImageView android:layout_width="10dip" android:layout_height="18dip" android:layout_gravity="center" android:layout_marginLeft="15dip" android:layout_marginRight="10dip" android:src="@drawable/icon_left_arrow" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="新消息提示音" android:textColor="@color/white" android:textSize="20sp" /> </LinearLayout> <Button android:id="@+id/save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/account_backg" android:onClick="allClick" android:text="保存" android:textColor="@color/white" /> </RelativeLayout> <ListView android:id="@+id/ringtone" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="none" > </ListView> </LinearLayout> Button的account_backg代码是:

本功能的最主要的功能是,psd切图html这也是难点之一:获取到手机系统的提示音web外包,并将它们显示在一个listview里面.

然后将设置界面的新消息提示音的内容进行改变:

解释5: 当你选择了其他的铃声的时候,div切图排版再次进入新消息提示音界面时候网页切图制作,是从当前选择的铃声开始展示的,网页切图制作如图所示:

打开微信----我---设置---新消息提醒---新消息提示音.

RingtoneAdapter里的内容是这样的:

activity_ringtone下面的布局代码如下所示:

现在谷歌官方已经不推荐上面的那种notification的做法了div+css+js切图,所以我在适配数据的时候承接网站前端,有些小改变,页面div重构在i=-1的时候psd切图html,其他的不变.因为进行了这样的处理web外包,那么在点击各个item时候,web外包获得铃声并进行播放时候网页切图制作, SharedPreferenceUtil.RINGTONE_NAME)); //第一次进入这个页面div+css+js切图,下面的方法是不会执行的,手机网页外包因为ringName是null String ringName = getActivity().getIntent().getStringExtra("ringName"); if (ringName != null) { newSound.setText(ringName); Log.e("tag", SharedPreferenceUtil.RINGTONE_NAME, ringName); }

解释2. 最终将选择的铃声uri路径以String的格式存入到sharedPreference中.

不过这个有个问题就是,承接网页制作builder.setDefaults()这个方法设置默认的铃声web外包,闪关灯,web外包震动网页切图制作,每次只能设置一次,网页切图制作不能多次调用这个方法来设置.如果有大神知道div+css+js切图, FunctionActivity.class); intent.putExtra("messageData", 0, PendingIntent.FLAG_ONE_SHOT); n.contentIntent = pi; // n.defaults = Notification.DEFAULT_ALL; if (SharedPreferenceUtil .getBoolean(this, SharedPreferenceUtil.url_string).equals("")) { // 如果选择了其他的系统声音 n.sound = Uri.parse(SharedPreferenceUtil.getString( OnlineService.this, SharedPreferenceUtil.IS_VIBRATE)) { } else { n.defaults |= Notification.DEFAULT_VIBRATE; } n.flags |= Notification.FLAG_SHOW_LIGHTS; n.flags |= Notification.FLAG_AUTO_CANCEL; // n.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, title, pi); notificationManager.notify(id, n); 注意:如果是要选择其他的声音,psd切图html直接是n.sound = 其他声音的Uri

这个真的非常重要web外包,就直接这样就可以了,web外包看网上一大堆什么

在service里面进行设置网页切图制作,如下所示:主要看15--24行.

解释3: 当点击保存按钮后,div页面就进入到之前的界面div+css+js切图,因为我之前的界面是一个viewpager+fragment的一个界面,手机网页外包一个activity里面加入了四个Fragment的这样的一个界面.进入到主activity时候承接网站前端,进行判断:

package jz.his.adapter; import java.util.ArrayList; import jz.his.adapter.MessageAdapter.ViewHolder; import jz.his.jzhis.R; import android.content.Context; import android.opengl.Visibility; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class RingtoneAdapter extends BaseAdapter { Context context; ArrayList<String> list; /** * 建立一个数组,承接网站前端默认都为0 */ public int[] first; int index; public RingtoneAdapter(Context cont, int index) { context = cont; list = arayList; this.index = index; first = new int[list.size()]; } class ViewHolder { TextView title; ImageView image; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate( R.layout.item_ringtone, null); holder.title = (TextView) convertView.findViewById(R.id.title); holder.image = (ImageView) convertView.findViewById(R.id.image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title.setText(list.get(position)); if (first[position] == 0) { holder.image.setVisibility(View.GONE); } else { holder.image.setVisibility(View.VISIBLE); // 当点击其他item后,网页切图制作将index置为-1,则下面的if语句则不会再执行进入了 index = -1; } // 第一次进来的时候,网页重构报价让当前item的图片可见 if (position == index) { holder.image.setVisibility(View.VISIBLE); } return convertView; } } RingtoneAdapter里进行了判断承接网站前端,是否某个item后面的对勾显示出来.这里当时还是纠结了一会的,承接网站前端最终还是解决了.特此记录.

解释4: 你可能注意到psd切图html,我在RingtoneActivity代码里注释了两行代码,psd切图html你会发现web外包,当我们每次进入这个RingtoneActivity的时候,div切图排版都要重新加载数据到arrayList里面网页切图制作,虽然数据不是很多,网页切图制作但是肉眼可以感觉到是有点卡顿的div+css+js切图,那么为了防止卡顿,手机网页外包我在进入RingtoneActivity之前的FunctionActivity页面开了一个子线程先加载数据到arrayList里面承接网站前端, "6"); //使用系统提供的铃音 并不能有效果psd切图html,我也不清楚为什么,psd切图html如果大家有合理的解释web外包,请告知,web外包嘿嘿.

转载请注明出处网页切图制作,这样只会获取到notification的对应内容 manager.setType(RingtoneManager.TYPE_NOTIFICATION); Cursor cursor = manager.getCursor(); int num = cursor.getCount(); Log.i("tag",设置notification的自定义铃声要用到 Uri uri = manager.getRingtoneUri(i); //获取到当前铃声的名字 String title = ringtone.getTitle(this); ringtoneList.add(title); } 将获取到的消息提示音的名字承接网站前端,加入到arrayList里.

先将主界面的信息贴上来,承接网站前端看一下psd切图html, ringtoneList, View view, long id) { // 当点击的item是第一个“跟随系统”时 if (position == 0) { // 得到系统默认的消息uri Uri defalutUri = manager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 通过URI获得系统默认的Ringtone发出声音 Ringtone defalutRingtone = manager.getRingtone( RingtoneActivity.this, defalutUri); defalutRingtone.play(); ringName = "跟随系统"; uri = null; } else { // 当点击的item不是第一个“跟随系统”时,网页重构报价获得的铃声要减一才对 Ringtone ringtone = manager.getRingtone(position - 1); uri = manager.getRingtoneUri(position - 1); ringtone.play(); ringName = ringtone.getTitle(RingtoneActivity.this); } adapter.first = new int[ringtoneList.size()]; if (adapter.first[position] == 0) { adapter.first[position] = 1; } else { adapter.first[position] = 0; } adapter.notifyDataSetChanged(); } }); } /** * 初始化RingtoneManager对象承接网站前端,在listview的点击事件里面,承接网站前端用到了 */ private void initRingtoneManager() { manager = new RingtoneManager(this); manager.setType(RingtoneManager.TYPE_NOTIFICATION); manager.getCursor(); } /** * 得到当前铃声的行数 */ private int getIndex() { for (int i = 0; i < ringtoneList.size(); i++) { if (SharedPreferenceUtil.getString(RingtoneActivity.this, num + "消息音个数"); ringtoneList = new ArrayList<String>(); for (int i = -1; i < num; i++) { if (i == -1) { ringtoneList.add("跟随系统"); } else { Ringtone ringtone = manager.getRingtone(i); // Uri uri = manager.getRingtoneUri(i); String title = ringtone.getTitle(this); ringtoneList.add(title); } } } public void allClick(View v) { switch (v.getId()) { case R.id.back_button: finish(); break; case R.id.save: if (ringName == "") { // 没有改动铃声直接关闭界面 finish(); } else { // 已经改动uri,如果又选择了跟随系统,div切图排版则uri为null, SharedPreferenceUtil.url_string, SharedPreferenceUtil.url_string, ringName); intent.setClass(RingtoneActivity.this, FunctionActivity.class); startActivity(intent); } default: break; } } }

怕有些人不知道怎么进入微信的新消息提示音功能,psd切图html我这里说下操作步骤:

这样在ringtoneActivity中web外包,通过ringtoneList = FunctionActivity.ringtoneList;就获得了数据,web外包这样就不会有卡顿了.但是我这个方法用到了static定义变量网页切图制作,具体参看http://blog.csdn.net/harryweasley/article/details/45872685  android内存泄露优化总结 所以我弃用了这个方法div+css+js切图, num + "消息音个数"); ringtoneList = new ArrayList<String>(); for (int i = -1; i < num; i++) { if (i == -1) { ringtoneList.add("跟随系统"); } else { Ringtone ringtone = manager.getRingtone(i); // Uri uri = manager.getRingtoneUri(i); String title = ringtone.getTitle(FunctionActivity.this); ringtoneList.add(title); } } } };

Ringtone ringtone = manager.getRingtone(position - 1);

可以看到这两效果差别不是很大.

/** * 得到当前铃声的行数 */ private int getIndex() { for (int i = 0; i < ringtoneList.size(); i++) { if (SharedPreferenceUtil.getString(RingtoneActivity.this, R.drawable.ic_launcher); // 这里大图标psd切图html, SharedPreferenceUtil.IS_SOUND)) { } else { // 如果消息声音开启 if (!SharedPreferenceUtil.getStringNull(OnlineService.this, SharedPreferenceUtil.url_string))); } else { // 默认的系统声音 builder.setDefaults(Notification.DEFAULT_SOUND); } } if (SharedPreferenceUtil.getBoolean(this, FunctionActivity.class); intent.putExtra("messageData", 0, PendingIntent.FLAG_ONE_SHOT); // 设置通知主题的意图 builder.setContentIntent(pendingIntent); // 获取通知管理器对象 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(id, builder.build()); 关于这个新的notification的用法,psd切图html你可以参看这个文章:http://blog.csdn.net/harryweasley/article/details/46348363

下面是我自己编程的效果图web外包,如下图所示:

点击次数:18495
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日codeforces570c 【编程语言】2015年08月16日体育生学编程——html学习 【编程语言】2015年02月09日Mysql优化简介 【编程语言】2015年08月24日Lua总结二 【编程语言】2015年03月02日android多媒体——4步学会SoundPool 【编程语言】2015年09月20日自制操作系统-最简单的系统helloWorld 【系统运维】2015年05月13日JavaScript访问样式表代码2014年01月29日程序休眠问题的C代码实现【综合】2015年05月05日【tornado】websocket最简单demo 【综合】2014年12月25日Android编程之第三方开发MaoZhuaWeiBo微博开发示例-1【架构设计】2014年11月04日二分查找【编程语言】2015年08月25日内存四区分析【系统运维】2015年03月18日nodejs的事件EventEmitter 【系统运维】2015年05月05日Swift数值运算 【系统运维】2015年07月15日iframe上下滚动条如何默认在下方实现原理2014年01月29日与.NET联调的那些事 【编程语言】2015年02月02日hdu1524AChessGame博弈之,SG函数简单题 【综合】2015年03月02日无状态会话bean(3)---远程业务接口(未排版)【Web前端】2014年11月04日JS——DOM小结(一)查找元素 【编程语言】2015年05月25日LinuxShell脚本攻略(1.2) 【编程语言】2015年05月28日什么样的网站需要进行重构策划2014年01月28日当block中用到self时,需谨慎!【研发管理】2014年12月01日iOS:常规问题崩在model中 【综合】2015年05月05日nyoj63(小猴子下落)(模拟,二叉树) 【编程语言】2014年11月06日c++里面创建对象,什么时候应该用new什么时候应该直接创建? 【综合】2015年08月16日Ajax长连接项目案例2014年01月29日13个JavaScript性能提升技巧分享2014年01月29日JavaRandomAccessFile文件操作详解 【数据库】2015年08月03日如何使用android系统隐藏hide的类和方法 【编程语言】2015年04月01日Android中利用App实现消息推送机制的代码2014年01月30日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)