- 博客(37)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Android BLE writeCharacteristic偶尔返回false的处理方法
背景:最近在负责做RFID的一个项目,PDA通过BLE和BLE模块通信,BLE模块透传CMD给到RFID模块,然后RFID模块回Response,通过BLE模块给到PDA。做好一些SDK的接口自己做压力测试的时候,发现很高频率的情况(例如间隔40,50ms或更短执行一次)下调用boolean status = mBluetoothGatt.writeCharacteristic(ch...
2019-08-28 16:16:38
6073
6
原创 Android O Android P 自定义开机广播
背景一般来说,我们都是用的监听android.intent.action.BOOT_COMPLETED。但凡稍有些经验的开发者都知道,这个广播很慢,非常慢。因为它是一个有序广播,根据优先级来的,而且监听这个广播的apk又非常多。打个log感受一下,这个广播开始到结束在我司的机器上持续了30s!关键是你把优先级调高了,即便你是前几个收到android.intent.action.BO...
2019-07-09 21:44:21
4543
9
原创 Android N Android O 默认MTP模式 实时文件扫描
背景最近客户那边反馈需求希望我司的设备能像三星的机器一样,usb连接电脑的时候默认是mtp模式,同时可以解决电脑查看手机上的文件有时候不一致的问题(也就是手机上创建的新文件或者目录,电脑上不能及时看到)。需求分解需求我们分解一下,其实是两个需求。1.usb连接电脑默认mtp模式2.实时文件扫描需求实现思路一般来说,如果需求可以不动os测实现我们尽量不去动os。默认m...
2019-03-06 18:10:24
2532
2
原创 Android 用户组权限,SELinux心得总结
这里要分两个部分来说,一个是Linux权限组的设定,一个是SELinux。我们先不考虑SELinux。先单独来说Linux权限组。因为要想对某个文件进行操作(read,write,execute等),必须先满足Linux权限组的规则,然后再满足SeLinux的allow条件,才能成功操作。我们最好找一台userdebug软件的手机来进行调试学习。我这边是在Android O上进行示范。...
2018-11-09 12:54:19
7850
5
原创 Android Studio 上jar包,aar包,aidl,aidl打成aar包的正确使用
由于一直做的是系统rom开发,对于jar包,aar包,aidl,aidl打成aar包这些东西之前一直没有比较明晰的实践,以及哪些场合下需要这些方法,这些方法有哪些优劣以及局限性。抽时间每种方式都在Android Studio上详尽的实践了一遍,有以下收获。为了方便大家理解,最好根据我这边上传的源码就自己实践一遍。demos都是基于Android Studio 3.2版本做的。demos下载...
2018-10-16 13:58:53
4460
3
原创 Android O device owner&zero touch
最近manager让研究下device owner和zero touch。部分心得如下。1.zero touch相关网址https://support.google.com/androidpartners_gms/answer/9178208?hl=en#这个网址普通的google账号是看不了,需要申请GMS partner权限,这个可以找gms认证机构来帮助申请,我司找的harman...
2018-09-17 16:57:20
7334
3
原创 Android O 竖屏横用相关修改
最近公司想要做个横屏的设备,考虑到是小屏,LCM由于工艺,防摔等因素不好替换,Manager让研究下竖屏横用。需要考虑的方面:kernel_logo,bootanimation,系统,recovery ui,charger (关机充电)等。1.kernel_logoqualcomm的kernel_logo在splash.img里目录:vendor\action\splash...
2018-08-30 15:39:38
2771
4
原创 Android O 获取Runtime.getRuntime().exec生成的进程号PID并模拟adb shell的Ctrl+C 操作
前提:公司的手持设备,做了两个mic。写工厂测试apk的同事写测试代码的时候就没有用上层的AudioMedia或MediaRecorder的相关api去做。而是用的Runtime.getRuntime().exec(...)去执行tinymix,tinycap指令来进行测试。 录音过程:先用tinymix打开相关流,然后tinycap开始录音。然后tinymix关闭相关流,tin...
2018-06-20 11:36:03
5719
3
原创 Android 灯带功能开发 基与Android N 过gms认证
之前公司安排一个灯带的功能让开发。现在整理下,针对开发过程中碰到的一些问题提出来分享一下。大家可以根据目录来选择性的查看。最终效果图:真机图:客户基本需求:蓝灯:开机亮屏时显示绿灯:来电时闪烁黄灯:有未接来电时闪烁粉灯:有未读消息或未读短信时闪烁红灯:低电量时闪烁UI显示:Settings一级菜单新增灯效item,并新增对应二级菜单扩展功能:静音模式下关闭灯效时刻表范围内关闭灯效灯带定时关闭 简述...
2018-03-26 02:20:32
1830
2
原创 Android 高仿Iphone Settings 基于Android M版本
之前在公司有需要做高仿的项目,恰好分配到了Settings的修改一级菜单效果图如下: Settings的修改简单来说,主要是资源的一些替换,各种Preference的定制。当然,还有一些零星的其他问题。这里我会把自己碰到的最后解决了的一些问题贴出来。1.资源的替换首先修改下Android.mkLOCAL_RESOURCE_DIR:= $(LOCAL_PATH)/resLOCAL_RESOURCE_...
2018-03-25 15:33:59
1771
原创 仿小米计算器
模仿小米计算器:基本的功能:大写转换,科学计算器(打开自带Calculator),长度转换,面积转换,体积转换,温度转换,速度转换,时间转换,重量转换。最终效果图:实现中遇到的问题:GridView高度自适应全屏。自定义PickerView。单位转换的算法设计。AlertDialog位置可控。因为写这个比较早了,现在想想可以优化的点:
2017-06-19 17:18:56
4170
34
原创 android 设置(Settings)常见修改记录
Settings设置packages/apps/Settingsframework/base/packages/SettingsLibframework/base/packages/SettingsProvider1.Settings常见页面对应文件以及布局
2017-06-19 16:44:00
7186
原创 android 下拉状态栏(SystemUI)常见修改记录
下拉状态栏:1.下拉状态栏的亮度条:frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSPanel.javamBrightnessView对应布局文件:quick_settings_brightness_dialog.xml2.滑动亮度条后过渡到桌面的亮度条frameworks/
2017-06-19 16:33:32
11571
2
原创 剑指offer 算法java
1.将字符串转化为数字char'0'对应48'A'对应65'a'对应97(1)简单点就是调用javaapi。inta=Integer.parseInt(“123”);这样得到a=123。(2)将string分解成一个个的char.然后将char转化为int。个位不需要乘,十位乘以10,百分乘以100,以此类推。string分解为一个个的char.c语言中:Str
2017-05-26 17:53:27
538
原创 ListView相关知识点
(1)BaseAdapter与ArrayAdapter的区别,应用场合区别。个人理解:但凡需求需要重写ArrayAdapter的getView方法的。都不如用BaseAdapter简洁(注意不是BaseAdapter更好,要分场合,如果ListView的内容很多条,好几十条,上百条,据说用ArrayAdapter更好,没看源码。).如果能MyExtendsArrayAdaptermAdap
2017-05-26 17:30:22
506
原创 Ubuntu部分问题
(1)ubunturoot用户有声音但是右上角没有声音图标,不可调整声音大小解决方法(实测有效):ubunut14.04 在/root/.profile文件最后加上pulseaudio--start --log-target=syslogsource /root/.profile使之生效就ok啦参考网址:http://blog.sina.
2017-05-26 17:16:47
464
原创 查看手机信息
(1)获取屏幕相关信息DisplayMetrics metric = new DisplayMetrics();// getWindowManager().getDefaultDisplay().getMetrics(metric);metric = this.getResources().getDisplayMetrics();// 这行代码可以用在自定义view中,比上面的
2017-05-26 17:05:07
1192
原创 String相关知识点
(1)java空字符串和null的区别StringmString=””;System.out.println(mString.length());输出0;StringmString=null;System.out.println(mString.length());报空指针异常,因为null这个对象并没有length()方法。(2)获取字符串长度intlen
2017-05-26 16:53:29
567
原创 PorterDuffXfermode 学习总结
(1)PorterDuffXfermode学习总结这个示意图是建立在上层图和下层图的大小是一模一样大的。例如,上层图400x400,下层图400x400.圆的半径为100,坐标中心点在(100,100).矩形的长宽都为200.左上角坐标为(100,100).我们常用的模式有:SRC_IN:取两层交集部分,交集内容取决于上层,用于遮罩,改变图片
2017-05-26 16:45:25
554
原创 View类属性
View:实现布局旋转(静态布局放置会用到,与动画要区分):android:trasformPivotX设置旋转中心的X坐标,注意要加上dp,px等单位。android:trasformPivotY设置旋转中心的X坐标android:rotation写数字就行了。一周为360android:contentDescription主要功能就是为视力有
2017-05-26 16:42:12
556
原创 TextView相关知识点
(1)TextView单行滚动显示代码如下:代码中设置singleLine单行显示,ellipsize跑马滚动,marqueeRepeatLimit滚动次数focusable,focusableInTouchMode焦点为true,实测两项都要加上,如果不加上focusableInTouchMode无效。TextViewandroid:i
2017-05-26 16:31:17
463
原创 Fragment相关知识点学习
(1)Fragment生命周期(2)Fragment学习总结静态添加:静态添加比较容易,自定义Fragment后。在res/la
2017-05-26 16:00:57
557
原创 BroadcastReceiver相关知识点学习与应用
(1)注册广播:动态注册,静态注册动态注册:需要IntentFilter对象与自定义的Receiver对象。IntentFilter对象需要addaction,category,data。Receiver对象要重写onReceive(Contextcontext,Intent intent)方法。在Activity的onCreate方法里注册广播(registerRecei
2017-05-26 15:54:26
459
原创 Activity相关知识点与应用
(1)ActivityCollector统一管理活动,可以一次性finish。publicclass ActivityCollector { privatestatic List activities=new ArrayList();publicstatic void addActivity(Activity activity){ activities.add(acti
2017-05-26 15:37:23
477
原创 事件分发机制学习
(1)事件分发机制学习只要触摸了屏幕,就会触发dispatchTouchEvent,并且从布局的底层往上执行。也就是最底层的ViewGroup往最顶层的view的手势事件分发。View的dispatchTouchEvent方法publicboolean dispatchTouchEvent(MotionEvent event){if(mOnTouchListener=null&
2017-05-26 15:11:35
395
原创 GridView学习
(2)GridView学习总结GridView使用上和ListView十分相似。GridViewmGridView=(GridView)findViewById(R.id.gridview);CustomAdaptermAdapter=newCustomAdapter(MainActivity.this,R.layout.item,List);mGridView.setAdaper
2017-05-26 15:02:07
439
原创 android常用缩写
(1)代码规范,常见控件的缩写等。button---btndialog---dlgicon---iccolor---claverage---avg//平均的background---bgbuffer---bufcontrol---ctrldelete---deldocument---docerror-errescape-esc //原来键盘左上角
2017-05-26 15:00:07
4490
原创 Preference相关学习
(1)Preference类学习javacode:importandroid.content.SharedPreferences;//先获取SharedPreferences对象,获取这个对象有三种方法。//第一种方法是PreferenceManager类的抽象方法,获取到的是通过Android的偏好管理器来获取其所管理的preferences。只有第一种方式可以获取到res/xm
2017-05-26 14:54:47
651
原创 AlertDialog相关学习
(1)AlertDialog学习总结常用方法:setTitlesetMessagesetCancelablesetPositiveButtonsetNegativeButton可以把AlertDialog理解成三部分,title,content,buttontitle也就是标题:对应的方法有setTitle(Stringtitle),setCustomTitle(V
2017-05-26 14:44:46
630
原创 git学习
(1)git fetch 将某个远程主机的更新,全部取回本地。git fetch:相当于是从远程获取最新版本到本地,不会自动mergegitpull:相当于是从远程获取最新版本并merge到本地 (2)git add gitadd -A 保存所有的修改gitadd . 保存新的添加和修改,但是不包括删除gitadd -u 保存修改和删除,但是
2017-05-26 14:33:38
380
原创 Animation,Animator学习
(1)Animation动画类学习总结AlphaAnimation,TranslateAnimation,ScaleAnimation,RotateAnimation.,,,透明度,位移,缩放,旋转AlphaAnimation设定开始和结束的alpha值,float类型,0.0f到1.0f。TranslateAnimation,设定4个,开始与结束的x,y坐标。注意,这里不是绝
2017-05-26 14:22:53
666
原创 Matrix矩阵类的学习总结
(1)Matrix矩阵类的学习总结实例:MatrixmMatrix=new Matrix(); mMatrix.postTranslate(intx,int y); ImageViewmImageView=(ImageView)findViewById(R.id.xxx);mImageView.setImageMatrix(mMatrix);上例实现在图片在所在
2017-05-26 14:20:15
951
原创 Button相关学习
(1)自定义按钮res/drawable目录下新建xml文件<?xmlversion="1.0" encoding="utf-8"?> android:state_window_focused="false"android:drawable="@drawable/rrr"/>android:state_pressed="true"android:draw
2017-05-26 14:17:36
648
原创 Eclipse学习
(1)eclipse常用快捷键必须掌握的:ctrl+shift+O:自动导入所需要的包alt+/:提供内容的帮助xml和javacode中都用到F4:查看类结构(显示类,方法等的继承结构,包含的所有的方法,常量等)。比较常用的:Ctrl+1:快速修复(最经典的快捷键,就不用多说了)ctrl+/:为当前行或者所选行添加注释,取消注释。例如// int a = 5;
2017-05-26 14:05:43
800
原创 资源文件初学
(1)同一个包具体含义classA在dir1/dir2/dir3下,而classB在dir1/dir2下,虽然都是dir2下,但是不是同一个包。判断是否在同一个包下最好的方法是查看源文件package关键字后面跟的包名是否完全一致。 (2)string.xml中需要注意的地方<?xmlversion="1.0" encoding="utf-8"?> ResTes
2017-05-26 14:00:11
507
原创 Android.mk学习
1.LOCAL_PATH:= $(call my-dir)必须有Android.mk必须以LOCAL_PATH变量开始,它用于在树中定位文件。宏功能my-dir是buildsystem提供的,用于返回当前目录路径。2.include$(CLEAR_VARS)必须有CLEAR_VARS是buildsystem提供的变量。这个功能会清理掉所有以LOCAL_开头的内容(除了LOC
2017-05-26 13:46:54
727
2
原创 Android.content.Intent学习心得
启动活动:方法1:Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent);方法2:Intent intent = new Intent();intent.setClass(FirstActivity.this, SecondActivity.class);start...
2016-07-16 11:30:22
4801
AndroidStudio_jar_aar_aidl_demosAll
2018-10-16
安卓仿小米计算器源码 UI
2017-06-20
资源修改标题和积分后不通过
2021-12-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人