自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 安卓Sqlite删除最前面的n条数据以及查询前n条数据

这里需要注意的是appId 是字段名 test_table 是表名 n是删除的行数。(是动态的,根据自己的表不同,实际情况也不同。

2023-10-27 16:36:38 270

原创 解决全屏状态下,PopupWindow弹出,导致状态栏和导航栏弹出问题。

【代码】解决全屏状态下,PopupWindow弹出,导致状态栏和导航栏弹出问题。

2023-06-28 15:09:51 597

原创 安卓解压文件乱码

解压文件中文乱码

2023-06-14 14:46:01 433

原创 安卓蓝牙BLE设备通讯发送和接受超过20个字节的问题

最近做的项目是手机端和BLE设备通讯,而BLE设备又做了限制一次包只能传递20个字节的数据,多了就得分包发送,在这里记录一下如何解决这个问题。(PS:之前链接什么的回调什么的 就不过多说了)1.发送数据包突破20个字节。主要是这一行:在发现服务的时候设置这个值,就会走后面的回调。成功之后设置设备主动通知时的回调这样当设备端数据改变时就会回调以下方法。完成以上操作就达到了每次发送数据时突破20个包的限制(并且可以接收到设备端主动发送的通知)2.手机端分包发送数据给设备端。这样就完成了每次发送

2022-06-30 15:28:11 5315 3

原创 安卓TV列表刷新时焦点自动变成第一个

最近在开发安卓TV项目,列表调用notifyDataSetChanged()方法刷新数据时,焦点自动就变成第一个子item去了,查了半天发现用notifyItemRangeChanged(0,list.size());用这个方法去刷新数据,焦点就不会乱跳了,但是出现了界面闪一下的情况,使用以下方法解决界面刷新数据时闪动的BUGrecyclerview.setHasFixedSize(true);((SimpleItemAnimator)(recyclerview.getItemAnimator())).

2022-04-28 14:20:40 587

原创 安卓TV开发遇到的那些坑

最近公司需要开发一个TV的luancher,就是那种纯物理按键的遥控,没有触摸屏,现在说说我踩得那些坑。(其实布局和代码逻辑和正常的安卓应用差不多) 1.焦点 焦点 焦点,重要的事情说三遍,安卓TV由于没有触摸屏所以需要手动设置可以获取焦点的控件。 2.设置获取到状态也就是常用的select。 3.各种事件冲突。 4.按键事件 通过重写onKeyDown(),onKeyUp()方法中监听keyCode的值,来判断用户按下的是哪个键,比如OK键 其他特殊的键值,上下左右键的话,系统会自动处.

2022-04-19 10:20:16 2323

原创 内容提供者(ContentProvider)的使用

有一说一,内容提供者这四大组件基本算是最没牌面的四大组件之一了。做了好几年的开发只听说过这个玩意,还从来没有用过这玩意。最近项目中需要用到这个组件,需求是子应用的数据存入到数据库(SQLite)中,然后主Launcher应用需要读取修改删除子应用的数据库中的数据,然后就用到了这个ContentProvider。分析需求实现步骤:1.子应用中创建SQLite数据库,建好表。2.子应用中创建好ContentProvider,并且定义好匹配的Uri。3.ContentProvider中重写对应方法,例如

2021-11-20 16:58:48 3146

原创 使用Retrofit2+rxjava上传图片 并且上传包含图片信息的json字符串。

接口文档需要传两个参数 file file(代表上传的文件) String parameter(代表图片的信息json的字符串)。在retrofit2中上传文件使用的是 @Part MultipartBody.Part file 然后图片信息的字符串是 @Part(“parameter”) RequestBody parameter(括号中的key值和文档的key值要一样)。//头像上传 @Multipart @POST("url") Observable<Base

2021-10-30 09:42:43 1632

原创 使用MediaProjectionManager进行截屏

最近项目中有用到远程截屏并上传截屏文件的需求。一开始使用的是以下方法进行截屏:private void screenshot() { // 获取屏幕 View dView = getWindow().getDecorView(); dView.setDrawingCacheEnabled(true); dView.buildDrawingCache(); Bitmap bmp = dView.getDrawingCache(

2021-09-09 20:28:58 3986 5

原创 获取最近使用应用列表

获取最近使用的应用列表需要使用到UsageStatsManager类,还需要申请允许防御应用使用情况的权限。private void getPackagesInfo() { UsageStatsManager manager = (UsageStatsManager) getApplicationContext().getSystemService(USAGE_STATS_SERVICE); List<UsageStats> stats = manager.qu

2021-09-09 17:25:04 898 1

原创 通过AccessibilityService(无障碍服务)自动在设置界面打开App所需要的对应权限

最近看到一个项目比如说需要允许访问应用权限、以及录屏等权限的时候 在手机运行的时候点击跳转至无障碍界面点击打开无障碍服务,然后调转至设置界面,然后手机就自动的一步一步的打开App所需的权限,看起来特别牛逼和智能的亚子。了解了一下发现通过AccessibilityService这个类可以完成上述需求。但是由于每款手机的设置界面是不相同的,所以需要做不同的机型判断适配机型。我的是在华为 Honor 9i(Android 9.0系统)中完成自动设置权限的功能的。关于AccessibilityService类我就

2021-09-09 16:42:11 3902 1

原创 修改Launcher3图标,给图标加蒙层或影藏图标

最近项目需求修改Launcher3的源码,需求是给图标加上蒙层。阅读源码发现图标的缓存是在com/android.launcher3/graphics目录下的LauncherIcons.java类中修改。在createIconBitmap()方法中修改之前的代码:public static Bitmap createIconBitmap(Drawable icon, Context context, float scale) { synchronized (sCanvas) {.

2021-09-09 15:56:42 773

原创 java.io.FileNotFoundException: /storage/emulated/0/ (Permission denied)

最近在做项目时保存文件时老是抛java.io.FileNotFoundException: /storage/emulated/0/ (Permission denied)异常 说什么权限不够,我在这里记录一下,权限什么的都打开了,动态权限什么的也申请了 就是抛这个异常。抛异常时的写法:1. String sdCardPath = Environment.getExternalStorageDirectory().getPath(); // 图片文件路径

2021-09-08 09:58:02 6646 1

原创 安卓后台静默拍照。

最近项目中需要后台拍照 悄悄上传至后台。public class MainActivity extends AppCompatActivity { private String[] cameraIdList; private CameraDevice.StateCallback cameraDeviceStateCallback; private TextureView mTextureView; private ImageReader mImageReader;

2021-06-09 15:45:42 560 2

原创 Launcher3二次开发修改去除抽屉,把图标展示在WorkSpace中,删除Google搜索框等操作。

导入Launcher3源码进行修改。1.删除底部Google搜索框路径:Launcher3-o-mr1/res/layout-port/search_container_hotseat原代码:<com.google.android.apps.nexuslauncher.qsb.HotseatQsbWidget xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/search_con

2021-04-28 09:50:58 1498

原创 安卓仪表盘自定义View

先上一张效果图:先分析实现方案:1.自定义属性,比如渐变色的两个色值、仪表盘下面的字、中间的刻度值等等。2.重写onMeasure()方法设置仪表盘的大小。(由于这是一个圆但是下方还有一个圆角矩形所以需要高度比宽度大那么一丢丢)3.绘制外层圆弧 固定颜色。4.绘制渐变圆弧。5.绘制下方圆角矩形(有两个矩形一个纯白色大的矩形,一个渐变色小的矩形)6.绘制背景文字。7.绘制中间的数值和百分号。8.加上动画 让值和圆弧动起来。1.自定义属性:(可以根据自己的新要求去定义)public Da

2020-12-14 15:08:02 734 2

原创 安卓TagLayout标签布局实现

最近要使用一个这样的标签流式布局,网上很多资源,自己试着自定义了一下效果图如上。实现逻辑分析:1.这是一个自定义的TagLayout肯定要继承自ViewGroup。2.要自动换行,那容器的宽和高是不固定的需要根据子View的多少的宽高来确定自己的宽高。3.继承ViewGroup肯定是要实现它的OnLayout去摆放子View的位置。大概逻辑就是以上三部,可以总结出来需要重写ViewGroup的onMeasure()和onLayout()方法。先重写onMeasure()方法:1.获取子Vie.

2020-11-03 18:08:56 1169

原创 安卓蓝牙BLE(3)

上一篇讲到连接设备,这一篇讲蓝牙设备通讯。主要用到以下几个类。BluetoothGattService:(蓝牙服务)一台蓝牙设备上最少有1个或一个以上服务。BluetoothGattCharacteristic:(蓝牙特性)一个服务里最少有1个及以上的特性。UUID:每个服务和特性都有一个特定的UUID类似于身份证号的意思。代码:在连接成功中去寻找服务:case BluetoothGatt.STATE_CONNECTED://已连接 Log.e("lee"

2020-10-27 17:01:45 869

原创 安卓蓝牙BLE(2)

上一篇写到搜索蓝牙设备,这一篇写连接设备。在onLeScan回调中把设备装到一个集合中进行展示,注意此处会出现设备被重复扫描到的现象,因为设备是不停的向外发送广播的,所以需要把重复的设备进行过滤掉。(需要注意onLeScan回调方法是在异步线程中进行的,如果需要刷新UI的话,需要到主线程中去刷新UI界面。)关于界面展示列表我就不写了。下面就是连接方法了。核心方法:connectGatt(Context context, boolean autoConnect,BluetoothGattCallbac

2020-10-27 15:22:57 151

原创 安卓蓝牙BLE(1)

最近项目中有用到和硬件手环交互的功能。手环是一个BLE手环,需要用到蓝牙技术。1.在AndroidManifest.xml中添加权限: <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name

2020-10-26 11:42:25 246

原创 安卓开发人脸识别统计人脸数

最近项目需求是统计当前摄像头中的人脸个数,安卓有提供现成的Api,最终实现效果如上图。分析思路和步奏:主要使用到的类:SurfaceView、CameraManager、CameraDevice.StateCallback、CameraCaptureSession.StateCallback。1.通过SurfaceView展示预览区。2.在SurfaceView创建成功后通过CameraManager获取当前设备可用的摄像头。3.检测摄像头权限。4.通过CameraManager打开摄像头。.

2020-10-20 11:25:47 1487

原创 统计步数,额度的圆弧自定义View

发现很多应用中都有类似于这种的自定义控件,自己撸了一个控件。1.先自定义属性来控制圆弧的带下和颜色以及中间颜色和字体大小等在res目录下的values文件夹中创建attrs.xml文件。<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="ArcStatisticsView"> <attr name="OuterLayerColor" f.

2020-10-10 17:31:01 117

原创 VideoView加自定义Controller播放视频

相信做安卓开发的一般都做过播放网络视频,大家一般都会使用VideoView去播放网络视频,还有一个Controller控制视频的暂停或者快进播放等。但是Controller的样式的话不能改就特别的丑。无法满足高端的UI体验。完成一个自定义播放控制器,以及简单的横竖屏切换功能。大概记录一下流程:1.自定义MyVideoView,为了解决有可能出现无法铺满整个屏幕而导致留白边的问题。public...

2020-04-29 15:37:40 1531

原创 安卓使用Retrofit上传图片并且还要上传中文参数

最近项目中有用到上传图片至服务器的功能。需求是进行实名认证,需要上传姓名,身份证号,以及手持身份证正反面的功能。相信做安卓开发的大家都会使用Retrofit吧。如果上传单张图片时肯定就会使用下面这种方法:@Multipart@POST("live/realauth.do")Observable<BaseResultBean<Object>> realauth(@P...

2020-04-22 14:48:56 622

原创 安卓把两个位图覆盖合成为一个位图。

最近项目中需要用到扫描二维码功能,但是二维码是动态的 背景图也是动态的 所以需要两张图片组合起来提供给用户扫描,所以需要把两张位图组合成一张位图。public static Bitmap mergeBitmap(Bitmap backBitmap, Bitmap frontBitmap) { if (backBitmap == null || backBitmap.isRecycled...

2019-10-11 15:06:44 346

原创 项目中实现摇一摇功能

安卓手机监听手机是否摇动的功能,也就是类似于微信摇一摇功能.一看好像感觉挺厉害挺难得一个功能一样,实则不然,我们知道每个安卓手机都有传感器在里面,可以监听到手机的状态.我们说的摇一摇监听,该功能就需要用到传感器.用到比较核心的几个类:SensorEventListener:传感器的监听器.SensorManager:传感器的管理器.Sensor:传感器.我们都知道一般获取某个管理器都是c...

2019-02-28 15:33:10 441

原创 安卓开发中使用自定义的键盘

上篇博客说了一下自定义键盘的一种实现方式,该方式就是需要是edittext来唤醒键盘.由于我的输入框不是edittext而是类似于支付密码的那种方框格子的控件,所有用第一种方式不好实现该功能.该方式就是写两个自定义控件一个是省份的键盘一个是数字和字母的键盘.我实现方式是一个自定义控件继承自LinearLayout,然后通过LayoutInflater加载改布局,给每个按钮添加点击事件key_...

2019-02-28 10:48:41 382

原创 安卓开发中使用自定义的键盘

最近项目中有使用到自定义的键盘,就是那种特殊的键盘,是一款输入车牌的键盘,效果图如下:完成以上效果我想到有两种实现方式:第一种就是自定义键盘,主要用到的就是Keyboard和KeyboardView两个类.这种方式的话我觉得不好的一点就是需要edittext才能唤醒键盘.第二种就是自定义两个pupopwindow或者dialog都行,这种就是在popupwindow中把按钮当成一个一个bu...

2019-02-27 18:59:56 1410 1

原创 百度地图上根据经纬度集合绘制行车轨迹

以下是素材:最近项目中用到了根据一段线路的经纬度集合来在地图上播放该车辆的行驶轨迹的需求.下面我就讲一下我实现步骤:效果图如下(因为制作gif图为了控制大小去掉了很多帧,不必在意这些细节,嘿嘿!!!):1.首先在界面上展示百度地图(这不是废话么)如果不知道怎么展示请看我之前的博客.2.初始化控件,把需要绘制在地图上的BitmapDescriptor准备好.也一个起点和终点的图标和灰色的...

2019-01-26 15:23:25 8480 2

原创 项目中对百度地图的点击获取经纬度

一般来说,项目中用到了百度地图的话,就是需要和地图进行交互操作的,先说说点击事件把。一.点击地图上某个点获取该点的经纬度:点击地图获取该位置的经纬度的话,一想想就知道应该使用类似于onClickListener的监听器吧。所以百度Api提供了一个BaiduMap.OnMapClickListener的监听器,首先先实现该接口@Override public void onMapCli...

2018-11-08 17:05:59 1568 1

原创 安卓项目中展示百度地图

地图在很多App中都会用到,最近项目中用到了百度地图的功能,下面我就分享一下在App中加载百度地图的步骤。1.首先先登录百度地图开放平台,没有的就先注册一个百度账号。2.登录成功后点击开发文档中的Android SDK板块中的上面点击“立即使用”。3.点击创建应用,如下图所示:1.填写应用名称,2.应用类型选择Android SDK自己勾选需要用到的服务,3.填写包名:(注意是在build....

2018-11-01 18:22:27 879

原创 解决Scrollview中嵌套百度地图引发的滑动冲突

最近项目中有用到百度地图,一般来说地图都是放在一整个界面中展示的,但是我做的这款产品设计时就是,上面填写工程的有关信息,下面在地图上选点选择一个地点为工程的位置。布局如下图所示:(上面有一部分滑出去了,地图还有一部分未滑出来)由于上面的信息一个屏幕时填写不玩的,所有就用到了Scrollview中嵌套上MapView,大家都知道MapView是可以滑动的,但是嵌套在Scrollview中的话由于...

2018-09-26 14:33:38 1128

原创 Android studio给项目工程配置指定的签名文件

项目只要打包生成Apk时,一定是需要签名文件的,当我们打debug包时只不过是默认的用了系统给的签名文件而已,如果我们想给自己的项目指定特定的签名文件改如何呢?1.使用快捷键 Ctrl+Shift+Alt+S 弹出以下界面: 2.按照步骤填入以上信息和引入正确的签名路劲: 3.点击ok。4.查看build.gradle中多了: 5.给相应的包配置对应的签名文件,debug...

2018-08-30 14:00:52 4283 1

原创 Android studio获取sha1的值

最近项目中要用到百度地图而申请百度地图的AK(秘钥)时需要用到项目的SHA1和项目包名生成安全码,现在安卓开发主要就是用的Android studio,以下就是Android studio获取项目的SHA1的值的步骤:1.打开cmd进入到自己的D:\jdk\bin jdk的bin目录下。(我的jdk的目录就是在D盘下) 2.输入以下命令 keytool -list -v -keystor...

2018-08-30 11:37:17 963

原创 retrofit中使用body标签传RequestBody

现在的Android开发者基本上都用过retrofit这个第三方网络请求库吧!!!网络请求中有get、post、delete和put等等请求方式。 现在我们需要用到post请求:@POST(&quot;exec&quot;)Observable&amp;lt;HttpResult&amp;gt; getSystemContent(@Body RequestBody body);可以注意到我们这里请求参数的标签用到...

2018-08-01 11:11:20 29479 3

原创 Android studio中报错Conflict with dependency 'com.android.support:support-annotations'

使用Android studio开发中出现Conflict with dependency’com.android.support:support-annotations’错误的时候只需要在build.gradle中加入configurations.all { resolutionStrategy.force 'com.android.support:support-annotat...

2018-07-27 10:33:05 448

原创 Android接入友盟推送

应用中当我们想去服务端获取数据时一般都是用的Http请求去主动获取服务器返回来的数据进行展示。但是,当服务器有新的数据需要主动告诉我们的手机应用时,该肿么办呢?这就需要用到推送的功能了。现在推送有好多家第三方的,我在这里就讲讲给我们的应用接入友盟第三方推送的步骤吧。1.先去友盟推送以应用包名创建应用http://message.umeng.com2.在友盟后台获取到通过包名创建的应用对...

2018-07-13 18:06:14 2910 1

原创 接入友盟推送遇到的com.ut.device.UTDevice问题

最近项目中有用到友盟推送的功能,完全按照官方接入sdk出现了以下问题: 整了我一天发现是友盟推送有用到utdid这个包implementation 'com.umeng.sdk:utdid:1.1.5.3'查阅资料好像发现这是阿里的一个双向认证的东西(具体我也不太清楚是啥)因为我之前在项目中接入过支付宝支付功能所以支付宝的jar包中也有utdid的这个包,而且还是老版本所以发生了...

2018-07-03 18:06:23 4369 1

原创 自定义TabLayout

最近项目中有用到一个TabLayout,如上图效果。先说说需求。1.Tab的个数是动态变化的。 2.4个Tab占满一个屏幕,多余部分往右滑动过来。 3.点击后右侧小图标变化样式。思路: 1.布局的话使用LinearLayout布局,放在HorizontalScrollView中。这样就实现了滚动效果。2.获取到屏幕的宽度除以4设置成里面每个Tab的的宽度。3.每个Ta...

2018-05-02 11:18:32 301 1

原创 android使用ZXing实现二维码扫描功能

二维码现在在我们生活中基本上每天都会用到,所以现阶段开发的App很多都使用到了二维码扫描功能。说起二维码扫描基本上大家都是用的ZXing谷歌官方提供的库。以下我就讲讲在项目中如何介入二维码扫描识别功能:1.在项目的build.gradle中加入依赖库:compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'//二维码扫描...

2018-04-28 15:32:06 911

apache-ant-1.7.0.jar

解决解压中文乱码的jar包。

2023-06-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除