android
文章平均质量分 53
沧海龙腾LV
现学现卖……
展开
-
Android获取移动网络(2G/3G/4G)信号强度
以下方法,双卡双待手机,存在中国移动和中国联通时,只能读到中国移动的信号。单SIM卡,不影响。原创 2022-09-17 16:42:57 · 2372 阅读 · 0 评论 -
Android下载Apk安装包,下载完毕后,系统自动进行安装
如题,Android App新版本检测升级实现步骤:1、权限小米11,android12,必须申请android.permission.REQUEST_INSTALL_PACKAGES权限<!-- 文件读写权限 --><uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><uses-permission android:name="android.perm原创 2022-04-12 11:37:59 · 5804 阅读 · 0 评论 -
Android (Q及以上系统版本)在SDcard中新建目录和文件抛异常(No such file or directory)
问题:/** * 获取备份文件路径 */ public String getBackupPath() { String compName = AppString.getCompanyName(); return Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + compName + "/Backup/"; }/** * 处理参数上传按原创 2021-01-25 16:38:09 · 1261 阅读 · 0 评论 -
Android系统中getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的区别
getCacheDir()方法用于获取/data/data/<application package>/cache目录getFilesDir()方法用于获取/data/data/<application package>/files目录应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。原创 2021-01-25 16:06:39 · 7326 阅读 · 1 评论 -
Android Mqtt客户端封装(连接、发布、订阅)实例二,亲测可用
实现步骤:1、项目根目录build.gradle中添加:allprojects { repositories { ... maven{ url "https://repo.eclipse.org/content/repositories/paho-snapshots/"} }}2、App目录的build.gradle中添加:dependencies { ... //mqtt implementation 'org.原创 2021-01-14 16:19:00 · 1075 阅读 · 0 评论 -
Android Mqtt协议(连接、发布、订阅)实例、亲测可用
实现步骤:1、项目根目录build.gradle中添加:allprojects { repositories { ... maven{ url "https://repo.eclipse.org/content/repositories/paho-snapshots/"} }}2、App目录的build.gradle中添加:dependencies { ... //mqtt implementation 'org.原创 2021-01-14 11:33:22 · 2188 阅读 · 1 评论 -
Android startService和bindService的区别和用法
1、生命周期上的区别执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时,直接调用onDestroy方法。调用者如果没有stopService,Service会一直在后台运行,下次调用者再起来仍然可以stopService。执行bindService时,Service会经历onCreate->onBind。这个时候调用者和Service绑定在一起。调用者调用unbindService方法或者调用者Context不转载 2021-01-13 11:28:36 · 1735 阅读 · 0 评论 -
Android开发之MQTT的使用
1. Android端实现消息推送的几种方式轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。 拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短信可能被安全软件拦截。 持久连接(Push)方式:客户端和服务器之间建立长久连接。真正的推送。 Google的C2DM(Cloudto Device Messaging)。需要科学上网,国内大多数用户无法使用。 XMPP。XMPP(可扩展通讯和表示协议)是...转载 2021-01-11 16:53:38 · 1801 阅读 · 4 评论 -
Android MQTT客户端开发实例
1.添加mqtt依赖app的build中添加依赖如下 //mqtt compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0' compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'2.mainfests文件中添加权限<uses-permission android:name="android.permission.ACCE转载 2021-01-11 16:36:26 · 798 阅读 · 0 评论 -
Android BLE(低功耗蓝牙)在Android不同版本的适配问题,华为Mate30扫描不到蓝牙模块
一、前言截止到本文完成的日期为止(2020年04月16日),笔者对Android 5.0~Android 10的部分手机进行了适配测试。该文中所遇到的问题基本都出现在国产定制系统(EMUI、MIUI、ColorOS)上。开发环境为macOS+idea。二、相关代码<uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permi转载 2021-01-11 13:35:57 · 3711 阅读 · 1 评论 -
Android模拟发光二极管 熄灭、点亮、闪烁
如图:实现:1、shape_indicator_gy,熄灭状态drawable,#565656<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:useLevel="false"> <solid android:col原创 2020-12-23 14:27:50 · 321 阅读 · 1 评论 -
Android模拟7段LED数码管文字显示,光标定位
效果如图实现步骤1、下载digital-7.ttf文件,直接百度搜索,下载,网上很多。下载下来之后,放到Android工程目录中assets/fonts目录中。2、LedTextView.java/** * 数码管形式,textview */public class LedTextView extends TextView { public LedTextView(Context context) { super(context);原创 2020-12-23 13:33:31 · 716 阅读 · 0 评论 -
Android利用surfaceview控件实现波形高速绘制
如图:实现步骤:1、activity_main.xml<?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/apk/res-auto"原创 2020-12-04 16:06:54 · 682 阅读 · 0 评论 -
Android SurfaceView的烦恼(一)-双缓存与清屏
学习Android开发的时候,经常看到画图时推荐使用SurfaceView,而不是使用View。原因有二:SurfaceView实现了双缓存机制,避免了界面的闪烁; SurfaceView允许在非UI线程中画图,即可自已起一线程来画图,减少主UI线程被“卡”住的现象,也就是提高效率。不过,在学习的过程中,使用起来并不容易,折腾了好一阵子,还是一知半解,在这里记录并与大家交流一下。在应用中,常常遇到一些“古怪”的问题,增添了不少“烦恼”。第一个烦恼就是:双缓存与清屏。怎样双缓存?根据资料介绍,双缓转载 2020-12-03 13:25:57 · 2081 阅读 · 0 评论 -
Android中的SurfaceView详解
Android中提供了View进行绘图处理,View可以满足大部分的绘图需求,但是有时候,View却显得力不从心,所以Android提供了SurfaceView给Android开发者,以满足更多的绘图需求。下面就让我们一起来了解一下SurfaceView。一、为什么要使用SurfaceView我们知道View是通过刷新来重绘视图,系统通过发出VSSYNC信号来进行屏幕的重绘,刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成,则没有任何问题,如果我们绘制过程逻辑很复杂,并且我们的界面转载 2020-11-26 11:40:16 · 1333 阅读 · 0 评论 -
Android极光推送Jcenter自动集成过程
前言最近项目要接入消息推送,上次是手动接入的,这次使用了自动集成,该文就是集成过程的记录。过程创建应用创建应用的过程在这里就不叙述了,不过在创建好应用后要记录下appkey,一会要用。创建应用.pngGradle配置1.确认 android studio 的 Project 根目录的主 gradle 中配置了 jcenter 支持。(新建 project 默认配置就支持)buildscript { repositories { jcente.转载 2020-10-14 14:05:38 · 466 阅读 · 1 评论 -
Android文字广告(Textview上下滚动),使用TextSwitcher控件的完整实现
实现步骤:a、xml布局<TextSwitcher android:id="@+id/textSwitcher" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" />b、TextSwitchBanner.javaimport android.原创 2020-09-27 16:44:47 · 1290 阅读 · 0 评论 -
Android文字广告(Textview上下滚动),使用TextSwitcher控件实现
经常可以在app上面看到许多的上下滚动textview,是可以直接使用TextSwitcher直接实现的。开始还写了个自定义view来实现,然后发现官方原来有(:з」∠)。控件还有ImageSwitcher和ViewSwitcher。TextSwitcher和ImageSwitcher都是继承于ViewSwitcher的,所以使用方法都一样只不过对象不一样罢了。效果只是稍微截取了gif使用布局<TextSwitcher android:id="@+id/tex转载 2020-09-27 14:02:50 · 1125 阅读 · 0 评论 -
Android文字广告,自定义垂直滚动切换TextView
很多app的首页都会有一个用于显示热点消息的banner,通过垂直切换文本的方式动态展示消息。垂直切换的方式可以有效利用空间显示更多的内容,动态的效果也更能吸引用户的注意力。 实现这个效果,我能想到的方式大概有两种:1、继承一个LineLayout,在里面添加两个TextView,通过动画实现TextView的移动、显示、隐藏。2、继承TextView,手动去绘制文字,然后动态的改变文字的绘制,以实现切换的动效。 相比之下,第一种方式要简单一些,而且方法1不只可以...转载 2020-09-26 15:16:57 · 705 阅读 · 0 评论 -
Android在scrollview中嵌套ListView,切换界面时scrollview整体向下滑动
有时候我们在scrollview中会嵌套ListView,在嵌套ListView(ListView上面还有一些控件)后,切换Activity时会发现整个scrollview 被向下滑动直到ListView置顶了,而上面的控件无法显示时,我们可以这样做:将图中的View放在顶部,最后在代码中这样做:view.setFocusable(true);view.setFocusableInTouchMode(true);view.requestFocus();通过setFocusable和转载 2020-09-23 13:27:50 · 375 阅读 · 0 评论 -
Android studio与夜神模拟器连接问题总结
1、夜神模拟器连接电脑提示“夜神模拟器127.0.0.1:62001: 由于目标 计算机积极拒绝,无法连接 解决方法”a、进入进Android SDK下的platform-tools目录b、将adb.exe拷贝至夜神bin目录下,粘贴两个,一个改成nox_adb.exe,把原来的nox_adb.exe删掉。c、win+r,输入cmd,cmd里面nox_adb connect 127.0.0.1:62001。(也可以在刚刚的文件夹下面,直接在上面的路径里面输入cmd)若上述方法解决不了,可尝试原创 2020-09-23 09:49:22 · 766 阅读 · 0 评论 -
Android studio 三大模拟器比较
1.本身自带的------(缺点:又卡又慢,自己不对比试试真是不知道卡死了)2.genymotion模拟器-----(缺点:安装有点小麻烦)下载地址:https://www.genymotion.com/download/有免费版本和收费版本,选择免费的就好啦傻瓜式安装,安装完后开始在Android studio上集成。打开File-Setting打开Setting--Plugins在搜索哪里输入genymotion---安装插件(很小就几十K)安装后重启.转载 2020-09-22 14:08:05 · 1884 阅读 · 0 评论 -
Android Fragment 监听物理返回 back 键
在很多场景下,我们需要 Fragment 监听物理 back 键,而不是 Activity,这个时候我们只能做一些处理,来让 Fragment 拦截。首先在 Fragment 中自定义回调方法,如下:public boolean onBackPressed() { EventBus.getDefault().post(new ClosexxxxxEvent()); // 做我们想做的处理 return true; // return true 代表自己处理 }然后,在 Ac转载 2020-09-19 15:44:47 · 1358 阅读 · 0 评论 -
Android 热门标签 流式布局的实现
无论是在移动端的App,还是在前端的网页,我们经常会看到下面这种标签的列表效果:效果图:标签列表标签从左到右摆放,一行显示不下时自动换行。这样的效果用Android源生的控件很不好实现,所以往往需要我们自己去自定义控件。我在开发中就遇到过几次要实现这样的标签列表效果,所以就自己写了个控件,放到我的GitHub,方便以后使用。有兴趣的同学也欢迎访问我的GitHub、查看源码实现和使用该控件。下面我将为大家介绍该控件的具体实现和使用。要实现这样一个标签列表其实并不难,列表中的item可以直接用转载 2020-09-15 11:25:03 · 941 阅读 · 0 评论 -
Android ListView的每一个item布局高度不一样,自动计算listView高度
一、android listView的每一个item布局高度不一样1.获取listView的宽度2.给item的measure设置参数是listView的宽度就可以获取到真正每一个item的高度 public void setListViewHeightBasedOnChildren(ListView listView1) { BaseAdapter listAdapter = (BaseAdapter) listView1.getAdapter(); if (...原创 2020-09-11 10:25:52 · 1502 阅读 · 0 评论 -
Android自定义星星评分控件
下面为控件的实现历程:此控件高效,直接使用ondraw绘制,先亮照:由于Android自身的星星评分控件样式可以改,但是他的大小不好调整的缺点,只能用small normal这样的style调整,自定义不强,因此击发了我自定义星星控件的欲望。星星评分控件的设计,大体规划为:需要两张图片,一颗亮星星,一颗空星星;(当然图片不一定是星星,其他图片也可以,现在实验就用星星就好了)星星数量,间距可以自定义,星星的最小步进为0.1,在用户使用的时候与Android自带的方法一样。星星控件大体分为两层,第一层转载 2020-09-04 17:34:48 · 948 阅读 · 1 评论 -
Android Studio报错Error while executing: am start -n “com.lzy.app/com.lzy.app.Splash
今天真机运行项目发现报了这个错误:$ adb shell am start -n "com.app.yxsoft/com.baby.grow.ui.sys.SplashActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHERError while executing: am start -n "com.app.yxsoft/com.baby.grow.ui.sys.SplashActivity" -a an原创 2020-08-13 14:46:08 · 879 阅读 · 1 评论 -
Android9.0兼容问题-android-async-http.jar调用问题
Android 项目在运行在Android9.0上面的时候 闪退 报错如下Java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/conn/scheme/SchemeRegistry;解决办法:在AndroidManifest.xml文件的application标签里面加入<uses-library android:name="org.apache.http.legacy" android:req.转载 2020-08-05 13:48:27 · 438 阅读 · 0 评论 -
OkHttp3简单使用和封装使用
OkHttp简介OkHttp是一个http协议网络请求的框架,OkHttp是一个高效的HTTP客户端,适用于Android和Java应用程序。从Android 4.4开始google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android 6.0之后的SDK中google更是移除了对于HttpClient的支持,而现在流行的Retrofit同样是使用OkHttp进行再次封装而来的。本文章主要讲的:1.Okhttp3简单使用2.Okhttp3封装使用效果图转载 2020-07-09 11:00:44 · 1350 阅读 · 2 评论 -
Android Studio使用IconFont阿里矢量图标库
什么是矢量图矢量图 svg 是 W3C(World Wide Web ConSortium 国际互联网标准组织)在2000年8月制定的一种新的二维矢量图形格式,也是规范中的网络矢量图形标准。矢量图像用点和线来描述物体,所以文件会比较小,同时也能提供高清晰的画面。用户可以任意缩放图像显示,而不会破坏图像的清晰度、细节等。总体来讲,SVG文件比那些GIF和JPEG格式的文件要小很多,因而下载也很快。只要跟着本文章的步骤保证你能很快的集成到项目中使用优缺点 文件小,图像中保存的是线条和图块的信息转载 2020-07-09 10:49:26 · 5626 阅读 · 6 评论 -
Android okhttp3的使用
1、在模块中下载或者添加依赖:implementation 'com.squareup.okhttp3:okhttp:4.7.2'当你看到这的时候,可能最新的稳定版已经不是3.10.0了,你需要移步官方GitHub来查看最新版本。 官方地址 https://github.com/square/okhttp,另外不要忘了在清单文件声明访问Internet的权限,如果使用 DiskLruCache,那还得声明写外存的权限。2、okhttp使用a、异步GET请求-new OkHttpClie原创 2020-07-02 17:28:40 · 1726 阅读 · 0 评论 -
Android 读写配置文件properties
1、首先在源代码根目录(src下)下创建一个名为global.properties的文件(也可以在其他目录下)。或者在assets文件夹下创建一个名为global.properties的文件。2、打开global.properties文件,在该文件中添加下列代码#后台接口urlurl=http://121.15.209.220#端口号port=8080说明:上面代码中,#为配置文件中的注释,而在配置文件中,可以使用<br>等进行格式处理,在配置文件中,如果某个属性过长,一行不原创 2020-07-02 14:01:23 · 2623 阅读 · 2 评论 -
重装或者升级Android Studio后,打开旧的Android项目,同步编译时遇到的一些常见问题及解决办法
1、在sdk安装路径下找不到sdk对应的版本android-28,Gradle sync failed: Failed to find target with hash string 'android-28' in: D:\android\androidstudio\sdk解决:找到sdk安装路径和编译工具路径修改app的build.gradle如下:2、Android...原创 2020-04-01 14:25:12 · 2891 阅读 · 0 评论 -
重装或者更新Android Studio后,新建Android项目,同步编译时遇到的一些常见问题及解决办法
1、Android Studio一直卡在Gradle build running解决:a、在C:\User\<用户名>\.gradle 目录下新建一个gradle.properties文件,并在里面添加一行:org.gradle.daemon=trueb、打开Android Studio,在Settings中设置没有对应的gradle版本,也无法自动下载时,找到路径...原创 2020-02-18 17:10:18 · 1184 阅读 · 0 评论 -
Android FileProvider介绍
Android 7.0 文件共享要使用FileProvider对于面向Android 7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URI。如果一项包含文件URI的intent离开您的应用,则应用出现故障,并出现FileUriExposedException异常。对于文件访问在Android 7.0以前可以使用file://uri...原创 2020-01-16 14:00:56 · 917 阅读 · 0 评论 -
Android App检测新版本,自动下载、安装和升级,兼容Android7.0以上和以下版本
序言一些公司开发完一款App之后可能并不会去上架App商店,但事后期也需要定时进行维护更新,所以会选择把打包好的apk 发布到自己的服务器,然后在数据库建一个版本号的表,然后剩下的就交给你android开发了,android自己要实现版本检测更新,由于android自带的DownloadManager 就可以实现下载功能,用起来就会很简单了,不用再写很多下载等相关代码了,不过在下载完有的是在通...转载 2020-01-16 13:44:27 · 1669 阅读 · 0 评论 -
Android WebView控件使用介绍
Android WebView控件使用介绍WebView是一个基于webkit引擎、展现web页面的控件。android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。原创 2017-08-20 17:42:39 · 363 阅读 · 0 评论 -
android studio 修改应用ID,应用包名
1、修改应用ID每一个App都必须有唯一的应用ID,如果两个App的应用ID相同,同时安装在一台手机上的时候会报错。修改一个App的应用ID,则视修改后的App为一个新的App。修改方法: 打开 App module -> build.gradleapply plugin: 'com.android.application'android { compileSdkVersio...原创 2018-03-14 17:59:58 · 9812 阅读 · 0 评论 -
Android 6.0(API 23)之后需动态申请权限的问题
Android6.0(API 23)之后谷歌对权限的管理更加严格了。某些权限不但需要在AndroidManifest清单文件中添加,还需要在应用运行的时候动态申请。1、权限使用说明新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Per...原创 2018-03-16 18:05:52 · 620 阅读 · 0 评论 -
android绘制自定义view时,控件大小的测量与确定问题
最近项目需求,要做以下gif效果:方法1:使用开源得gif控件,加载gif图片方法2:view平移动画方法3:继承view,activity中线程刷新方法4:继承LinearLayout,添加子控件,activity中线程刷新由于没有合适的gif图片,又不想在activity中书写太多的动画逻辑,考虑采用采用方法3和方法4封装控件的方法。本人采用的方法4,感觉比较简单,不用计算绘制onDraw,直...原创 2018-03-13 10:02:37 · 4416 阅读 · 0 评论