
Android
duguju
这个作者很懒,什么都没留下…
展开
-
实现KTV效果:播放歌曲,录音(存储录音文件),并同步播放录音 & 解释4.3以上audio与media资源冲突问题
很多唱歌类型的APP(比如唱吧),都在寻求实现好的用户体验,其中一个就是能够一边边播放歌曲一边唱(声音会被录下来),有人便想进一步实现播放录的声音(就像拿着麦克风唱歌的感觉,自己可以听见自己的声音)具体实现方案是:MediaPlayer播放音乐,MediaRecorder录音并保存; AudioTrack和AudioRecord两个配合实现实时语音流的记录和同步播放但是唱吧并没有实现“可以听见自己唱歌的声音”的效果,经过尝试、研究发现,原来android4.3(API18)以上不支持MediaRecord原创 2015-09-06 16:29:48 · 3374 阅读 · 0 评论 -
webrtc直播插入耳机无效
上一篇文章webrtc直播音频无法静音讲到了音频无法静音的问题,然而在开发过程中我们还遇到一个问题,耳机插拔的时候因为机型的不同而有可能检测不到而仍然使用外放(很多机型都出现,华为小米等,也有机型是可以的,机型适配真caodan啊)。经过调试观察,发现原因是,有的机型在处理音频功放的开闭时需要手动调用audioManager.setSpeakerphoneOn这个方法。因此我的解决方法原创 2016-06-19 11:59:18 · 2108 阅读 · 0 评论 -
webrtc直播音频调节失效(小米等部分机型)
在使用webrtc集成到工程进行二次开发的过程中,由于机型适配情况的复杂性,很多问题在某些机型上不会出现,但是在另一些机型上可能就出现重大的或致命的错误,尤其在中国,手机厂商众多,每个厂家的rom都会对源码做一些封装、修改甚至限制,作为国内的android开发者就必须具备“一码多套”或“一码多调”的能力,为我们d(゚∀゚d)点赞!其中我在使用webrtc直播框架时就遇到过这么一个问题,在小米(原创 2016-06-19 13:59:02 · 3587 阅读 · 0 评论 -
listview在scrollview中自行滑动(滑动冲突)
我们在文章1中解决了单行显示的问题,同时又在文章2中解决了多条数据重测量设置高度耗资源卡顿的问题。那么有人说了,我的scrollview里面的元素较多,不想直接在scrollview里面全部显示出listview,太占界面大小了,要不然我得滑倒天荒地老才能看见listview下面的控件啊!我只想在高度限制的一块区域显示(自定义xml中高度dip,或代码设置几条item的高度文章1、2都有实现)原创 2016-01-07 22:02:17 · 2890 阅读 · 0 评论 -
eclipse运行android工程时出现Unsupported major.minor version 52.0错误
最近在运行工程时意外出现Unsupported major.minor version 52.0的错误具体现象是:eclipse编译是不报错的,但是在运行android工程时,在最后的lauching阶段时会弹出错误的提示窗口:在网上搜的关于Unsupported major.minor version 52.0问题的解决方案都是建议修改jdk版本的,但是仔细想一想其实不是原创 2016-06-21 14:55:09 · 6627 阅读 · 9 评论 -
顶部布局随ScrollView滑动透明度渐变(QQ空间效果)
QQ控件顶部的工具条在整体的ScrollView从顶部滑动时会从透明逐渐变为纯色;虽然有人实现过但存在以下问题:适用性不够宽;重写ScrollView的onTouchEvent来实现在进行FLING操作时,触摸事件监听不到,出现透明度显示错误的bug。我实现的方式:重写ScrollView的onScrollChanged方法,自定义一个公共的OnScrollChangedListener接口,并暴露一个setOnScrollChangedListener用来让Activity设置并监听滚动事件,在接口实现原创 2016-03-30 18:57:52 · 5661 阅读 · 0 评论 -
MediaCodec编码后视频时长不正确的问题
使用MediaCodec对相h机数据进行编码,存储为h264文件之后发现播放的视频长度与实际相比或变长或变短(跟机型有关高端手机会变长)。尝试在初始化时改变帧率:mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, mFrameRate);或者在编码时对presentationTimeUs时间戳做调整:mMediaCodec.queueInp...原创 2018-08-28 16:25:56 · 6573 阅读 · 1 评论 -
Android应用CPU实时监控工具-全机型适用
Android开发APP过程中,对于某些功耗较大的功能需要实时监测CPU占用(CPU作为手机功耗的核心模块,几乎占了性能消耗的大数,因此监控了CPU基本也就了解了当前手机的运行状况)。目前市面上的一些监控CPU的程序有的是针对某些机型的CPU(比如高通针对骁龙芯片的Trepen,MTK针对联发科芯片的Mali),有的只能监控整体CPU,而无法针对某个应用的占用进行监控(比如PerfMon);...原创 2019-05-13 12:18:31 · 10057 阅读 · 5 评论 -
Android studio gradle编译失败问题汇总
Android studio作为供Android开发者使用的集成开发环境,虽然便利性十足,但也因为『本土化』的原因导致很多功能阉割以及出错的情况; 而出现问题最集中的莫过于让人头疼的gradle编译问题,由于Android studio使用的是一个在线的国外编译系统『gradle』,因此在连接外网进行下载必要的编译资源时会不可避免的出现一些问题; 根据日常开发&翻贴经...原创 2019-06-06 11:16:46 · 4294 阅读 · 0 评论 -
webrtc直播音频无法静音
现在直播越来越火,然而好的直播框架代码是很重要的,webrtc是谷歌开源的一个直播框架,集成简单功能较全,是一个较好的选择。然而在直播开发过程中发现一个问题,就是webrtc直播的声音无法静音。在调节音量的的时候就能注意到,音量调节的图标并不是音乐媒体,而是通话的音频标志,通过看源码也发现,webrtc框架选用的就是通话的音频通道STREAM_VOICE_CALL;而因为通话音频通道的特殊性,原创 2016-06-19 11:47:03 · 4371 阅读 · 2 评论 -
实现应用专属通知铃声
现在大多应用的推送消息通知铃声一般是跟随系统,微信的话可以在应用设置里面进行选择;有时候需求会希望通知铃声是企业自身特点的(也就是自己录制的,定制化的),比如电脑上QQ,淘宝等通知铃声,极有特点容易让人记住,在移动端也是可以实现的。我的实现策略是:1、在通知到达的时候,将通知的音频通道即STREAM_NOTIFICATION置为静音。 2、开启一个播放音频的service。原创 2016-06-19 11:16:10 · 1818 阅读 · 0 评论 -
listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠
有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一个item里面又各自嵌入一个gridview,但是当二级目录(数据条目)的数量过多时,界面会比较臃肿,这时我们就想要有类似展开与折叠的效果。作者采用的策略是数据分段的分别显示,其中对于显示边界(处于限制显示数目的特定位置)的控件要有数据的动态更新和点击判断操作。原创 2015-10-31 23:08:23 · 6260 阅读 · 2 评论 -
代码中动态设置view或布局的宽高
有时我们需要在应用中动态改变图片或某一块布局的大小。这就不能用XML文件写成固定值,而需要在java代码中动态设置。网上有一些教程使用relativeView.setLayoutParams(new RelativeLayout.LayoutParams(100,200));的方法,可是发现这样设置很容易抛错;因此有人指出不能直接新建一个LayoutParams的同时设置宽高值,需要先实例化一个对象,再进行具体参数的设置,然后再设置;然而这时候你一定要注意强制类型转换时的LayoutParams类型,原创 2015-11-26 15:41:14 · 55849 阅读 · 1 评论 -
APP“程序未安装”解决方案 手机操作&代码相关
对于市面上的众多APP,有的用户在安装的时候会出现提示“程序未安装”这样的错误,若只是通过手机设置操作解决则较简单,比较复杂的情况是问题和手机系统甚至工程代码有关,我曾在工作中遇到过:三星note系列5.0系统我的APP就是安装失败,其他系统或其他APP都可以正常安装,最后还是通过修改代码才解决。但需注意:原因可能是某些系统版本对于安装包的检查策略进行了更严格的限制。我们从手机操作和代码两个方面进行问题整体排查和解决原创 2015-12-29 14:10:22 · 4201 阅读 · 0 评论 -
点击加载更多(适用于listview在scrollview单行显示修正后多数据加载慢的情况)
当解决了listview在scrollview单行显示的问题后,当listview需加载的数据条数很多时会发现界面会卡顿很久才显示正常,这是因为原来默认listview单行,而一下子增加了很多条时对listview的行数会突增,进行setlayoutparams会相当耗资源;尤其是当scrollview为viewpager的其中一个页面的时候,切换页面会相当卡,所以针对这种情况我选择先显示少量几条,之后点击最下方的“点击加载更多”再将所有条目显示,这对于用户体验和操作习惯来说是可以接受的原创 2016-01-06 23:50:58 · 2484 阅读 · 0 评论 -
文字划掉效果-自定义Textview
实际项目中可能需要给文字加一道划线/斜线的效果,比如要显示原价格和优惠价格,这时在原价格文本上加一条斜线会更方便人理解,如图:实现起来很简单,自写继承于TextView的类,然后重写onDraw(Canvas canvas)方法即可。因为入参是canvas,自带的super.onDraw(canvas)语句是执行父类的绘制流程,即正常显示文本;由于我们是对原功能进行的的额外扩展操作(当原创 2016-01-18 15:41:08 · 11825 阅读 · 0 评论 -
TextView异步加载HTML格式数据中的图片(解决4.0以上主线程加载失败)
4.0以下的系统TextView显示带HTML标签并含有网络图片信息的文本时在主线程调用语句textView.setText(Html.fromHtml(txtString, imageGetter, null))便可以直接正常显示HTML中的图片了;但是在4.0以上这是不可以的,因为系统规定在主线程中不可以访问网络;因此必须开启子线程加载图片,但是又存在另一个严重问题,子线程中是不可以访问UI控件的;因此我的解决方式是:开启子线程加载图片,用主线程的handler变量使用post将加载内容返给UI控原创 2015-08-31 08:44:48 · 2546 阅读 · 1 评论 -
opencv人脸检测代码应用与分析(PC端和Android端)
(1)OpenCV人脸检测C++程序流程:OpenCV的人脸检测程序采用了Viola & Jones人脸检测方法,主要是调用训练好的瀑布级联分类器cascade来进行模式匹配。 cvHaarDetectObjects先将图像灰度化,根据传入参数判断是否进行canny边缘处理(默认不使用),再进行匹配。匹配后收集找出的匹配块,过滤噪声,计算相邻个数如果超过了规定值(传入的min_neighb原创 2015-11-26 17:07:09 · 3101 阅读 · 0 评论 -
解决ListView在ScrollView里只显示单行的问题
ScrollView是常用的滑动显示内容的控件,有时会包含诸多类型的内容控件,如TextView、ImageView、ListView等混合使用;而在使用ListView时,最后运行往往发现ListView只显示一行;究其原因是因为:原本ListView的高度是设置adapter之后去自适应高度的(不放在ScrollView里面的话ListView会纵向平铺),但是放在ScrollView之后ScrollView需要测量里面所有子控件的高度并设置,但是这一步是布局资源的操作,没有考虑ListView通过a原创 2015-09-07 14:31:22 · 2985 阅读 · 0 评论 -
android.view.InflateException: Binary XML file line # 问题的某一种场景
网上有很多android.view.InflateException: Binary XML file line #错误的解决办法,但是都没有包含我遇到的这种场景。我是在用Listview的Adapter时出现的:mAdapter = new BaseAdapter() { @Override public View getView(int position, View...原创 2019-06-13 15:32:18 · 1557 阅读 · 0 评论