
Android
HiWorNice
这个作者很懒,什么都没留下…
展开
-
Invalid row number (65536) outside allowable range (0..65535)
Excel原创 2024-09-26 09:17:48 · 1121 阅读 · 1 评论 -
多个Ativity值传递FLAG_ACTIVITY_FORWARD_RESULT
需求场景为A——>B——>C 三个跳转1.a将数据交给b处理2.b处理完数据(finish())3.b处理完数据 结果传给c来加工,c处理完把结果返回给a数据处理中间层b启动c要加上intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);FLAG_ACTIVITY_FORWARD_RESULT主要作用:如原创 2017-10-11 16:21:03 · 557 阅读 · 1 评论 -
Android BLE设置MTU大小
MTU是什么?MTU是指在一个协议数据单元中(Protocol Data Unit, PDU) 有效的最大传输Byte。MTU默认是23byte,但是供我们使用的只有20byte。所以有时候不能满足我们的需求,需要我们手动设置MTU的大小。core spec中ATT的默认MTU为23个Byte,ATT的Opcode占1个Byte、ATT的Handle占2个Byte、GATT占20个Byte。23Byte(ATT)=1Byte(Opcode)+2Byte(Handler)+20Byte(BATT)。原创 2021-10-21 18:55:28 · 7806 阅读 · 2 评论 -
error: undefined reference to
在做JNI开发时,对C/C++写的libKF.so进行JNI封装成libkftest.so时,遇到以下问题:Build command failed.Error while executing process D:\Android\sdk\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C D:\project\SDK\app\.cxx\cmake\debug\armeabi-v7a kftest}ninja: Entering dire原创 2021-04-26 16:52:10 · 2922 阅读 · 0 评论 -
android只有进入蓝牙页面才能被扫描搜索到的解决办法
在做Android蓝牙开发过程中,发现虽然设备的蓝牙和定位权限都打开了,但是扫描不到设备(除非以前配对过)。只有进入蓝牙页面,才能被扫描搜索到。这个就涉及到蓝牙的可见性,为了保护隐私默认是不可见的,需要打开蓝牙可见性,才能被别的设备扫描搜索到。目前Android的API中没有直接设置蓝牙永久可见性的接口。有一个方法可以实现,不过会弹出一个确定的窗口://启动修改蓝牙可见性的IntentIntent intent = new Intent(BluetoothAdapter.ACTION_REQU...原创 2021-01-30 10:18:10 · 2433 阅读 · 0 评论 -
android两个子线程间通信
android中主线程和子线程之间的通信是通过handler消息循环机制,主线程中的handler把子线程中的message发送给主线程中的looper,或者主线程中的handler通过post向looper发送一个runnable。looper默认存在于主线程中,子线程中是没有的。那怎么办呢?我们可以把looper绑定到子线程中,调用Looper.prepare()方法为该子线程生成looper...原创 2019-12-11 16:01:31 · 1661 阅读 · 0 评论 -
android Handler导致的内存泄露的原因及解决办法
在Android开发中,内存泄露十分常见。内存泄露:本该被回收的对象不能被回收而停留在堆内存中占用内存。这样最后可能会引起内存不足导致其他需要使用内存的对象无法获取足够的内存,进而引起内存溢出OOM。内存泄露出现的原因:当一个对象已经不再被使用时,本该被回收但却因为有另外一个正在使用的对象持有它的引用从而导致它不能被回收。这就导致了内存泄漏。Handler是我们在更新UI时经常使用到的类,但...原创 2019-11-25 13:54:59 · 1080 阅读 · 0 评论 -
java utf-8带bom格式内容(带"\uFEFF")转换成utf-8格式
从txt文件中读取一串字符串和数据库中另一串字符串比较的时候发现两串字符串一样,但是判断是否equal的时候发现返回的是false,也就是不相等。这就奇怪了,于是打印log,发现了端倪:左边的字符串是数据库的,右边的字符串是从txt文档读取的,发现右边的字符串前有个小点。把整个内容复制粘贴出来,发现那个小点又不见了:E/id===: 55cdf761d9c74874b381d24...原创 2019-11-20 16:12:55 · 5665 阅读 · 0 评论 -
android网络框架代码重构
由于技术的更新发展,新技术新框架层出不穷。如果代码没有重构或者重构的不好,会造成很多问题,比如项目中某个框架过时不能用了,如果没有重构,在项目中每个用过该框架的地方都要一一修改,如果项目小还好,如果项目很大,那改动起来工作量会很大。怎么让自己项目不因框架的更新而发生改动,或者改动很小?这就需要代码重构了。怎么进行代码重构?下面以网络框架为例,进行代码重构。首先,在项目-app下build.gr...原创 2019-11-18 16:58:48 · 301 阅读 · 0 评论 -
Android TextView带背景图片和自定义边框
TextView带背景图片和自定义边框,效果如下图:页面xml:<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ...原创 2019-11-15 10:04:28 · 1277 阅读 · 0 评论 -
BadTokenException: Unable to add window Toast Handler
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.on, PID: 5017 android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@7cdb1a7 is not valid; is your ac...原创 2019-11-07 18:19:16 · 763 阅读 · 0 评论 -
Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple
Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multiple errors, see logs错误解决方法:原创 2016-12-16 17:11:08 · 341 阅读 · 0 评论 -
Java对double值进行四舍五入,保留n位小数的几种方法。其中,只有最后2种是最准确的。
项目要对一个double值保留小数点后3位,网上找到好几种方法,选一个用在项目中,实测发现有误差,再换一种,还是会有误差。最后经过多种情况测试,发现最后一种是精确的。package com.example.testndk;import java.math.BigDecimal;import java.math.RoundingMode;import java.text.DecimalF原创 2017-01-06 10:08:50 · 16075 阅读 · 0 评论 -
Android studio打包aar文件--探索在要打包aar文件的工程里,嵌套有aar文件的打包方法(结论为不能嵌套)。生成release.aar的方法
我们写了一个项目A,要打包成aar文件,给第三方公司使用,但是我们的项目A里,用的有另外公司的aar文件。也就是aar文件里嵌套aar文件。这种情况怎么打包呢?把工程app下的build.gradle的apply plugin: 'com.android.application'改为apply plugin: 'com.android.library'并把app下的build.gradle的a原创 2017-01-10 20:54:59 · 9184 阅读 · 21 评论 -
使用JNI获取Android apk签名hashcode
最近在研究Android应用中的安全问题,貌似只有将核心代码写到JNI底层才是最安全的。通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包。所以这里的关键就是如何在JNI中获得签名。 我上网查了好多资料,都没有现成的答案,但是我慢慢的找到了一些思路,于是潜心研究,终于有了结果。不敢独享,所以过来分享给大家。 大转载 2017-07-10 17:58:24 · 3179 阅读 · 0 评论 -
使用Camera2 替代过时的Camera API
原文: http://forums.developer.amazon.com/forums/thread.jspa?threadID=4836&tstart=0 概要从5.0开始(API Level 21),可以完全控制安卓设备相机的新api Camera2(android.hardware.Camera2)被引入了进来。在以前的Camera api(android.har转载 2017-07-10 18:07:39 · 544 阅读 · 0 评论 -
android.hardware.camera2使用指南
API 21中将原来的camera API弃用转而推荐使用新增的camera2 API,这是一个大的动作,因为新API换了架构,让开发者用起来更难了。 先来看看camera2包架构示意图: 这里引用了管道的概念将安卓设备和摄像头之间联通起来,系统向摄像头发送Capture请求,而摄像头会返回CameraMetadata。这一切建立在一个叫作CameraCaptureSession的会转载 2017-07-10 18:32:59 · 1251 阅读 · 0 评论 -
拒绝无用功,封装一个通用的 PopupWindow
https://juejin.im/post/5961e03e51882568b13c3308为了避免重复造轮子,我们一般都会封装一个通用的控件,比如这次,项目中需要用到比较多的 popupwindow ,如果需要一个个写,那么依旧会累死人,而且还是无用功,无意义,所以,封装一个通用的,除了让同事看了直刷666之外,自己还省了很多事情。先上效果图:1、如何使用转载 2017-07-11 11:34:20 · 1695 阅读 · 1 评论 -
如何获取Android唯一标识(唯一序列号)
有很多场景和需求你需要用到手机设备的唯一标识符。在Android中,有以下几种方法获取这样的ID。1. The IMEI: 仅仅只对Android手机有效,对平板可能无效: //IMEI号 TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE)转载 2017-06-22 10:36:30 · 1810 阅读 · 1 评论 -
Android系统启动-SystemServer上篇
基于Android 6.0的源码剖析, 分析Android启动过程的system_server进程/frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - RuntimeInit.java - Zygote.java/frameworks/base/core/services/java转载 2017-07-11 16:33:53 · 301 阅读 · 0 评论 -
Android手机读取相册图片,根据URI获取图片路径
这几天做了一个APP,需要读取本地相册图片获取图片的路径然后再进行进一步的处理。这个需要先获取图片的URI,然后根据URI获取图片路径,根据图片路径获取图片。图片URI有两种格式,一种是file开头,一种是content开头。网上查了资料,基本都是按Android的系统去进行区分的,什么Android4.4前,Android4.4后。但是本人经过测试,发现按Android系统进行区分是无效的。原创 2017-06-22 11:34:28 · 10443 阅读 · 0 评论 -
三种Android图片压缩方法 压缩到指定大小
本文转载,本人收藏用,代码仅供参考一、图片质量压缩 /** * 质量压缩方法 * @param image * @return */ public static Bitmap compressImage(Bitmap image) { ByteArray转载 2017-07-05 11:17:44 · 22103 阅读 · 3 评论 -
android 通过uri获取bitmap图片并压缩
转载,收藏用,代码仅供参考很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下:12345Uri mImageCaptureUri = data.getData();Bitmap photoBmp = null;i转载 2017-07-05 11:20:23 · 501 阅读 · 0 评论 -
Android:支持多选的本地相册
前段时间在做一个动态发布功能,需要用到图片上传。一开始直接调用的系统相册和相机,由于系统相机不支持多选,就花点时间做了个本地相册,在此开源下。先上截图,依次为选择相册界面、相册详情界面、查看图片大图界面 相册列表按图片数量降序排序,相册详情列表按图片时间降序排序,对比了下微信和QQ的相册,读取的文件基本一致。接下来说下相册文件遍历的思路。首先肯定不会是通过文件夹逐转载 2017-07-05 11:23:22 · 3767 阅读 · 0 评论 -
ART运行时垃圾收集(GC)过程分析
ART运行时与Dalvik虚拟机一样,都使用了Mark-Sweep算法进行垃圾回收,因此它们的垃圾回收流程在总体上是一致的。但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略。不同的策略有不同的回收力度,力度越大的回收策略,每次回收的内存就越多,并且它们都有各自的使用情景。这样就可以使得每次执行GC时,可以最大限度地减少应用程序停顿。本文就详细分析ART运行时的垃圾收集过程。转载 2017-07-05 15:16:12 · 3621 阅读 · 0 评论 -
ART运行时Java堆创建过程分析
与Dalvik虚拟机一样,ART运行时内部也有一个Java堆,用来分配Java对象。当这些Java对象不再被使用时,ART运行时需要回收它们占用的内存。在前面一文中,我们简要介绍了ART运行时的垃圾收集机制,从中了解到ART运行时内部使用的Java堆是由四种Space以及各种辅助数据结构共同描述的。为了后面可以更好地分析ART运行时的垃圾收集机制,本文就对它内部使用的Java堆的创建过程进行分析。转载 2017-07-05 15:22:24 · 392 阅读 · 0 评论 -
ART运行时Compacting GC简要介绍和学习计划
在前面一个系列文章中,我们学习了Android 4.4 ART的Mark-Sweep(MS)GC。到了android 5.0,ART增加了对Compacting GC的支持,包括Semi-Space(SS)、Generational Semi-Space(GSS)和Mark-Compact (MC)三种。本文对Android 5.0 ART的Compacting GC进行简要介绍以及制定学习计转载 2017-07-05 15:27:49 · 379 阅读 · 0 评论 -
ART运行时为新创建对象分配内存的过程分析
ART运行时和Dalvik虚拟机一样,在堆上为对象分配内存时都要解决内存碎片和内存不足问题。内存碎片问题可以使用dlmalloc技术解决。内存不足问题则通过垃圾回收和在允许范围内增长堆大小解决。由于垃圾回收会影响程序,因此ART运行时采用力度从小到大的进垃圾回收策略。一旦力度小的垃圾回收执行过后能满足分配要求,那就不需要进行力度大的垃圾回收了。本文就详细分析ART运行时在堆上为对象分配内存的过程。转载 2017-07-05 15:25:24 · 302 阅读 · 0 评论 -
android.os.NetworkOnMainThreadException,Android根据图片URL加载图片
当在主线程中执行网络操作时,比如根据图片URL加载图片,会抛出NetworkOnMainThreadException这个异常。那么怎么从网络断获取图片并加载呢?使用AsyncTask:json字符串:{ "people": [ //数组,最像的50个人,按分数的降序排列 { "score": 0.63, //浮点数,相似度,0到1,越接近1原创 2017-06-27 14:36:10 · 476 阅读 · 0 评论 -
Android常用开发工具类
Android常用开发工具类Android开发中常用的的工具类集合,体积小60多KB,可以moudle依赖也可以手动打包arr导入,适合快速开发!具体内容可查看详情,和代码链接查看。应用工具类AbAppUtil代码链接读取application 节点 meta-data 信息readMetaDataFromApplication打开并安装文件 installApk卸转载 2017-06-27 14:38:58 · 313 阅读 · 0 评论 -
Android 使用fastjson解析json,java数组判断为空的方法
本例json解析使用的框架是fastjson。在app下的build.gradle的dependencies中添加compile 'com.alibaba:fastjson:1.2.21'要解析的json文件:{ "image_id": "74DulsVcu706PdIPFUGxRcUq3pyPwJEqO6PKzdin", "faces": [ {原创 2017-06-27 14:00:16 · 3666 阅读 · 0 评论 -
Android锁屏出现java.lang.RuntimeException: Camera is being used after Camera.release() was called
java.lang.RuntimeException: Camera is being used after Camera.release() was called 在相机开发中,打开相机显示预览,然后按关机键锁屏,出现上述错误,程序崩溃。 原来代码如下:@Override public void surfaceDestroyed(Surface原创 2017-07-14 14:54:44 · 5783 阅读 · 0 评论 -
android读取文件错误,权限拒绝 open failed: EACCES (Permission denied),华为手机报错
app在小米手机6.0系统上正常使用,在华为上怎么都不行,报错open failed: EACCES (Permission denied),在华为的手机管家-权限管理,给该APP添加了所有权限,还是报错。网上的方法都试了,没效果。后来试了这个方法:在调试的设备或模拟器中,App访问Storage的权限是关闭的:在设置->应用->找到并点击你的应用->权限->看到“存储”或“Storage”这原创 2017-01-10 20:47:15 · 12091 阅读 · 6 评论 -
Android camera onPreviewFrame 图片旋转问题
Android开发中调用到摄像头camera及截图。通过测试发现,调用前置摄像头的预览图和截图、调用后置摄像头的预览图和截图,参数是不一样的。调用前置摄像头:camera = Camera.open(1);camera.setDisplayOrientation(90);//正常预览。如果参数设为270度,则预览图像为倒置。onPreviewFrame()中调用bitmap原创 2017-07-31 13:26:41 · 7453 阅读 · 0 评论 -
Android APP打包和manifest文件里设置的APP图标和名称不一样及resources-release-stripped.ap_' specified for property '问题解决
这个项目有两套APP name和图标(ic_face1和旅途1,ic_face2和旅途2),经常需要进行切换打不同的包。之前没什么问题,最近打包的时候出现了问题,即在AndroidManifest.xml的application中更改为android:icon="@mipmap/ic_face2"和android:label="旅途2",在Android studio中点run按钮运行时安装到手机原创 2017-08-09 15:16:25 · 1385 阅读 · 0 评论 -
android怎么获取APP的唯一标识applicationId
最近需要一个功能,就是获取APP的唯一标识。这个就是applicationId了。由于eclipse ADT中并没有applicationId这个概念,eclipse ADT中APP的唯一标识就是AndroidManifest.xml中的包名packageName。这个坏处就是如果当初起的包名不好,要改包名,那就变成另一个APP了。Android studio中引入了gradle.buil原创 2017-08-17 11:26:40 · 42276 阅读 · 0 评论 -
Android开源库集合(控件)RecycleView、高亮控件引导、状态栏(StatusBar)、下拉刷新、ViewPager、TextView、手势锁/锁屏解锁、菜单、图表、SearchView
RecycleView:RecycleView功能增强([预加载实现、上拉加载、分组、多布局、折叠) https://github.com/CymChad/BaseRecyclerViewAdapterHelperRecycleView功能增强 https://github.com/Malinskiy/SuperRecyclerViewRecycleView转载 2017-09-26 13:50:11 · 2409 阅读 · 0 评论 -
Android经典例子ViewPager、动态换肤、Tab标签效果、Renderscript、移动地图+选址、主页滑动效果、侧滑菜单沉浸式状态栏
1. 美团Android自动化之旅-生成渠道包:http://tech.meituan.com/mt-apk-packaging.html1.1新一代Android渠道打包工具:1000个渠道包只需要5秒:http://www.finalshares.com/read-6735?f=g&n411.2美团Android DEX自动拆包及动态加载简介:http://tech.meitu转载 2017-09-26 13:57:16 · 1686 阅读 · 1 评论 -
android.os.DeadObjectException问题解决
android.os.DeadObjectException。在子线程中进行了联网操作,在联网操作中使用了ProgressDialog,然后出现了android.view.ViewRootImpl$CalledFromWrongThreadException : Only the original thread that created a view hierarchy can tou原创 2017-09-18 16:48:56 · 7151 阅读 · 1 评论 -
Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
java.lang.RuntimeException: Unable to start activity ComponentInfo{faceall.imagedivisiondemo/faceall.imagedivisiondemo.activity.CelebrityDetectActivity}: java.lang.NullPointerException: Attempt to inv原创 2017-09-01 14:12:27 · 1656 阅读 · 0 评论