Android
文章平均质量分 57
GIS开发者
辽宁工程技术大学硕士研究生毕业,长期从事WebGIS、移动GIS开发工作,全栈 (前端、后端、Android、小程序、H5),现任某地理信息公司研发部经理,叩叩965894265
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
android开始出现java.lang.NoClassDefFoundError: javax/annotation/Generated问题的解决办法
调试android studio 代码时 出现`java.lang.NoClassDefFoundError: javax/annotation/Generated`的问题的解决方案原创 2024-08-16 16:58:17 · 555 阅读 · 0 评论 -
Android 使用GDAL读写shp文件
GDAL库十分强大,不仅可以做栅格数据的分析处理,还可以操作矢量shp数据。之前的使用Python、Java分别调用过GDAL,但是从来没有在Android项目上使用过GDAL。最近遇到了相关问题,查阅了相关资料,发现GDAL在Android上同样可以使用,只要将GDAL的源代码进行编译就可以了。以后可以实现在Android手机上处理遥感影像了,但是编译的过程相对复杂,这里我就使用了网上编译好的资源,做了相关的验证。原创 2023-04-18 20:02:43 · 2023 阅读 · 16 评论 -
Mapbox Android 加载图片到指定坐标范围
在前面的中,介绍了在web端使用Mapbox如何加载图片到指定坐标范围。后来就遇到了一个网友提的问题,如何在移动端(Mapbox SDK for Android)实现加载图片到指定的坐标范围。Android端无法使用对应的Vue插件,这个就比较麻烦了。查阅了相关资料后发现,Mapbox Style中有一种source类型为image,支持指定四至坐标,通过Raster Layer就可以渲染到地图上。原创 2022-10-12 13:00:00 · 1339 阅读 · 0 评论 -
Charles 抓包夜神模拟器,实现对App网络请求的监控
移动端的开发相对于Web开发,有一个很大的缺陷就是看不到网络请求。Web端开发,可以在控制台轻松看到所有的网络请求,测试人员能轻松看出来接口是否有问题。但是移动端就比较麻烦,需要代理网络请求进行抓包,多少麻烦,之前有过一个抓包工具,配置了半天也没有抓取到。偶然遇到了Charles这个抓包工具,用起来觉得很方便,这里分享一下安装和用法。...原创 2022-07-08 10:16:47 · 2360 阅读 · 0 评论 -
微信扫描二维码无法下载文件的解决办法
当开发一个Android app的时候,都是给用户提供一个二维码,毕竟二维码传播与保存都很方便,把二维码指向安装文件的最新地址就可以了。不用每次升级都发给用户一个新的安装包。生成二维码有很多办法,用蒲公英也可以,但是比较麻烦,还需要认证。如果比较着急,而自己又有服务器的时候,可以把安装文件放在web容器中,用对应的url来生成一个二维码。但是扫描这个二维码的时候,会有一个问题,很多人喜欢用微信扫。微信扫描后,是无法下载的。需要用户在手机自带的浏览器打开这个地址,才能正常下载。很多用户,微信扫码不下载,可原创 2022-06-11 16:17:37 · 6586 阅读 · 1 评论 -
cordova11 android不支持http请求解决方法
最近在使用Cordova和vue结合,开始移动端应用时,遇到一个问题,vue项目中的接口全部请求不通,怀疑是Android http接口访问不通的问题。在网上找了很多资料,也遇到了很多弯路,最后终于解决了。cordova调试非常麻烦,在真机上不输出错误。使用Android Studio 直接打开下的Android studio项目,连接模拟器调试才能看到日志信息。最初怀疑是Android 高版本默认不允许http访问造成,查看了下的Android studio项目AndroidManifest.xml文原创 2022-06-02 16:52:07 · 3437 阅读 · 9 评论 -
Android Studio 无法识别MuMu模拟器、夜神模拟器的解决办法
Android studio自带的模拟器在很多场景下不是非常好用,而且很多时候需要设置CPU、开启虚拟化等等。很多Android 开发人员喜欢使用。也有不少人使用MuMu模拟器、夜神模拟器等第三方模拟器,有时候Android studio无法识别到MuMu模拟器和夜神模拟器,处理方法非常简单,这里简述一下:识别MuMu模拟器在使用木木模拟器时,启动Android Studio启动MuMu模拟器找到自己Android Studio使用的SDK对应的文件夹,找到platform-tools原创 2022-05-20 17:10:07 · 6310 阅读 · 2 评论 -
Android 通过Service 实现后台GPS定位
前言做移动GIS开发经常会使用到定位功能,很多时候通过代码里的手写定位代码在Activity中就实现了。虽然比较简单,但是也会有一些问题,比如定位慢,代码杂乱。一直都知道可以通过Service进行后台定位,也没有实践过,在网上找了一些代码也都比较乱,还有的代码居然是通过service和百度SDK进行定位的,这里记录一下博主是如何通过Service实现定位的。AndroidManifest.xml这个文件里主要有两处需要注意:添加权限注册Service<?xml version="1.0原创 2022-04-17 21:27:01 · 7822 阅读 · 3 评论 -
Android 动态权限申请工具PermissionTools
最近的博文都是简单的记录,每次开发各Android小项目都要配置权限申请,从Android6.0之后的动态申请真是越来越麻烦了,这里记录一下动态申请工具PermissionTools的使用,每次都去百度太麻烦了:添加依赖在build.gradle中添加下面代码 implementation 'com.github.Jerey-Jobs:PermissionTools:1.5'如果一直下载不下来这个依赖,记得检查自己的仓库地址里是否有maven { url 'https://j原创 2021-05-17 19:49:37 · 356 阅读 · 0 评论 -
android 开发配置阿里云maven仓库
每次开发android 都得面临各种依赖下载失败的问题,每次都得去网上搜各种仓库地址,这里记录一下,省的找不着。在项目根目录下build.gradle中配置的代码如下:// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { maven { url 'https://maven.a原创 2021-05-17 19:42:16 · 2222 阅读 · 0 评论 -
Android 实现bug捕捉并重启应用
一直以来,Android 的闪退处理起来都十分麻烦,用户可能不知道什么情况,App就没有了,做一个全局的捕捉机制,上传错误信息,或进行提醒,这将对用户十分友好。这里我就简单实现一下,App遇到bug自动重启并提醒用户。异常处理类package com.example.testrestart;import android.app.AlarmManager;import andr...原创 2020-05-07 19:39:16 · 552 阅读 · 0 评论 -
Android 开发GPS定位、网络定位、卡尔曼滤波优化结果对比
作为Android开发者可能会经常遇到定位的问题,在获取位置信息的时候就会遇到使用网络定位、GPS定位等种类。其实、百度和高德等还对定位结果进行了优化,其中包括卡尔曼滤波。卡尔曼滤波怎么推导的我也不是很清楚,引用了一个github上的库开发工作我的代码在码云地址主要是将GPS、网络定位、经过卡尔曼滤波优化的三种定位结果以不同颜色的图标展示在MapBox地图上,并记录在txt文件上。...原创 2020-01-02 20:45:06 · 2720 阅读 · 4 评论 -
使用UICrawler对Android APP进行自动化测试
上一篇博文讲了如何对Android App进行简单的自动化测试使用monkey进行最简单的Android自动化测试。这里来叙述一下,如何用更高级一点的框架对Android App进行自动化测试——UICrawler。UICrawlerUICrawler有着更强大的功能,可以对小程序、Android、IOS等进行测试,支持更高级的配置,配置用户名、密码、哪些元素不能点击等。而且最后还有htm...原创 2019-12-06 16:07:17 · 1296 阅读 · 0 评论 -
使用monkey进行最简单的Android自动化测试
一直在做Android开发,最近客户反馈公司的App闪退问题严重。App闪退是十分影响用户体验的。因此特别咨询了一些专业测试,怎么做APP的自动化测试,减少一些闪退的问题。monkeymonkey是sdk自带的自动化测试工具。它通过模拟大量的点击、滑动等各类事件,对APP进行测试。对于Android开发人员来说,不需要安装任何软件,测试起来只要一个命令就可以,用起来十分方便。环境准备...原创 2019-12-06 15:34:24 · 579 阅读 · 0 评论 -
Android会根据内容自动变色的TextView
开始中遇到,在ListView中想根据内容调整文字的颜色,完成了这种效果,先上图这种效果时通过重写了TextView实现的,代码如下:package com.example.demo.practice.ui;import android.content.Context;import android.graphics.Canvas;import android.graphics.原创 2018-01-04 17:29:51 · 1177 阅读 · 0 评论 -
Android渐变色圆角矩形框
效果如图:实现代码如下图所示:package com.example.demo.practice.ui;import android.content.Context;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphics.Paint;imp原创 2018-01-11 14:24:26 · 2288 阅读 · 0 评论 -
Android 渐变色TextView
最近根据美工需要,移动端需要做渐变色TextView;参考网上资料,做出来如下图:代码如下:package com.example.demo.practice.ui;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import andro原创 2018-01-05 19:32:50 · 3048 阅读 · 0 评论 -
Android绘图canvas 圆周运动两种实现方式
Android最近在自定义view,需要做一个圆周运动;方案一:首先想到的是根据圆的方程,实时递增x值进行,然后实时计算y值,代码如下:package com.example.demo.practice.ui;import android.content.Context;import android.graphics.Canvas;import android.graphi原创 2018-01-24 16:38:38 · 1891 阅读 · 1 评论 -
在高德地图 Android SDK上添加GeoServer发布的WMS图层
因为项目需要,要在高德地图上添加自己的地图服务器发布的地图,想到了通过WMS来添加。在网上找到了两篇相关的博文,用他们的代码都无法实现,后来感觉这两个人根本就没有实际去做,代码里有同样的逻辑性错误。自己修改了一下,实现效果如下图所示:首先定义实体类:public class Gps { private double wgLat; private double wgLon; ...原创 2018-03-26 17:04:05 · 5291 阅读 · 16 评论 -
基于scoket.io的移动端位置上传到服务器,在web端显示
最近由于项目需要,要将android定位的结果实时上传到服务器,并在服务器展示出来,使用scoket.io完成了整个流程。首先是Adnroid端引入scoket.io compile ('io.socket:socket.io-client:0.8.3') { exclude group: 'org.json', module: 'json' }实例化和上传priva...原创 2018-05-29 18:28:49 · 1133 阅读 · 4 评论 -
OpenGL ES2.0绘制圆形点Android
使用Android SDK开发,使用OpenGL ES2.0绘制圆形点,支持横竖屏转换,点的大小有两种方式设置效果图如下:着色器代码package com.hb.drawpoint;public final class ShaderCode { public final static String VERTEX = "uniform...原创 2018-10-08 17:51:03 · 1856 阅读 · 0 评论 -
OpenGL ES2.0实现文字绘制Android
OpenGL ES2.0是无法直接绘制文字的,我采用的方法是将文字转为Bitmap,然后以图贴的方式进行渲染。看到网上也有人是将文字生成点,一个个进行绘制的,个人觉得这种方法还是挺麻烦的。文章分为两部分,一部分是在canvas中绘图转Bitmap,第二部分是贴图纹理绘制。文字转Bitmap这部分比较麻烦,网上介绍的canvas.drawText()的资料太多,看了都让人一头雾水,我也看了一...原创 2018-10-15 11:55:32 · 5877 阅读 · 6 评论 -
OpenGL ES2.0实现手指滑动平移、双指缩放Android
主要是实现了手指在屏幕上滑动实现平移,两个手指进行缩放。主要是这部分矩阵还挺麻烦的。效果图如下所示:核心部分代码如下触控事件处理: @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouch(View view, MotionEvent motionEvent)...原创 2018-10-16 18:06:53 · 3888 阅读 · 9 评论 -
Android解析TMS地图切片规则,实现离线地图下载
TMS(Tiled Map Service)切片地图服务,ArcGIS、百度和高德等都给出开发者离线地图下载的接口,但是这些接口仅仅真对他们自己的地图,博主这里自己研究了一下TMS地图切片的规则,在Android上实现了Google地图TMS服务的离线下载,下载到本地后,以后可以根据需要在Android直接加载本地的离线TMS地图。想要在PC运行的话需要自己改成为Java或其他的语言...原创 2018-11-01 09:26:15 · 2362 阅读 · 0 评论 -
Android9.0 H5开发WebView网页无法正常访问
最近接触了一个需求,在WebView中嵌入H5网页,无法正常显示。在WebView开发assets中的html,有本地文件访问权限,在调试模式下浏览器报错cannot fetch to... 在WebView中打开远程html,提示ERR_CLEARTEXT_NOT_PERMITTED最终html均无法显示,这个问题只发生在Android9.0的真机上,模拟器上都无法发现。最终搜索到,...原创 2019-04-18 08:36:03 · 3497 阅读 · 0 评论 -
MapBox定位与离线地图下载Android
因为业务需要,在Android实现Mapbox离线地图下载和实时定位,仿照着官方的例子实现,网上的demo也比较少,主要代码如下所示:public class MainActivity extends MapActicity implements OnLocationClickListener, PermissionsListener, OnCameraTrackingChange...原创 2019-05-23 08:32:14 · 9996 阅读 · 6 评论 -
Android在Activity中改变button颜色的方法
int c = 0xfff0f0ff; button.setBackgroundColor(c);//方法一 getResources().getColor(R.color.red);//方法二方法二,是直接条用Color.xml中的颜色。方法一是调用自己定义的颜色,注意0xfff0f0ff是把原创 2016-08-16 15:26:26 · 4120 阅读 · 0 评论 -
Android绘制一条边为弧形的矩形
这个标题可能有语法错误,效果就是下图:利用Android canvas绘图实现;package com.example.demo.practice.ui;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import an原创 2018-01-11 10:55:07 · 4951 阅读 · 0 评论 -
Android自定义控件扩展示例
通过扩展布局的方式,创建一个图片和文字在一起的buttonAndroid代码如下:package com.example.demo.practice.ui;import android.content.Context;import android.content.res.TypedArray;import android.graphics.drawable.Drawable;im原创 2017-12-01 14:45:48 · 693 阅读 · 0 评论 -
webview video全屏的解决方案
在Android webview开发中,发现video元素全屏时只能竖屏,如果横屏的时,webview会刷新。为了解决这个问题,果断采用了以下方案。1.全屏时暂停当前视频播放,并记录时间。2.在body中添加一个video,宽度设置为屏幕高度,高度设置为屏幕宽度3.旋转这个video90度,再平移至屏幕中心。4.video读取播放地址和记录的播放时间。原创 2017-10-16 15:50:15 · 1600 阅读 · 0 评论 -
Android变化的双重选择框
原理:定义四个RadioGroup,通过第一个RadioGroup的选择来控制其余几个radiogroup的显隐<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="m原创 2016-08-19 20:19:37 · 685 阅读 · 0 评论 -
Android改变button背景色与获取button背景色
改变背景色 button.setBackgroundColor(int c);获取背景色 Drawable background=button.getBackground(); ColorDrawable colorDrawable = (ColorDrawable) background; int color=colorDrawable.getCo原创 2016-08-17 14:35:09 · 3232 阅读 · 0 评论 -
Android内部颜色转16进制颜色
我们在Avtivity中设置控件的背景色的时候,会发现setBackgroundColor()居然需要int格式的颜色,本来以为是10进制的颜色,后来实验发现,不是10进制的,因为它是有负数的,它的范围是-16777216到16777216,最后做出了它到16进制颜色的转换。 public String toHexEncoding(int color) { String R,原创 2016-08-17 14:25:25 · 2289 阅读 · 0 评论 -
Android开发中各分辨率图片的参考尺寸
drable-mdpi 32*32像素drable-hdpi 48*48像素drable-xhdpi 64*64像素drable-xxhdpi 96*96像素drable-xxxdpi 128*128像素原创 2016-07-22 09:17:28 · 1230 阅读 · 0 评论 -
Android Studio里引入别的project作为库
首先把已有项目复制到正在创建的project中配置文件原创 2016-07-21 20:25:11 · 470 阅读 · 0 评论 -
Android ListView分两列显示(不用自定义Adapter)
想要实现ListView里有两列内容,在网上查了很多地方都要自定义Adapter,后来终于找到了比较简单的方法!1、首先,定义列表的item<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_原创 2016-07-21 14:05:55 · 14668 阅读 · 5 评论 -
Android折叠面板
原理通过一个按钮控制另一个控件的显隐<TextView android:id="@+id/bcolor" android:layout_width="match_parent" android:layout_height="45dp" android:text="地图背景" android:textSize="20dp" android:text原创 2016-08-15 16:42:25 · 2283 阅读 · 0 评论 -
Android圆角textview的做法
1定义一个圆角的图形的XML文件textviewback.xml <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" />2这个矩形用作textview的背景<T原创 2016-08-15 16:37:42 · 2415 阅读 · 0 评论 -
Android双重单选对话框的制作与监听
首先是自定义XML布局代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vert原创 2016-07-20 13:59:38 · 821 阅读 · 0 评论 -
Android开发中用到的颜色代码
转载自http://blog.sina.com.cn/s/blog_46798aa80101682k.html转载 2016-07-20 09:14:40 · 788 阅读 · 0 评论
分享