曾经的坑
来源:互联网 发布:微信运动数据更新时间 编辑:程序博客网 时间:2024/06/08 17:41
过去的开发总是踩到n多的坑,虽然找到了处理的方案并解决,但后继在遇到的时候,大概只记得有这回事,怎么处理又忘记了,所以打算将自己踩过的坑和处理的问题记录下来。
需求:开发一款蓝牙传输的应用,根据需求将其分成APP,公共底层库,给第三方提供的sdk
那些坑们:
1、获取的蓝牙的信息没有放在一个统一的单例对象中 T T
设计开发底层库时,涉及到多个应用同时使用同个服务,数据应该要做好分类,那些是不同应用要各自初始化的,那些需要或可以统一使用的。
-----------------------------------------------------------------------------------
好文:开发第三方库最佳实践
随想录:开发一流Android SDK
Android 开发:由模块化到组件化(一)
-----------------------------------------------------------------------------------
2、在6.0系统下,无法进行自动的匹配甚至接不到任何的广播
原因:加了一个权限:http://www.jianshu.com/p/376b05ed8f4d
自动匹配参考:http://blog.csdn.net/qq_25827845/article/details/52400782
3、由于把不同的功能模块分成了多个module,所以在最后合并生成的时候发现不会把依赖打包进去:
http://zkread.com/article/1150352.html
4、aidl回调传输数据:传的对象中不能包含对象(也许是处理的不对);
5、蓝牙BLE:
a.使用ble的扫描方式时,扫描不到蓝牙2.0设备,硬件的哥们解释是说从机(被连接设备)是单模的,只能被蓝牙2.0扫描模式扫到,但也有资料说ble只能是扫描4.0或2.0,不能同时扫描4.0和2.0设备([转载]蓝牙4.0——Android BLE开发官方文档翻译)
b.由于2.0和4.0的协议改变,所以连接时需要根据不同版本区分处理,device对象的gettype()可以返回设备支持的连接方式
c.ble的写入操作必须在事件完成后再继续。所以需要在onCharacteristicWrite里加上一些处理(阻塞进程是没有用的,还是会有失败的情况)
-----------------------------------------------------------------------------------
好文:Android 上的低功耗蓝牙实践
6、判断应用是否在后台运行的问题:
红米Note:包名匹配+importance属性比较
其他(华为荣耀,htc):包名匹配即可
7、音/视频声道设置:
音频(AudioTrack):
/** * Sets the specified left and right output gain values on the AudioTrack. * <p>Gain values are clamped to the closed interval [0.0, max] where * max is the value of {@link #getMaxVolume}. * A value of 0.0 results in zero gain (silence), and * a value of 1.0 means unity gain (signal unchanged). * The default value is 1.0 meaning unity gain. * <p>The word "volume" in the API name is historical; this is actually a linear gain. * @param leftGain output gain for the left channel. * @param rightGain output gain for the right channel * @return error code or success, see {@link #SUCCESS}, * {@link #ERROR_INVALID_OPERATION} * @deprecated Applications should use {@link #setVolume} instead, as it * more gracefully scales down to mono, and up to multi-channel content beyond stereo. */@Deprecatedpublic int setStereoVolume(float leftGain, float rightGain) { if (mState == STATE_UNINITIALIZED) { return ERROR_INVALID_OPERATION; } baseSetVolume(leftGain, rightGain); return SUCCESS;}
视频(MediaPlayer):
/** * Sets the volume on this player. * This API is recommended for balancing the output of audio streams * within an application. Unless you are writing an application to * control user settings, this API should be used in preference to * {@link AudioManager#setStreamVolume(int, int, int)} which sets the volume of ALL streams of * a particular type. Note that the passed volume values are raw scalars in range 0.0 to 1.0. * UI controls should be scaled logarithmically. * * @param leftVolume left volume scalar * @param rightVolume right volume scalar *//* * FIXME: Merge this into javadoc comment above when setVolume(float) is not @hide. * The single parameter form below is preferred if the channel volumes don't need * to be set independently. */public void setVolume(float leftVolume, float rightVolume) { baseSetVolume(leftVolume, rightVolume);}
这个东西也是让人醉,很简单的东西,但因为用了传说中ijkplayer框架,对这个框架不熟,然后网上也没有找到相关的设置,搞我的又是去找有这功能的app,又是去反编译,那编译功能还出了bug,又远程到自己家里的电脑再折腾才搞定
==========2017_3_5补:
不知安卓原生就是这样,还是各大厂商埋坑能力确实牛x,setVolume(0)的时候也是会有声音的,不管是audiotrack还是mediaplayer都会有,而且残留的声音大小也是不一样的,有些几乎听不到,有些则完全没用。针对这个问题,mediaplayer可以在setVolume后加再调用meadiaplayer的start()方法,应该又可以处理掉一些厂商的,至少我们这是这样的;audiotrack没有处理过这个问题。
还有如果是声音播放产生的电频作为介质跟硬件交互的话
audiotrack的上述几个参数一定要保持一致,不会电频信号是会有误差的 T T。
h5:ChannelSplitterNode
领导随口一问,我也就随手一查,感觉pc可以,但手机不一定行
- 曾经的坑
- 曾经的曾经
- 写给曾经的曾经..
- 曾经的曾经
- 曾经的........
- 那些曾经踩过的坑
- 曾经的你,曾经的我
- 曾经的剧,曾经的曲。
- 曾经的积极 曾经的向上呢!!!
- 曾经的小学课本
- 曾经甜蜜的短信
- 许巍《曾经的你》
- 曾经的鸭子司令
- 曾经的你
- 曾经的一些对联
- 曾经想买的
- 曾经的你
- 许巍-曾经的你
- 仿百度搜索框自动补全智能提示效果
- Linux JDK安装
- eclipse编码格式(优先级)
- 二叉树与JavaScript
- redis 中的 reactor 模型
- 曾经的坑
- TK1 R21.4 只更新kernel,不更新文件系统
- C 预处理详解
- Maven项目导入eclips时,运行tomcat报错Exception starting filter encodingFilter错误
- Eclispse 换主题、皮肤、配色,换黑色主题护眼
- 上传excle Jxl读取Excel 导入数据
- QuantLib 以及 python 相关
- 一行命令搞定node.js 版本升级
- Unix/Linux编程实践教程 笔记一