Android
文章平均质量分 69
安歌_claire
致虚极,守静笃
展开
-
adb授权读写权限无效
adb授权读写权限原创 2022-04-24 16:55:38 · 4337 阅读 · 0 评论 -
OnTrimMemory
onTrimMemory介绍OnTrimMemory 回调是 Android 4.0 之后提供的一个API,主要作用是提示开发者在系统内存不足的时候,通过处理部分资源来释放内存,从而避免被 Android 系统杀死。OnTrimMemory回调Android系统会根据不同等级的内存使用情况,调用OnTrimMemory函数,并传入对应的等级:(1)app运行时回调参数TRIM_MEMORY_UI_HIDDEN表示应用程序的所有UI界面被隐藏了,即用户点击了Home键或者Back键导致应用的UI界原创 2021-02-24 15:50:38 · 2870 阅读 · 0 评论 -
Android进程保活
Android进程保活主要包括以下两个方面:(1)Android进程优先级提高(2)Android进程被杀之后拉起复活Low Memory KillerAndroid系统会依据系统资源和进程优先级(oom_adj)对进程进行回收,这即是Low Memory Killer规则。进程的优先级进程的优先级(oom_adj),划分5级:前台进程(Foreground process)可见进程(Visible process)服务进程(Service process)后台进程(Backgroun原创 2021-02-24 14:56:29 · 689 阅读 · 0 评论 -
元素定位uiautomatorviewer
uiautomatorviewer是由Android-sdk提供的一个元素定位器,本文将简单介绍此元素定位器的使用。uiautomatorviewer的作用获取需要测试app组件的resid,结合Android提供的accessibilityservice,可以实现对目标app的自动化测试。自动化测试思路:(1)adb命令发起广播传播一些参数,比如微信登陆所需的账号密码adb shell am broadcast–ez chp true --ez cht true–es wechatId {账原创 2021-02-08 14:57:12 · 492 阅读 · 0 评论 -
布局优化
目录includemergeviewStub注意viewStub的使用示例include将指定布局文件加载到当前布局文件注意:必须要复写android:layoutwidth和android:layoutheight属性才能使用其它属性,比如:android:layoutgrivity、android:layoutalign…、android:id等建议将给include标签调用布局设置宽高、位置、ID等工作放在调用布局的根标签中,这样可以避免给include标签设置属性不当造成的各种问题,给in原创 2021-01-22 11:24:25 · 168 阅读 · 1 评论 -
android点击home键再点击app图标返回原先的activity
问题在进入app一般进入登陆界面,登录界面设置的启动模式为singleTask,即是每次启动登录界面时,如果在栈中没有实例,则直接在栈顶创建一个新的实例;如果栈中已经存在实例,则将其上其他activity清除,将其至到栈顶位置复用。这种启动模式下导致问题:通过登录界面进入A界面,在A界面按home,重新点开app发现返回是登录界面而非A界面。原因进入应用:h-a1-a2回退home界面:h-a1-a2-h重新点击应用:h-a1h是home界面,a1是应用登录界面,a2是应用任意一个子界面解决原创 2021-01-15 11:34:49 · 1383 阅读 · 1 评论 -
RecyclerView下拉刷新与上拉加载
SwipeRefrshLayoutGoogle官方更新的一个Widget,可以实现下拉刷新的效果。setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器setRefreshing(boolean):显示或者隐藏刷新进度条isRefreshing():检查是否处于刷新状态setColorSchemeResources():设置进度条的颜色主题,最多设置四种,以前的setColorScheme()方法已经弃用了。RecyclerView+SwpieRefr转载 2021-01-13 15:53:13 · 1857 阅读 · 0 评论 -
Camera+MediaCodec+ffmpeg实现视频录制
架构设计原设计架构:调用系统Action属性打开手机相机,进行视频录制操作;使用ProjectApplication.activity.startActivityForResult()回调方式获取录制视频文件;利用callback机制回传获取录制视频文件到界面,进行数据上传和UI更新操作。原设计架构存在问题:上传视频后存在颜色失真的问题,这个现象的原因是Camera录制的YUV像素数据,没有进行视频格式压缩和封装,直接转为mp4格式文件存储,视频格式并未改变为mp4,则上传平台后存在颜色失真的现象原创 2020-12-17 14:53:54 · 1769 阅读 · 1 评论 -
MPAndroidChart绘制柱形图、饼状图
目录导入依赖柱形图BarChart柱形图布局文件BarChart的使用初始化BarChart获取数据多柱形图的展示饼状图饼状图布局文件初始化PieChart获取数据展示饼状图导入依赖在Android项目的gradle文件中导入依赖,代码如下repositories { maven { url 'https://jitpack.io' }}dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'原创 2020-11-17 11:38:28 · 379 阅读 · 0 评论 -
树型视图构建
UI视图效果如下以下是展示树型视图的xml文件和dialog界面public class DataCollectCreateAreaDialog extends DataCollectBaseDialog { private RelativeLayout rlArea; @BindView(R.id.btn_data_collect_area_confirm) Button btnConfirm; private Map<String, Object>原创 2020-10-26 16:46:00 · 260 阅读 · 0 评论 -
https+retrofit实现多文件上传
okhttp、retrofit初始化自定义安全套接字socketpublic class Tls12SocketFactory extends SSLSocketFactory { private static final String[] TLS_SUPPORT_VERSION = {"TLSv1.1", "TLSv1.2"}; final SSLSocketFactory delegate; public Tls12SocketFactory(SSLSocketFact原创 2020-10-26 16:01:39 · 220 阅读 · 0 评论 -
录制视频
目录获取权限回传数据UI更新系统自带摄像机录制MainActivity回调工具类获取文件路径类视频源数据回传类获取权限PermissionUtils检查并获取权限,主要是对内存的读写、摄像头权限获取。public static boolean DeniedPermission(Context context, String permission) { return ContextCompat.checkSelfPermission(context, permission) == Pac原创 2020-10-23 14:50:04 · 124 阅读 · 0 评论 -
自定义RecyclerView.Adapter
自定义显示子项在ViewHolder中定义recyclerView列表中每个显示子项的具体样式布局文件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/ap原创 2020-10-22 17:15:28 · 336 阅读 · 1 评论 -
获取本地音视频文件
打开本地文件所在目录// 获取本地音频public static void openAudioManager(Context context) { PermissionUtils.WriteStoragePermissionRequest(context); Intent mIntent = new Intent(Intent.ACTION_GET_CONTENT); //系统调用Action属性 mIntent.setType("audio/*"); /原创 2020-10-22 16:56:08 · 2641 阅读 · 0 评论 -
dialog置底部显示
BaseDialog定义public abstract class BaseDialog extends Dialog { protected Context context; protected Unbinder unbinder; protected View view; public BaseDialog(@NonNull Context context) { super(context); this.context = conte原创 2020-10-22 16:28:01 · 600 阅读 · 0 评论 -
ViewPager+Fragment+MagicIndicator实现多子界面带导航栏滑动
MagicIndicatorViewPager 指示器框架 —— MagicIndicator简单使用示例添加依赖dependencies { compile project(':magicindicator')}在布局文件中添加MagicIndicator<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/an原创 2020-10-22 16:07:55 · 1720 阅读 · 2 评论 -
findViewById报错空指针异常
问题在使用findViewById获取的组件为空,在注册点击事件报错空指针异常原因在当前Activity或fragment绑定的xml不是获取组件的root view,比如在一个fragment中有很多include,直接在fragment中获取include布局中组件则会报错空指针异常。解决当在xml中引用include标签时,如果要通过findViewById去获取include标签里面的控件,那就必须先获得include里面的根布局root,再通过root.findViewById()去获原创 2020-10-20 15:49:55 · 1485 阅读 · 0 评论 -
ToolBar使用总结
目录toolbarstyle配置toolbar布局NavigationIconNavigationIcon常用方法具体使用titleMenumenu的创建menu点击事件menu不同状态时操作menu菜单图标+标题同时显示fragment使用menu菜单style的配置style的基本配置app:theme & app:popupTheme修改toolbar的字体修改menu的字体颜色修改menu显示位置toolbarstyle配置 <style name="toolbar">原创 2020-10-20 15:44:16 · 1402 阅读 · 1 评论 -
BottomNavigationView3个以上图标不显示文字
问题当BottomNavigationView设置的菜单中超过三个图标时,出现只有焦点聚集到图标时才会显示底部设置的文字描述,当没有焦点聚集则只显示图标,效果如下:解决办法设置labelVisibilityMode值如果BottomNavigationItemView类并没有setShiftingMode方法进入到BottomNavigationMenuView类中查看onMeasure方法,发现这个版本中判断方法已经改为isShifting由isShifting方法可见,当labelVi转载 2020-09-28 15:20:31 · 916 阅读 · 0 评论 -
BottomNavigationView设置底部图标切换
系统默认设置BottomNavigationView 默认底部其实是一张图片与颜色的切换,下面是系统自带的设置<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@d原创 2020-09-28 14:36:48 · 2350 阅读 · 1 评论 -
隐私协议&授权访问的实现
交互逻辑用户首次下载打开apk,先弹出用户隐私协议的确认框,如果不同意则进入再次确认的弹窗,如果仍旧不同意则直接退出应用;从再次确认的弹窗点去同意,又再次回到用户隐私协议的确认框;如果用户同意隐私协议,则弹出开启权限的弹窗,选择是否开启权限;进入用户登录界面,在此用户可以查看详细的隐私协议,并提示用户如果登录注册,则表示同意隐私协议的内容。隐私协议的实现隐私协议主要分为隐私协议确认弹窗、再次确认弹窗、使用协议&隐私政策弹窗、使用协议弹窗、隐私政策弹窗界面实现,以及业务交互逻辑。隐私协议原创 2020-09-22 17:00:37 · 7122 阅读 · 0 评论 -
Android ConstraintLayout 使用
Android ConstraintLayout 使用ConstraintLayout 是什么?约束属性倾向(Bias)垂直方向偏移Visibility 属性控件GONE的margin尺寸约束控件尺寸约束比例宽高都被约束链条样式GuidelineConstraintLayout 是什么?ConstraintLayout 能够灵活地定位和调整子View的大小,子 View 依靠约束关系来确定位置。在一个约束关系中,需要有一个 Source(源)以及一个 Target(目标),Source 的位置依赖于原创 2020-09-08 16:51:54 · 230 阅读 · 0 评论 -
ScrollView嵌套LinearLayout内容展示不全
解决方案布局替换将嵌套TextView,ImageView等这些组件的根布局ConstraintLayout替换为LinearLayout。底部边距给ScrollVIew里边的LineaerLayout添加底部边距,一般设置的高度可以参照界面顶部title栏的高度,目前title栏高度为110dp,设置LineaerLayout底部边距paddingBottom=“110dp”...转载 2020-09-08 15:22:28 · 684 阅读 · 0 评论 -
IPV6功能
如何判断终端是否实现IPV6功能?联网终端实现以IPV6协议接入网络,包括DHCP、PPOE、IPOE、LAN具体体现:有线方式成功接入网络之后,能够返回IPV6的信息,如IP地址,DNS地址,默认网关等信息。DNS解析终端向DNS服务器请求资源,DNS服务器下发IPV6地址,终端能解析IPV6地址,从而获取到请求返回的资源,如图片、TS流等。IPV6请求终端播放器能主动向DNS发起TS流请求,DNS返回地址,终端对地址进行解析得到IPV6地址,终端用IPV6地址再次向DNS发起请求,得到T原创 2020-07-29 14:18:03 · 549 阅读 · 0 评论 -
华为手机上高德sdk定位不准
问题在华为手机上测试高德sdk时,发现在切换城市或默认定位当前城市时,总是返回默认定位位置北京。原因由于华为的芯片是自主研发,导致和高德sdk的接口不兼容。因此无法准确定位。高德sdk定位的逻辑在手机上操作默认定位当前城市,实现定位的代码逻辑如下:在Activity中初始化AMap,MapView,GeocodeSearch几个对象@Override public void onCreate(Bundle savedInstanceState) { super.onCr原创 2020-06-11 16:50:57 · 3347 阅读 · 0 评论 -
AS连接华为手机真机测试,无日志输出
问题电脑用usb连接华为手机,进行真机测试时,在AS中的logcat并无日志输出。但手机已经开启USB调试和转载 2020-06-11 15:57:09 · 1003 阅读 · 0 评论 -
高德地图sdk实战
显示地图显示地图并没有进行精确的定位,此时地图展示是默认定位点北京故宫附近。配置AndroidManifest.xml<!--允许程序打开网络套接字--><uses-permission android:name="android.permission.INTERNET" /><!--允许程序设置内置sd卡的写权限--><uses-permission android:name="android.permission.WRITE_EXTERNAL_ST原创 2020-06-05 15:20:23 · 639 阅读 · 0 评论 -
PopupWindow弹出时,背景视图显示的地图黑屏
可将布局页面xml中MapView替换为TextureMapView即可,PopupWindow在弹出显示时,背景视图中的地图即可正常显示。示例代码如下:<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_find_house_drawerlayout" android:l原创 2020-06-05 11:44:26 · 345 阅读 · 0 评论 -
华为机型PopupWindow跳转Activity出现黑屏或卡顿
问题在华为系列机型测试apk时,在BActivity定义的popupWindow跳转至AActivity时,出现长时间黑屏,或者ANR事件(长时间卡顿无响应)。解决在popupWindow的onDismiss()中,界面恢复时WindowManager.LayoutParams.alpha设置为1,此时将WindowManager.LayoutParams.FLAG_DIM_BEHIND标志清除,具体代码示例如下:private void showPopup(PopupWindow popupWin原创 2020-06-05 11:37:12 · 465 阅读 · 0 评论 -
Android源码编译报错:XXX already defined by YYYY
错误提示build/core/base_rules.mk:XXX: *** Y/Z/A: MODULE.B already defined by C/D. stop报错原因上面这种提示的意思是说在某个变量或者模块MODULE.B已经在目录中C/D定义了,而在目录Y/Z/A中要再次被定义所以会提示错误。总结一下,就是在上面两个目录中做了同样的事情所以引起冲突,所以出错。解决办法通过上面分析可以看出在上面的两个目录中同时定义一个变量或者模块,而我们需要做的就是比较一下上面两个目录中那个操作是需要的原创 2020-05-27 13:48:40 · 2803 阅读 · 1 评论 -
反编译apk
下载unstablegithubsourceforge运行# 进入jadx工具下的bin目录cd bin# 对apk进行反编译jadx -d out C:\Users\lxy\Desktop\gitv-android-live-2.8.78.apk# 或者jadx-gui C:\Users\lxy\Desktop\gitv-android-live-2.8.78.apk标签反编译使用格式jadx[-gui] [options] <input file> (.dex原创 2020-05-11 17:01:43 · 199 阅读 · 0 评论 -
进程保活
只需要在代码中加入如下代码即可app.curAdj = ProcessList.PERSISTENT_PROC_ADJ;具体的源码示例:原创 2020-05-11 16:06:03 · 172 阅读 · 0 评论 -
Intent的设置属性
Intent.CATEGORY_LAUNCHER因为你的程序可能有很多个activity,只要xml配置文件中有这么一个intent-filter,而且里面有这个launcher,那么这个activity就是点击程序时最先运行的那个activity。现在你只有一个activity,那么加不加就没有关系了。示例代码:Intent callme=new Intent(PhoneBackServi...原创 2020-04-08 15:48:21 · 264 阅读 · 0 评论 -
requestWindowFeature()的应用
requestWindowFeature中可以定义的参数如下FEATURE_CUSTOM_TITLE自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); // 自定义标题getWindow().setFe...原创 2020-04-03 12:06:40 · 132 阅读 · 0 评论 -
Messenger通信原理以及实现
Messenger是以串行的方式处理客户端请求,如果大量请求同时发送到服务端,Messenger就不合适。传输字段Messenger和Message都实现Parcelable接口,因此可以跨进程传输。通过Messenger传输Message,Message中使用的载体只有what,arg1,arg2,Bundle以及replyTo。另一个object字段不支持跨进程传输。实现Messenge...原创 2020-03-02 10:26:48 · 957 阅读 · 2 评论 -
Socket通信的实现
使用Socket通信需要在AndroidManifest中声明以下权限:<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />其次是不能在主线程中访问...原创 2020-03-02 10:24:28 · 407 阅读 · 0 评论 -
Received close_notify during handshake
问题存在原因:这是Android编译错误,jcenter里面的东西下载不了引起的。问题解决:在项目的build.gradle文件中将jcenter()换成阿里的源,具体示例代码如下。修改之后再重新Sync Project即可。buildscript { ext.kotlin_version = '1.3.50' repositories { google() ...原创 2020-03-02 10:22:47 · 23123 阅读 · 1 评论 -
google认证
关于ATV简介google介绍ATV详情的网址https://support.google.com/,但登陆此网站需要翻墙。公司ATV开头的wifi可以连上翻墙。Android TV=Android+GTVSATV实际上就是Android+GTVS+DRM的一系列测试。在google ATV官方网站上主要看overview(预览,介绍ATV的发展历程),Project walk thro...原创 2020-02-13 15:17:21 · 4952 阅读 · 0 评论 -
apk安装
apk签名打包apk在AS中Build->Build Bundles/APKs->Build APK,将项目打成apk包。签名APK使用工具链签名apk使用MIGU签名文件中sign_apk.bat,将打包好的apk拷贝到此目录下,双击sign_apk.bat即可。java -jar signapk.jar platform.x509.pem platform.pk8 ap...原创 2020-02-13 15:15:39 · 1373 阅读 · 0 评论 -
java反射、AIDL调用PackageManage隐藏接口
PackageManage隐藏接口安装接口public abstract void installPackage(Uri packageURI,IPackageInstallObserver observer, int flags,String installerPackageName);packageURI:要安装apk的位置,可以是file或者urlobserver:当apk安装完成...原创 2020-02-13 15:12:02 · 2803 阅读 · 0 评论