Android相关
文章平均质量分 71
Unknown_unknown
也就比一般的Android工程师厉害那么一点点*^◎^*
展开
-
AudioRecord READ_BLOCKING 与 READ_NON_BLOCKING的区别
Android AudioRecord READ_BLOCKING与READ_NON_BLOCKING的区别原创 2022-02-10 20:46:25 · 1032 阅读 · 0 评论 -
Android AudioRecord 录制ENCODING_PCM_FLOAT AudioFormat格式音频以及与ENCODING_PCM_16BIT数据的转换
AudioRecord 录制ENCODING_PCM_FLOAT 格式音频ENCODING_PCM_FLOAT 需要Android 23以上版本才支持。构造AudioRecord。构造方法跟其他格式数据一致,只是audioFormat更改为AudioFormat.ENCODING_PCM_FLOAT。我这里传的数据格式为audioSource:MediaRecorder.AudioSourc...原创 2019-11-06 23:42:12 · 5134 阅读 · 1 评论 -
【内存优化】 MAT 看内存 Native Stack 找不到真正的引用
用Eclipse Memory Analyzer(也就是MAT) 优化内存时遇到下面一种情况。 每次操作都会导致AudioDecoderTrack这个类增加,但是又看不到具体的引用。能看到的只有一个Native Stack,而且前面也不是引用的箭头,而是一个小黄点。 这是为什么呢?小黄点代表这个类是一个GC Root,GC Root 具体的概念及产生情况如下: Garbage Colle原创 2017-10-20 13:16:55 · 1980 阅读 · 0 评论 -
【内存优化】 Android 内存优化---概念、定位常用手段跟重要内存优化点
Android内存优化最近半年做了比较多的内存优化工作,虽说现在网上关于内存优化的博客一抓一大把,而且确实很多都写的很棒总结的很好,但还是忍不住想要自己总结归纳一番,分享一点自己的心得。什么是内存优化,什么时候需要内存优化,内存优化的目的是什么内存优化就是优化内存嘛,让应用占用的内存更小嘛,让用户使用起来更流畅,占用的资源更小,而且最重要的是内存不会无限制增大导致OOM。所以,当你原创 2017-11-03 10:23:36 · 333 阅读 · 0 评论 -
Java泛型获取T class的解决方法(异步请求代码的优化)
异步请求时我们会很想获取到泛型的class,但是却很难获取到,这个时候该怎么办?原创 2017-11-30 00:43:08 · 4566 阅读 · 0 评论 -
退出AndroidStudio时卡死
最近经常遇到退出AndroidStudio的时候卡死,本身电脑配置不算低,而且打开时候不会卡,正常使用包括Build的时候也不会卡,就只有退出的时候会卡死。百度、google都没找到我这样的情况。。。 那只能自己解决了,先是尝试将gradle部署等放在本地,发现无效。。。修改VM内存大小,使用时速度是会变快一点,但还是没办法解决退出时卡死的问题。没办法,只好看日志了,可以通过Help->Show原创 2017-11-16 16:52:08 · 2325 阅读 · 1 评论 -
android:singleLine="true" 跟maxLines="1"是不同的
前几天遇到一个Bug,TextView显示“我和我的小伙伴们都惊呆了” 时只能显示到”我和我的小伙伴们都惊呆”,少显示了几个字但却未显示省略号。 显示错误时最终发现将maxLines=”1” 改成singleLine = “true”就显示正常了。。。 正常显示时 最坑的地方在于,你使用singleLine = “true” 的时候会提示你这个属性已经过时了,推荐使用m原创 2017-10-20 11:40:29 · 3210 阅读 · 0 评论 -
pipe fd泄露
pipe增加的可能原因原创 2017-08-23 11:38:58 · 2076 阅读 · 0 评论 -
Android立体声pcm的数据结构,左右声道拆分、左右声道反转
立体声pcm数据结构Android录音默认录制生成的是pcm文件,假设我们设置立体声拆分假设我们录制的是16bit 立体声的录音,现在需要把它拆分成左右声道来进行其他处理,可以通过如下方式来实现: private void splitStereoPcm(byte[] data) { int monoLength = data.length / 2; ...原创 2018-07-23 22:33:52 · 6293 阅读 · 6 评论 -
adb 查看安装包路径
由于做toB业务,会接触到各种厂商各种设备,有时候想卸载一个安装包很麻烦,尤其是那些预置的,没办法通过adb uninstall 直接卸载掉。这个时候可以通过dumpsys package 包名 | grep codePath查看安装包路径。...原创 2018-12-20 23:15:41 · 11346 阅读 · 0 评论 -
Java Map的几种遍历方式
方法1 通过KeySet遍历 public void loopMapByKeySet() { Map<String, Integer> testMap = new HashMap<>(); testMap.put("testKey1", 1); testMap.put("testKey2", 2); ...原创 2019-01-24 17:35:57 · 288 阅读 · 0 评论 -
Android自定义Toast总结(下)
水。。。。本来这个半年前就该写了的。。。。现在也懒得写了,大概写下当时想实现的内容跟实现的思路吧。1.为Toast来添加动画既然toast的view可以自定义,那么我们是否可以通过toast来实现动画效果呢?当然可以了,动画就是把一幅幅画面按顺序显示而已,因此,就算我们什么都不会,至少我们也可以通过不断刷新ImageView来实现动画效果。2.自定义Toast显示时间Toast显示原创 2016-02-21 03:53:33 · 382 阅读 · 0 评论 -
android service getIntent
想在activity startService时,想通过putExtra("name","data" )来传递数据,但是在service中并未找到getIntent()的方法,想了很久才发现原来onStartCommand传递的第一个参数就是传递过来的intent.原创 2015-03-16 10:15:06 · 3087 阅读 · 0 评论 -
Android布局中使用weight的技巧(点名小软件的实现)
常常我们会遇到这种情况:想要把一个空间的宽或者高平均分成几份,每个控件的宽度或者高度都相同,同时我们还希望无论在什么型号的手机上效果都是这样。这个时候,weight这个属性就可以很方便的帮我们实现该功能。下面,是之前学习该部分时写的一个点名的小软件,这个软件当时我是用LinearLayout+weight实现的,也可以用TableLayout+TableRow+weight来实现,而且感觉那样原创 2015-03-19 20:33:32 · 673 阅读 · 0 评论 -
android 编译出来的执行文件 not executable: magic 7F45
想在将一个开源库移植到android上,因为之前做过一个移植,是直接将编译出的可执行文件放到目录下,然后再调用exec执行的。这次也想那样做,可是报了上面这个错误。通过,google,发现,上面错误的含义为:Magic number 7F45 specifies the Executable and Linkable Format (ELF) file type, a format原创 2015-03-31 10:04:31 · 14958 阅读 · 3 评论 -
android TV 多个Button时默认某个Button为焦点
假如某个Activity有Button A,Button B,Button C,依次从上到下排列,根据Android自身的机制,进入到该Activity时,Button A会默认获得焦点。但是,我们现在想让Button B默认获得焦点,该如何实现呢?之前我都是先让A和C无法获取焦点,等应用加载完成后再让他们可以获取焦点,最近无意间发现了一个简单的多的方法:用这个属性来实现。只用在Button原创 2015-04-22 14:36:05 · 3459 阅读 · 0 评论 -
使用EventBus来实现数据的传递
EventBus是Android的一个开源项目,它最重要的功能就是可以简化各个组件之间的消息传递,类似于Android自身的广播。但又比广播使用起来方便的多的多。如果我们想要一个广播来传递消息,我们要先在发射端定义一个Intent,然后putExtra什么的,再sendBroadcast,接收端也得注册一个BroadcastReceiver,又得添加Filter之类的,还得在onReceive原创 2015-04-22 16:07:37 · 6949 阅读 · 0 评论 -
异步加载数据Thread与AsyncTask比较
AsyncTask比new Thread方便好用的多,它自身就包含了一个子线程以及几个主线程方法,可以省去自己书写Handle的过程,而且,加载数据成千上万时,new Thread还得考虑性能问题,而Async本身就考虑了线程池这个东西,已经设置好了最大线程数。原创 2015-04-18 12:24:48 · 443 阅读 · 0 评论 -
Android View.GONE View.INVISIBLE 的区别
Android如果想让一个View变得不可见,可以使用view.setVisibility(View.INVISIBLE),也可以view.setVisibility(View.GONE)(或者在xml文件中修改),这二者有何区别呢?查看android源码可以看到: /** * This view is invisible, but it still takes up spac原创 2015-04-27 11:06:49 · 904 阅读 · 0 评论 -
ImageButton focusable="false"不起作用
想要让一些控件刚开始时无法获取焦点,然后过一段时间又可以重新获取焦点。对Button来说很轻松就实现了,无非就是刚开始在xml文件里设置focusable=false,条件合适时再动态设置focusable为true,但是,对于ImageButton来说这种方法却不起作用(动态设置是可以的,但xml无效)!怎么办呢?我们该如何让ImageButton创建时就无法获取焦点呢?我通过自定义控件来实原创 2015-05-12 09:51:19 · 2462 阅读 · 0 评论 -
Android自定义Toast总结(上)
Android自定义Toast总结最近工作中遇到一个这样的场景:看电视时,当用户换台时,我们想要提示用户当前频道名称及节目内容,并且为了醒目,我们还要同时把台标也显示出来。很常见的一个场景,相信大家都遇到过。当然,实现也很方便,我们可以通过显示\隐藏View、PopupWindow、自定义Dialog等实现它。可是这次我希望通过自定义Toast来实现。自定义Toast的显示内容根据需求,我们要显原创 2015-08-05 23:37:16 · 1072 阅读 · 0 评论 -
Sqlite from 错误
想要更新sqlite一行数据的多个列,试着使用UPDATE [TABLE] a SET a.colums1 = b.colums1,a.colums2=b.colums2...FROM [TABLE] a,[TABLE] bWHERE a.id=x and b.id=x结果一直报错,纠结了很久才发现sqlite不支持这样的FROM 。看来只能先用笨方法解决了,就是UPD原创 2016-01-07 16:58:51 · 392 阅读 · 0 评论 -
Android 多个animation同时执行
假如,我们想要一个控件在变大的同时向左移动,我们可以通过以下几个步骤来实现:1、在res文件夹下新建一个anim文件夹(存放动画xml文件的文件夹一般都这么命名);2、创建两个xml文件,假设命名为分别命名为scale_big.xml、trans_left.xmlscale_big.xml<set xmlns:android="http://schemas.android原创 2015-03-25 21:39:08 · 5152 阅读 · 0 评论