- 博客(60)
- 收藏
- 关注
原创 什么是GMS
GMS (谷歌移动服务) GMS全称为GoogleMobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,是谷歌程序运行的基础。 为谷歌play所应用的底层框架基本介绍 GMS提供有GooglePlay、Search、Search by Voice、Gmail、Contact Sync、Calendar Sync、Talk、Maps、Street View、YouTube、Android Market等服务,GMS为安卓上的谷歌公司系列应用提供支持对于安卓
2022-05-07 15:47:56
3173
原创 ASCII码表
ASCII码大致可以分作三部分組成。第一部分是:ASCII码非打印控制字符;第二部分是:ASCII码打印字符;第三部分是:扩展ASCII码打印字符。*第一部分:ASCII非打印控制字符表ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头,数字127代表DELETE命令,ASCII码表二进制 十进制 十六进制 缩写/可以显示的表示法 名称/意义 00000000 ...
2022-03-23 16:18:55
596
原创 通过ASCII码表来去除首尾字符串字符(eg:去除首位空格....其他字符也可以去掉)
ASCII简介ASCII,英文全称是American Standard Code for Information Interchange,中文名称就是美国信息互换标准代码,他是基于拉丁字母的一套电脑编码系统。ASCII码表主要用于显示现代英语和其他西欧语言。相对应编码/** * 普通的英文半角空格Unicode编码 */ private static final int SPACE_32 = 32; /** * 中文全角空格Unicode编码(一个中文宽
2022-03-23 15:43:14
617
原创 Android实现recyclerview列表展开更多和点击收起功能(以本地数据为例)
首先看效果图是否是想要的,样式是灵活的,可根据需求自己去改变!1.接下里就开始进入正题布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://sche
2021-09-06 14:39:21
2814
原创 uiautomator2.0实现上下左右滑动
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());//向左滑动 public static void swipeLeft(String time) { //个人比较喜欢使用Thread.sleep 可以去使用mDevice.sleep();去尝试 Thread.sleep(1000); int x = mDevice.getDispl
2021-08-06 14:54:08
2996
原创 Android Studio 4.1配置GreenDao以及详细使用
导入依赖1.在app级build.gradle中添加代码:implementation 'org.greenrobot:greendao:3.3.0'greendao { schemaVersion 1 //数据库版本号 daoPackage 'com.example.test.greendao' //填写自己的包名+文件夹test // 设置DaoMaster、DaoSession、Dao 包名 targetGenDir 'src.m
2021-07-21 13:53:16
2812
原创 gradle 中的sourceCompatibility 与 targetCompatibility 的区别
sourceCompatibility:指定编译编译.java文件的jdk版本targetCompatibility:确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容,
2021-07-21 12:11:32
6958
原创 TabLayout去除点击时的阴影效果
一开始使用设置属性app:tabBackground="@android:color/transparent" 但是不行 不起作用 没有效果。之后费了好大周折知道这个属性 app:tabRippleColor="@android:color/transparent" 这才解决了阴影效果
2021-06-02 14:02:52
554
原创 怎样将PC端(安装包)APK安装到手机/真机
使用cmd命令或者Xshell都可以,这里以Xshell为举例!cd D:\doordash :找到apk存放地址。adb install (后面是apk名称)com.dd.doordash_15.17.5-15017059_minAPI21(arm64-v8a,armeabi-v7a,x86,x86_64)(nodpi)_apkmirror.com.apkPerforming Streamed InstallSuccess(显示出这样就安装OK)...
2021-05-20 17:51:34
3115
原创 Uiautomat报错:Nexpected error while obtaining ui hierarchy java.lang.reflect.invocationtargetexception
在使用uiautomatorviewer对设备进行截屏时,出现异常Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException解决方法:通过android studio对sdk tool进行了更新,从25.x 升级到了26.1.1升级后sdk manager没有界面了,uiautomatorviewer移动到 ./sdk.tools/bin目录下,重新启动后能够正常截屏了。另一种通
2021-05-19 13:54:56
334
原创 JsonUtil工具类
public class JsonUtil { /** * map转换json字符串 * * @param map * @return */ public static String parseMapToJson(Map<?, ?> map) { try { Gson gson = new Gson(); return gson.toJson(map); .
2021-03-15 16:01:20
168
原创 MediaRecorder.AudioSource音频来源参数
**MediaRecorder.AudioSource.MIC参数说明其中第一个参数就是选择录音源的,其可选参数如下:1.MediaRecorder.AudioSource.CAMCORDER设定录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则使用预设的麦克风2.MediaRecorder.AudioSource.DEFAULT 默认音频源3.MediaRecorder.AudioSource.MIC设定录音来源为主麦克风。4.MediaRecorder.AudioSourc
2021-01-13 14:28:51
2813
原创 修改本地文件!!一行搞定!
很简单很快!! new File(fileBean.filePath).renameTo(new File(FoundFileUtil.audio_path + s + ".mp3"));
2021-01-12 18:05:43
253
原创 状态栏!!白底
StatusBarCompat.setStatusBarColor(getMainActivity(), getResources().getColor(R.color.white), true);
2021-01-11 17:05:12
138
原创 Android中创建子线程的三种方式
1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑。 class ThreadTest extends Thread { @Override public void run() { //具体的耗时逻辑代码 } } new ThreadTest().start();//启动线程2.实现Runnable接口。 class ThreadTest implements Runnable {
2021-01-11 09:35:29
4356
原创 解决 Performing stop of activity that is not resumed 报错!!
Performing stop of activity that is not resumed 一直报这个然后运行就很卡把继承的AppCompatActivity或者其他Activity 改为继承FragmentActivity或其子类,即可,这个最简单!我也遇到这个问题,继承这个就不会报错,希望能够帮助你!...
2021-01-08 13:37:40
1150
转载 Android全面解析之由浅及深Handler消息机制
文章已授权『郭霖』公众号发布 前言 很高兴遇见你~ 欢迎阅读我的文章。 关于Handler的博客可谓是俯拾皆是,而这也是一个老生常谈的话题,可见的他非常基础,也非常重要。但很多的博客,却很少有从入门开始介绍,这在我一开始学习的时候就直接给我讲Looper讲阻塞,非常难以理解。同时,也很少有系统地讲解关于Handler的一切,知识比较零散。我希望写一篇从入门到深入,系统地全面地讲解Handler的文章,帮助大家认识Handler。 这篇文章的讲解深度循序渐进,不同程序的读者可选择对应的部分查看:.
2021-01-07 14:14:36
94
原创 权限的申请和回调
用于开始该界面的多个权限请求 private static final int READ_EXTERNAL_STORAGE = 1; @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_pick_images); checkLocationPermission(); }
2020-12-30 16:31:56
588
原创 生成的签名APK
生成的签名APK*Android Studio使用了一个默认的keystore对应用进行签名 ***签名文件里有keyPassword 和storePassword keyAlias 需要和以下的一样 **signingConfigs { release { storeFile file('zhiwozhixiang.jks') keyAlias "bjqjqc"// keyPassword System.
2020-09-03 18:08:56
162
原创 友盟多渠道打包
友盟多渠道打包,前提需要在友盟里创建应用拿到自己的AppKey《一》首先在清单文单中添加动态渠道变量 <!--友盟--> <meta-data android:value="5f2bf8c3b4b08b653e91eec0(你自己的APPKey)" android:name="UMENG_APPKEY"/> <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UM
2020-09-03 18:01:57
1640
1
原创 原生CountDownTimer 类实现获取验证码的按钮
mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new CountDownTimer(10000, 1000) { // 第一个参数是总的倒计时时间 // 第二个参数是每隔多少时间 (ms) 调用一次 onTick() 方法 public void onTick(
2020-08-19 12:51:11
119
原创 Timer实现倒计时
public class MainActivity extends AppCompatActivity { private TextView rx; int time = 5; // 定义总数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo
2020-07-24 17:25:01
809
原创 Android WebView实现缓存
package com.hcy.trining_day6;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.webkit.WebSettings;import android.webkit.WebView;import android.w
2020-07-14 09:13:00
372
原创 Android传感器
得到传感器管理器public class MainActivity extends AppCompatActivity { private SensorManager mSsystemService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activi
2020-07-13 20:37:35
108
原创 Android 设置文字水平滚动
布局文件: <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:textSize="30dp" androi
2020-07-13 20:26:20
385
原创 相册选取照片上传 2
动态获取权限 private void checkPermiss() { int i = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); if (i != PackageManager.PERMISSION_GRANTED) {//没有授权,申请权限 ActivityCompat.requestPermissions(this,
2020-06-16 14:57:23
394
原创 TextView设置字体透明度或背景透明度
1在 xml 文件中添加: android:textColor="#73FFFFFF" // 边框颜色 android:background="#33000000" // 透明度**#73FFFFFF前两位是透明度,后六位是颜色代码;不透明前两位是 FF ,全透明前两位是 00 ;具体看下面:透明度90% :E6透明度80%: CC透明度70%: B3透明度60%: 99半透明50%: 80透明度40%
2020-05-20 19:40:23
902
原创 缓存拦截器的使用
在 MyCacheinterceptor 中主要做了(post方式无法缓存)①设置缓存位置②无网时:设置缓存协议③有网:加载网络数据;无网:加载缓存数据代码: OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(myCacheinterceptor)//应用拦截器 .addNetworkInterceptor(myCacheintercepto
2020-05-20 10:37:38
399
原创 RxJava实现倒计时
private void initRxTimer() { // 3 代表秒数 Observable.interval(1, TimeUnit.SECONDS).take(3).subscribe(new Observer<Long>() { @Override public void onSubscribe(Disposable d) { } @Override .
2020-05-20 10:22:30
558
原创 OK上传文件
private void ok(){ String file = Environment.getExternalStorageDirectory() + File.separator + "Pictures/a13.jpg"; final File sise = new File(file); if (!sise.exists()) { Toast.makeText(this, "文件损坏或路径错误", Toast.LENGTH_SH.
2020-05-17 15:55:22
287
原创 APK安装(OkHttp下载)
**InstallUtil 类 **public class InstallUtil { public static final int UNKNOWN_CODE = 2019; public static void installApk(Context context, String path) { if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){ star
2020-05-13 15:58:07
1335
原创 多线程断点下载
定义一个Thead_count = 3 private int Thead_count = 3;apk private String apk = "http://cdn.banmi.com/banmiapp/apk/banmi_330.apk";xml布局 <Button android:id="@+id/many" android:layout_width="match_parent" android:layout_height="
2020-05-13 15:46:39
136
原创 HttpUrlConnection下载文件
*添加权限* <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" />代码实现
2020-05-12 17:25:21
271
原创 Retrofit文件下载
添加权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" />代码priva
2020-05-12 17:23:52
3695
原创 OkHttpClient文件下载
private void ok() { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url(apk).build(); okHttpClient.newCall(request).enqueue(new Callback() { private int progess; @O
2020-05-12 17:21:54
1547
原创 Retrofit上传文件
添加权限<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.ptermission.WRITE_EXTERNAL_STORAGE"/>接口public interfac
2020-05-12 09:09:48
370
原创 相册选取照片并上传
开启相册并选择图片上传(注意权限处理):private void openAlbum() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*"); startActivityForResult(intent,ALBUM_CODE); }意图回调获取图
2020-05-11 21:58:56
261
原创 拍照获取文件并上传
打开相机拍照并将图片返回上传到服务器: //处理权限 private void takePhoto() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { openCamera(); } else { ActivityCompat.reques
2020-05-11 21:54:02
483
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人