![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
移动开发综合
文章平均质量分 71
淡淡的宁静
非宁静无以致远,非淡泊无以明志
展开
-
apk获取system权限及root权限
获取system权限:1.在manifest的manifest标签中加入属性:android:sharedUserId="android.uid.system" 同一个uid可以像在同一进程一样可以互相访问资源,拥有同样的权限,但是必须使用相同的密钥签名2.在Android.mk中加入LOCAL_CERTIFICATE := platform 指定LOCAL_CERTIFIC原创 2018-01-09 16:41:27 · 5639 阅读 · 0 评论 -
OpenGL笔记(一)
坐标系问题:openGL的坐标系,这个是openGL的二位坐标系(而不是手机屏幕的坐标系),openGL的二位坐标系是把一个显示器屏幕看作是一个归一化设备,就是宽高为2的显示平面,openGL坐标以屏幕中心为原点,x为向右为正,y为向上为正。各个角的坐标如下图所示。而Android设备屏幕的坐标系实际是以左上角为原点,x向右为正,y向下为正。基于以上的差别,所以在使用open...原创 2017-01-09 21:34:00 · 2440 阅读 · 1 评论 -
wifi连接-密码正确但连接时supplicant state返回的是ERROR_AUTHENTICATING----Android M 6.0
scan执行时间较长,而切换ap比较快,会导致底层和上层的状态不sync, 而出现此问题, 分析如下:1. scan期间处理connect 请求,由于scan时间较长,connect pending. 06-05 10:00:51.155156 10210 10210 D wpa_supplicant: wlan0: Add radio work 'connect'@0x7fb3add14...原创 2018-07-31 16:37:29 · 2628 阅读 · 1 评论 -
拨打和挂断普通电话与紧急电话
紧急电话和普通电话使用的ACTION不一样。拨打前检查有无sim卡。TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if(manager.getSimState() == TelephonyManager.SIM_STATE_READY){ ...原创 2018-08-08 16:38:21 · 886 阅读 · 0 评论 -
如何优化您的 Android 应用 (Go 版)
转自:https://blog.csdn.net/jILRvRTrc/article/details/80809725在去年的 Google I/O 大会上发布了 Android (Go 版),其目标是为全球入门级设备提供高质量的智能手机体验。在今年早些时候,6 家原始设备制造商在移动世界大会上宣布了他们的设备,并且更多的原始设备制造商将致力于构建新的 Android (Go 版) 设备...转载 2018-08-16 09:49:24 · 779 阅读 · 0 评论 -
Launcher2分析-加载和绑定AllApp列表
上篇关联博客:Launcher2分析-加载Workspace数据和绑定Android应用列表的视图就在launcher.xml中,也就是说应用列表视图一开始就已经加载好了,只是没有显示出来,属性为invisible,它是和Workspace在同一个viewgroup中。id为apps_customize_pane,实际类型为com.android.launcher2.AppsCustomizeTa...原创 2018-05-04 22:31:45 · 960 阅读 · 0 评论 -
多个应用连接wifi热点的切换问题--WifiConfiguration的添加--Android M
一、版本适配问题。在Android6.0上,APP无法更新系统保存过的、不是由当前APP创建的WIFI配置。1、现象: 在测试过程中,发现了一个bug。场景是:在Android6.0的机器上,连接一个系统保存过的wifi,输入了正确的密码后,却始终无法连接成功,即updateNetwork始终返回-1.2、分析: 首先简要说一下wifi的连接过程。我们使用系统api对当前要连接的wif...转载 2018-05-08 21:58:49 · 3681 阅读 · 0 评论 -
Launcher2分析——桌面(WorkSpace)图标拖拽
相关博客:Launcher2分析-Launcher,DragController,DragLayer,Workspace,HotSeat,CellLayout,之间的关系长按图标触发进入拖拽模式:在Launcher#setupViews()为WorkSpace绑定了onLongClickListener。所以从Launcher#onLongClick()开始:Launcher#onLongClic...原创 2018-03-27 22:20:37 · 851 阅读 · 0 评论 -
fota升级失败小结(recovery.cpp)
1.查看升级成功和失败的recovery的log,在/cache/recovery/last_log2.用sourceinsight导入/bootable/recovery,根据log,全局搜索。逐步分析3.有些没有的方法可能存在/system或者/bionic下。4.如果没有想要的,可以用串口去在recovery期间抓取完整的log,但是串口不是usb,需要拆开机器去焊接引出几根串口线,...原创 2019-06-12 13:47:17 · 4721 阅读 · 0 评论 -
Wifi连接隐藏SSID及wifi主要广播的处理
private void confirmToJoin(WifiConfiguration config, WifiManager.ActionListener saveListener, WifiManager.ActionListener connectListener){ backupId =mWifiManage...原创 2019-06-12 13:47:35 · 8303 阅读 · 8 评论 -
Wlan学习—无线网络安全
WPA/WPA2企业和个人用法的简单公式如下WPA-企业=802.1X+EAP+TKIPWPA2-企业=802.1X+EAP+CCMPWPA-个人=PSK+TKIPWPA2-个人=PSK+CCMP其中EAP和PSK是用于身份验证的,就是建立真正连接需要的密钥,也代表了这个身份验证的过程,就是说EAP在认证方面是更加健全的,如果使用PSK,那么这个AP更容易被侵入或者破解,而使用EAP,...原创 2018-02-06 16:28:55 · 5886 阅读 · 1 评论 -
Wlan学习—wpa_supplicant
WPAS几个重要的命令:·ADD_NETWORK:为WPAS添加一个新的无线网络。它将返回此新无线网络的ID(从0开始)。注意,此network id非常重要,客户端后续将通过它来指明自己想操作的无线网络。·SET_NETWORK:network id是无线网络的ID。此命令用于设置指定无线网络的信息。其中variable为参数名,value为参数的值。·ENABLE_NETWORK:原创 2018-02-06 18:22:41 · 2418 阅读 · 0 评论 -
客制化知识小结--device目录下的文件解析
老罗的文章:http://blog.csdn.net/luoshengyang/article/details/18928789 http://0xcc0xcd.com/p/index.php(进击的程序员)vendorsetup.shadd_lunch_combo full_yyd8163_tb_m-engadd_lunch_combo ful...原创 2019-06-12 13:47:49 · 3436 阅读 · 0 评论 -
Android预置Apk方法
因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅。一、预置apk方法Case 1:如何将带源码的APK预置进系统在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen ...转载 2018-03-30 10:34:17 · 2417 阅读 · 1 评论 -
SettingsProvider存储键值对的地方和新老版本的区别和就兼容方式
旧版是使用数据库管理,数据库的名字是settings.db。而在新版本上,不知道是哪个版本开始的,至少Android6.0已经是这样了,键值对放到xml文件中管理了。分别是: private static final String SETTINGS_FILE_GLOBAL = "settings_global.xml"; private static final...原创 2018-10-17 17:18:24 · 1244 阅读 · 0 评论 -
Android 6.0 Overview Screen实现原理(Recent Screen)
Android 4.0中添加了一个很有用的特性,那就是overView Screen功能,也就是最近任务预览功能。这个功能提供了一个列表试图,方便用户简单快捷地了解到最近使用的app或者最近进行的任务。这个功能和iOS的最近任务在界面上很相似。在android 5.0中,这个任务得到了进一步的加强,在android 5.0之前overView Screen中显示的任务快照是不可以配置的,但是在an...转载 2018-11-22 11:40:11 · 790 阅读 · 0 评论 -
Activity style 取消和显示ActionBar
<item name="android:windowActionBar">true</item><item name="android:windowNoTitle">false</item><!--<item name="windowNoTitle">true</item&am原创 2018-12-05 13:43:11 · 1508 阅读 · 0 评论 -
DataBinding入门完整教程
DataBinding,2015年IO大会介绍的一个框架,字面理解即为数据绑定。由于一般的开发过程中,Activity既需要做实现网路请求的代码,又需要实现界面的渲染/用户之间的交互,如果一个页面的功能更为复杂 对后期的项目维护更加艰难。因此,推出该框架有利于简化功能模块 尽量将界面的渲染/用户交互的功能分化在单独的模块中。一个案例简单入门举个例子,我们想对某个文本控件设置显示文本,首先要通...转载 2019-03-06 23:43:20 · 962 阅读 · 0 评论 -
需要动态申请的权限和普通权限
权限分为两种:第一种就是危害不大的,比如手机振动权限,这种权限是用户在安装程序的时候添加的,和之前请求权限是一样的,没有任何变化,就是在清单文件中添加相关的权限,这些权限我简单的列了出来: android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE...转载 2019-03-14 17:11:23 · 2804 阅读 · 0 评论 -
Android Bitmap的常用压缩方式
一、前言已经好久没有更新博客,大概有半年了,主要是博主这段时间忙于找工作,Android岗位的工作真的是越来越难找,好不容易在广州找到一家,主要做海外产品,公司研发实力也不错,所以就敲定了三方协议。现在已经在公司实习了一个月多,目前主要是负责公司某个产品的内存优化,刚好就总结了一下Android Bitmap常用的优化方式。Android中的图片是以Bitmap方式存在的,绘制的时候也是B...转载 2019-03-11 12:35:17 · 1083 阅读 · 0 评论 -
窗口尺寸,屏幕尺寸,导航栏高度,状态栏高度
注意:布局窗口是在handleResumeActivity中完成的,但是是先调用onResume再布局窗口的,所以在onResume中获取尺寸是不行的。获取屏幕尺寸: public void onClick(View v) { Rect r = new Rect(); //不包括导航栏和状态栏。是相对于屏...原创 2019-03-07 22:11:15 · 2196 阅读 · 0 评论 -
AsyncTask及FutureTask#get()方法的实现
1.使用的是SerialExecutor封装ThreadPoolExecutor,该成员是static,使派发到SyncTask的任务使串行的。2.doInbackground在线程池的线程中执行3.而onPreExecute在调用SyncTask#execute的线程执行4.onPostExecute在主线程中执行,因为是通过handler把任务结束的消息及结果对象传到其他线程的,通...原创 2019-04-28 19:08:11 · 1913 阅读 · 0 评论 -
Android中使用limit子句--SQLite
SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。语法带有 LIMIT 子句的 SELECT 语句的基本语法如下:SELECT column1, column2, columnN FROM table_nameLIMIT [no of rows]no of rows,是0-base下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法...原创 2019-06-20 15:05:48 · 1903 阅读 · 0 评论 -
超详细!ActionBar使用详解
转自:https://www.cnblogs.com/mjsn/p/6150824.html一、ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和menu,在程序运行中一直置于顶部,对于Android平板设备来说屏幕更大它的标题使用Action...转载 2019-06-04 20:34:18 · 25773 阅读 · 1 评论 -
ActionMode 就记这么一点,不能更多了
转自:https://www.cnblogs.com/joy99/p/6343237.html# 话说程序猿都是段子手,看到有的程序猿写文章,前面都会先写一个段子,我这么有幽默感的段子手,也决定效仿一下。 “段子。” 写完段子,下面开始进入正题。 今天要说的 ActionMode 是 Android 提供的一种实现菜单方式。Androi...转载 2019-06-04 20:44:47 · 654 阅读 · 0 评论 -
JDK和Android中设计模式的典型应用(持续更新中)
创建型模式单例模式:Runtime,Application工厂方法:Collection#iterator()抽象工厂:无建造者模式:AlertDialog$Builder原型:Object#clone(),Cloneable。结构型模式装饰者模式:BufferedInputStream,InputStream,FileInputStream组成。...原创 2019-03-03 15:25:27 · 267 阅读 · 0 评论 -
Spinner的实现
1.dropdowm mode:使用的是ListPopupWindow:设置ListPopupWindow的ListView的OnItemClickListener:public DropdownPopup( Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) ...原创 2019-03-08 14:22:34 · 234 阅读 · 0 评论 -
SparseArray的优缺点及适用的应用场景小结
SparseArray的实现简介:使用两个数组保存键值对,mKeys:int[]和mValue:Object[]。成员介绍:mSize:是指mKeys中实际使用的到的长度。DELETE:Objcet 用于填充被remove的值。首先是使用mKeys[0],此时mSize=1。然后插入一个数,小于mKeys[0]的,那么此时要将mKey[0]向后移一位(需要使用system#ar...原创 2018-12-13 11:01:05 · 2452 阅读 · 1 评论 -
如何正确申请SYSTEM_ALERT_WINDOW的权限
1.在清单中声明权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 1这一步至关重要2.判定是否拥有权限//检查是否已经授予权限if (!Settings.canDrawOverlays(this)) { //若未授权则请求权限} 1 ...转载 2019-02-16 15:34:25 · 2832 阅读 · 2 评论 -
Android获取状态栏、标题栏、ActionBar以及屏幕的高度
一、屏幕高度和宽度获取方法int screenWidth,screenHeight; WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); screenWidth = display.getWidth(); screenHei...转载 2019-02-16 15:42:10 · 616 阅读 · 0 评论 -
Android setSystemUiVisibility详解
简介本文主要讲解setSystemUiVisibility方法中的参数各个属性标志对应的用法和实际效果。主要讲解的标志有: - SYSTEM_UI_FLAG_LOW_PROFILE- SYSTEM_UI_FLAG_HIDE_NAVIGATION- SYSTEM_UI_FLAG_FULLSCREEN- SYSTEM_UI_FLAG_LAYOUT_STABLE- SYSTEM_UI...转载 2019-02-24 23:49:55 · 3387 阅读 · 0 评论 -
Dialog 宽度占满全屏
转载自:https://blog.csdn.net/sydmobile/article/details/83588708Dialog 宽度占据全屏关于如何自定义设置 Dialog 的大小,以及如何让宽度占满整个屏幕,其实是一个老生常谈的内容了,特别是对于很多新手来说。关于这方面的内容网上一搜一大把。我也看了一下,大多数是互相抄袭。来来回回就是那么几句代码。真实的运行结果往往并不是占满屏幕。...转载 2019-02-19 18:53:06 · 5061 阅读 · 0 评论 -
自定义窗口动画
自定义窗口进入动画:Animation Resources xml动画资源语法:https://developer.android.google.cn/guide/topics/resources/animation-resource#translate-element在xml中定义View animation,文件名为floating_window_enter.xml:<se...原创 2019-03-04 22:35:58 · 372 阅读 · 0 评论 -
android Region类介绍
Region意思是区域,范围.先了解有啥api给我们使用,然后每个api啥意思,我们就可以根据这个做出我们想要的效果出来,自定义view学习一般是这样的吧,至少个人是这么认为的.构造函数:public Region() { this(nativeConstructor());}/** Return a copy of the specified region*/publi...转载 2019-02-25 21:20:21 · 1219 阅读 · 0 评论 -
Android使用GUI时一些有用的方法
//在调用contentView的layout()方法时,该监听器会被调用contentView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top,...原创 2019-03-05 16:20:48 · 459 阅读 · 0 评论 -
Theme、Style、attr、declare-styleable
Theme或者Style中(或者说Android中其他xml资源使用的属性)的属性都是一样的,首先都需要定义<attr name="" format="reference|dimension|color|boolean|float|integer|fraction"/>。可以在单独一个attr中定义,也可以一个<declare-styleable/>tag包含多个at...原创 2019-02-20 23:54:55 · 3317 阅读 · 1 评论 -
第一次分析系统问题(重启)-小结备忘
本次问题在kernel Log中没有找到任何有用的线索1.在ZZ_INTERNAL文件中找到:Kernel (KE),0,0,99,/data/core/,0,,KE at __schedule_bug+0x98/0xd8,Wed Dec 6 17:55:16 CST 2017,1可以确定可能内核代码有关,即驱动代码2.使用GAT打开mtklog\aee_exp_backu...原创 2019-06-12 13:46:13 · 2741 阅读 · 0 评论 -
使用WindowLayoutParams要注意的地方
WindowManager.LayoutParams(int _type, int _flags),而ViewGroup.LayoutParams(int width, int height);还有uses-permission和permission是不一样的,在设置权限的时候要分清了。原创 2016-11-30 21:40:40 · 594 阅读 · 0 评论 -
MediaRecorder start failed:-38--单路录音和多路录音
最近在学习Android 录音方面的知识,发现在部分手机正常运行的APP,在华为平板上挂了,eclipse的Logcat显示MediaRecorder start failed:-38。查了下资料,原因是我的APP在编码时使用了多路录音,而调试用的华为平板在硬件上只能单路录音,不支持多路录音。目前mtk的75,15,77,17平台硬件上只支持单路录音,不支持多路录音,后续89平台在这块已经做了改进转载 2017-02-17 15:27:43 · 1836 阅读 · 0 评论 -
播放音乐处理来电和挂电问题
电话监听请看http://blog.csdn.net/b1480521874/article/details/54692558音频焦点用法请看http://blog.csdn.net/b1480521874/article/details/54669032注意一个问题:就是有可能先收到挂断的广播再收到重获音频焦点,也有可能先重获了音频焦点再收到挂断的广播。而要挂断且获得了音频焦点才原创 2017-02-17 15:43:34 · 1170 阅读 · 0 评论