- 博客(113)
- 资源 (52)
- 问答 (1)
- 收藏
- 关注
原创 Android Binder机制
1.Binder是Android中的一个类,它继承了IBinder接口。2. 从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在linux中没有3. 从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,etc)和相应ManagerService的桥梁。
2025-02-22 11:42:46
1247
原创 android 差值器的使用
1、系统插值器主要有下面几种AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速 AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速 AnticipateInterpolator 开始的时候向后甩一点然后向前 AnticipateOvershootInterpolator 开始的时...
2025-02-22 10:30:17
248
1
原创 Android Handler的机制跟源码分析
不断循环执行 Looper.loop() ,从 MessageQueue 中读取 Message ,按分发机制将消息分发出去给目标处理(将 Message 发到 Handler.dispatchMessage 方法去处理)。上面讲到了新建Message推荐使用 obtain() ,因为可以有效的复用消息,其中里面复用的就是 sPool 变量,它是在Message回收的时候进行赋值的。在应用启动时,会执行 main() 方法, main() 会创建一个 Looper 对象,然后开启一个死循环,目的是不断从。
2025-02-11 21:20:42
760
原创 android 用户空间切换流程
在Android开发中,创建和切换用户是一个重要的功能,特别是在需要多用户支持的应用中,下面讲述一下用户切换的流程。
2024-12-23 10:00:10
951
原创 Android 音视频编解码器 MediaCodec
在Android中是使用MediaCodec类进行编解码。MediaCodec是什么呢?MediaCodec是Android提供的用于对音视频进行编码(压缩)和解码(解压缩)的类,它通过访问底层的codec来实现编解码的功能,比如你要把摄像头的视频yuv数据编码为h264/h265,pcm编码为aac,h264/h265解码为yuv,aac解码为pcm等等。MediaCodec是Android 4.1 API16引入的,在Android 5.0 API21加入了异步模式。
2024-12-19 16:29:47
357
原创 MediaPlayer 源码分析
MediaPlayer有create(),prepare(),prepareAsync(),setDataSource(),start(),pause(),release()等方法,MediaPlayer代码路径是在frameworks/base/media/java/android/media/MediaPlayer.java,MediaPlayer继承PlayerBase,并且实现了SubtitleController.Listener, VolumeAutomation和AudioRouting接口。
2024-12-12 17:58:43
144
原创 android MediaPlayer音效可视化--Visualizer
Visualizer 是使应用程序能够检索当前播放音频的一部分以进行可视化。它不是录音接口,仅返回部分低质量的音频内容。但是,为了保护某些音频数据的隐私,使用 Visualizer 需要 android.permission.RECORD_AUDIO权限。捕获的长度可以通过分别调用和方法来检索或指定。捕获大小必须是返回范围内的 2 的幂。
2024-11-25 19:45:18
395
原创 android 使用实现音效--Equalizer
这里只是介绍10段音效,五段同理,可以用seekbar实现10段频率音效,然后去调节每个,再记录不同的值,可以参考酷狗音乐等的音效去设置差不多的值,然后记录下来,再设置进去即可。这里调了两个音效,实际可以发挥自己想象力跟音乐细胞创作无限音效。
2024-11-19 23:52:23
2048
原创 android 使用MediaPlayer实现音乐播放
多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用API。MediaPlayer初始化只需要直接创建即可,添加播放完成跟错误监听。一般我们初始化还可以首次将上次播放的音乐跟播放进度设置进去,mMediaPlayer?.setDataSource(music.data)是设置播放音乐数据,mMediaPlayer?
2024-11-19 20:19:54
943
原创 android 使用MediaPlayer实现音乐播放--获取音乐数据
前面已经添加了权限,有权限后可以去数据库读取音乐文件,一般可以获取全部音乐、专辑、歌手、流派等。数据类MusicData。1. 获取全部音乐数据。2. 获取流派音乐数据。
2024-11-19 13:04:43
451
原创 android 使用MediaPlayer实现音乐播放--权限请求
随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步改变。用户如果不同意权限可以跳转到设置找到应用去同意添加权限,用户有可能会拒绝权限请求,最好在界面添加可以继续请求的按钮或者直接跳转到设置里面让用户找到应用去添加需要的权限。处理权限请求结果,如果全部权限都已同意可以去做初始化,一般我们做权限请求最好每个功能点需要用到的权限一个个去请求会更友好。权限,系统只会显示一个系统权限对话框。
2024-11-19 09:47:58
775
原创 android 使用MediaPlayer实现音乐播放--基础介绍
你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用。, 因为它 当您的 activity 未与产品互动时,就应该继续保留该 activity 并无意义。当然,当 activity 恢复或重启时,您需要 请创建一个新的。MediaPlayer适合播放大的实时性要求不高的音频,其主要方法有: static MediaPlayer create(Context context,int resid)因此,您应始终采取额外的预防措施,
2024-11-18 23:06:42
614
原创 dokka实现
1、app项目下的build.gradle 的dependencies下添加。3、将库下面的build.gradle改成build.gradle.kts。2、settings.gradle 的repositories添加。4、将build.gradle.kts的plugins添加。5、修改build.gradle.k。
2023-04-19 20:50:46
556
原创 android 实现自定Seekbar
可实现左边跟中间滑动显示Seekbarpackage com.android.myapplication;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;
2022-04-25 22:47:42
2727
原创 android 解决android studio编译慢问题
1、我们编译代码的时候经常会出现build超级慢,有时候可能得等十几二十分钟,因为我们用了谷歌的加载导致会很慢(maven { url "https://maven.google.com/"}),这句一定不能加,可以加阿里云的,这样我们编译速度会快非常多倍,下面是配置文件,对着加进去就可以了。buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/pub.
2020-12-28 10:31:32
1295
原创 android Activity转场动画makeSceneTransitionAnimation
1、activity转场动画实现有很多,这里主要记录ActivityOptions实现转场动画。1、makeSceneTransitionAnimation实现,网上很多说要添加下面这句代码<item name="android:windowContentTransitions">true</item>或者Activity中添加requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);,但是实际不添加也可以2、
2020-08-10 22:29:25
2569
原创 Android recyclerView实现二级横向显示
1、效果图2、主要实现比较简单,首先data数据类package com.example.mytestproject.recycle;import java.io.Serializable;import java.util.List;public class RecyclerItem implements Serializable { private int icon; private String name; private List<Integer&
2020-07-15 23:05:14
2519
原创 Android 实现涂鸦笔效果
1、主要可以通过手指绘制各种图案、还可以清除回撤等效果,实现比较简单。2、主要实现代码,功能实现比较简单。package com.example.mytestproject;import android.content.Context;import android.graphics.BlurMaskFilter;import android.graphics.Canvas;import android.graphics.Color;import android.graphi.
2020-07-08 22:28:53
1894
2
原创 android 状态栏和虚拟按键栏字体背景颜色设置
1、设置顶部状态栏字体颜色为白色红底public static void setStatusBarColor(Activity context, boolean useThemeStatusBarColor) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上 ...
2019-06-17 22:08:28
1242
原创 android ViewPager+fragment切换动画实现
1、viewPager的fragment切换动画主要实现ViewPager.PageTransformer接口,然后修改下面几个参数实现各种不同的动画切换效果的。setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) 透明度 setTranslationX(float translationX) X轴平移 setTranslationY(fl...
2019-01-23 22:24:15
1476
原创 android 耳机按钮控制音乐播放
1、一般我们耳机上有按钮可以实现音量加减控制中间还有一个按钮也可以监听到它的点击事件。还有就是可以监听到耳机的插拔事件。2、首先实现耳机插拔事件的监听,注册一个插拔事件的静态action<action android:name="android.media.AUDIO_BECOMING_NOISY" />3、注册一个用于监听耳机点击事件的监听<action a...
2018-08-07 23:08:11
2028
原创 android Aes加密解密和Des加密解密
1、Aes加密,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。package com.example.nsc.dataencryptproject;import android.util.Log;import jav...
2018-04-02 18:57:22
694
原创 android jni使用
1、配置添加ndk,然后配置一下环境变量2、配置build.gradle,在defaultConfig中添加//配置ndk信息ndk{ moduleName "JniTest" abiFilters "armeabi","armeabi-v7a","x86"}//配置so文件存放位置sourceSets.main { jni.srcDirs = [] jniLibs.src...
2018-03-31 09:14:59
298
原创 android ContentProvider使用
1、contentProvider可用于进程间的通信,即应用间数据的共享。 2、contentProvider 的数据类型有null、Interger、real(浮点数)、text(字符串)、blob(大数据) 3、contentProvider使用使用首先创建一个数据库,里面可以有多个参数,具体,可自行定义 package com.example.nsc.biglarge;
2017-12-19 18:47:00
385
原创 android 仿微信图片选择器
1、要实现首先在build.gradle中添加下面依赖库compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.android.support:recyclerview-v7:25.0.+'2、需要添加下面三个权限 3、先实现图片选择的activity,这里只使用了recycleView实现图
2017-11-01 22:15:22
682
原创 android Messenger跨进程通信
1、android messager可以实现不同进程之间数据的传递。通过点击进去看messenger类可以看到,我们可以创建一个service用于处理和客户端的连接请求,然后通过handler中创建一个messener对象,实现对service数据传递。/** * Create a new Messenger pointing to the given Handler. Any Mes
2017-09-26 22:15:07
400
原创 android 实现圆形头像
1、首先看一下实现效果2、首先新建一个自定义view实现ImageView,详细可看注释package com.example.a550211.xfermode;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import
2017-09-25 17:16:39
2810
1
原创 android 相机使用(拍照、录像、图片查看、静态人脸识别、延时拍照)
相机是我们最常用的手机应用之一,这里只是实现几个简单的功能、拍照、延时拍照、录像、图片查看等。2、这里主要使用surfaceView实现,首先打开摄像头实现预览,在surfaceCreated中添加/** * 启动预览 */ private void startPreview() { if (mCamera != null || !mIsSurf
2017-09-08 22:39:13
1671
原创 android 实现监听短信接收并将当前位置发送出去
1、获取定位地址,这里使用高德定位,从官网下载定位的jar包AMap_Location_V3.50_20170731.jar包然后在build.gradlecompile files('libs/AMap_Location_V3.5.0_20170731.jar')然后在权限文件中添加需要的权限和申请的key<manifest xmlns:android="http://schemas.an
2017-08-31 19:15:03
2117
1
转载 android 8.0新功能
Skip to content Developers设计 开发 分发navigationAndroidOreoAPI 概览行为变更向 Android 8.0 迁移应用示例后台执行限
2017-08-24 17:08:23
8815
原创 app性能优化
一般我们写的app操作的数据多的时侯或者平时使用的时候都会经常出现卡顿、闪退、ANR停止运行等各种问题。这样会导致用户使用的体验非常差,因此在写代码的时候我们就要注意一些代码的书写方式和做好优化了。一般app的优化我们可以从启动、布局、内存、存储、耗电等进行优化。1、启动优化:*应用的启动分为冷启动和热启动。冷启动:应用第一次启动的时候,系统会为应用创建一个新的进程,所以首先会创建和初
2017-08-14 22:06:34
2472
原创 android 天气预报
获取城市天气数据的途径有很多,这里主要使用高德实现。1、首先到高德官网:http://lbs.amap.com/dev/key/app 注册一个开发者账号,然后在应用管理-->我的应用那里添加一个应用,关于获取SHAI上面有文档可以查看http://lbs.amap.com/faq/top/hot-questions/249 但是其中要注意的是,如果在as的Terminal那里获取
2017-07-26 19:27:25
3790
原创 android 按时间显示图片
实现效果:首先写需要用到的图片数据:时间、文件名、路径等package com.example.a550211.cd;import java.text.SimpleDateFormat;import java.util.Date;/** * Created by xing on 2017/7/4. */public class ImageTime { privat
2017-07-11 19:27:14
4882
5
原创 android 反射使用
1、在我们开发过程中可能会遇到某些类中的方法或变量无法使用,例如加了/** {@hide} */注释的,就是一些隐藏的方法。如果我们用反射就可以轻松调用了。2、虽然如此但反射也有缺点:* 因为是动态执行的,效率自然没有预编译时引用现有的库效率高,就像平时我们Win32开发时,可以不用h文件,直接通过GetProcAddress一样去动态获取方法的地址。当然效率要根据复杂程度而决定,一般
2017-07-06 22:51:41
2359
原创 Java 错误解决之java.lang.IllegalArgumentException: Comparison method violates its general contract
在jdk1.7上使用分类排序会报下面错误java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:743) at java.util.TimSort.mergeAt(TimSort.j
2017-06-21 19:16:28
16997
2
转载 android 右边滑动字母索引使用
1、实现效果2、实现主要时一个listView或者recyclerView跟一个自定义右边a-z的显示自定义view实现,首先自定义view实现首先绘制右边栏a-#,通过获取屏幕的高度然后计算每个字母的高度进行绘制 @Override protected void onDraw(Canvas canvas) { int perTextHeight = get
2017-06-16 23:21:07
4589
1
android Camera
2016-04-21
Android Messenger使用
2017-09-26
imageLoader框架使用
2017-01-04
volley框架使用
2016-12-30
简单好用的上拉加载下拉刷新 BaseRecyclerViewAdapterHelper
2016-12-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人