自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坚持,努力

android&linux

  • 博客(50)
  • 资源 (7)
  • 收藏
  • 关注

原创 android 动态修改Flutter中的 SplashScreenDrawable

SplashScreenDrawable

2022-06-09 15:01:03 614

原创 android textview.SettextSize不起作用的解决方法

android texview在代码中动态的设置textSize不起作用,而settextcolor却有效,调用刷新也不起效,这个时候可以用 SpannableString lightSp = new SpannableString(getString(R.string.light_device)); lightSp.setSpan(new AbsoluteSizeSpan(textSmallSize, false), 0, lightDeviceTxt.

2020-11-30 14:26:17 2149

原创 android 指纹锁工具类

android sdk版本超过23以上就可以支持添加指纹识别功能,因此可以为自己的应用添加指纹锁这个概念的启动限制。高于23,少于28版本的,调用方法后如果屏幕前盖有指纹工具的话会显示指纹锁出来,高于28版本会出来指纹锁识别对话框,由系统本身提供,有回调函数支持各种事件,记录下具体的识别工具类。import android.app.Activity;import android.app.KeyguardManager;import android.content.Context;import a

2020-11-27 11:57:15 362

原创 android opencv单机版人脸识别+比对

原理: 通过android 系统自带的谷歌人脸识别获取响应的图片,保存在本地,然后跟先前的照片作比较,相似度大于0.8可以算为同一个人java 部分代码:package com.example.faceapp;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.co

2020-11-20 18:19:41 1699

原创 android 蓝牙开发总结

,Android 蓝牙开发主要分为传统蓝牙/ble开发,前者通过建立rf通道后进行输入输出流的信息交互,后者是通过修改特征值和监听特征值来实现智能硬件和手机设备的交互。所以开发前就要确定到底要使用哪种,因为存在着各自的优缺点。传统蓝牙的优点:没有限制信息的长度,能根据自我定义的byte长度进行输入,只要加上自家定义好的协议就能区分有没有错误数据,且不用担心频繁操作或者操作缺失而导致的搜索不到问题。缺点:搜索时间略长,与ble差距极大,调用startDiscovery后是根据接收.

2020-07-22 22:58:40 1234 1

原创 android openGl连续录制多个视频

继上篇文章的代码,在原来基础之上添加时间判断,到时间则切换至下一个录制器。在java层我想到的逻辑就是用不同的MediaMuxer来实现,当然你也可以选择将一个视频切割为多个视频来间接实现。下面只是粗略写下,没有根据时间戳来命名文件名,10秒到了后将视频丢到next.mp4录制。需要注意的是,如果将muxer放置主线程中释放资源,则大约耗时800ms,不同机型不同配置可能耗时更长,所有要将其放置子线程释放。主要代码:package com.my.video.utilimport a

2020-07-06 11:01:23 616

原创 android openGL时间戳水印录制

Android录制视频带水印有在openGl中绘画再通过mediaCodec+EGLSurface读取出来,还有就是不渲染的情况下将camera的byte数组与时间戳生成的图片数组转为二进制数据混合一起,又或者录制完之后用ffmpeg后期补充水印。此文主要讲第一个,代码下载:https://download.csdn.net/download/gan303/12509216主要代码:package com.my.video.surfaceimport android.graphics.Su

2020-06-10 09:52:36 1657

原创 android openGl录制音视频

步骤->将camera预览至GlSurfaceView上,然后通过EGLSurface+MediaCodec+AudioRecord+MediaMuxer后台录制成Mp4主要代码:package com.my.videoimport android.graphics.SurfaceTextureimport android.opengl.GLES20import android.opengl.GLSurfaceViewimport javax.microedition.khrono

2020-06-08 15:47:36 1177

原创 Android OpenGl展示视频内容

Android中OpenGL展示视频内容和预览摄像头数据用的纹理ID都是GLES11Ext.GL_TEXTURE_EXTERNAL_OES,所以可以直接按照上一篇的预览Camera基础之上,继承OesFilter,共用同一个GlSurfaceView,根据新生成的纹理ID创建SurfaceTexture绘画即可。class CodecRender(val surface: CodecSurface) : GLSurfaceView.Renderer { private val TAG: Str

2020-05-20 09:32:17 330

原创 android openGL 预览camera/camear2

//权限请求和切换摄像头class CameraActivity : Activity() { private var surface: CodecSurface? = null private var btn: Button? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) window.addFlags(.

2020-05-19 15:40:45 917

原创 Android mediaCodec+audioTrack+mediaExtractor播放aac

class PlayAAC : Activity() { val TAG: String = "PlayAAC" val aacPath: String = "/sdcard/test/test.aac" val streamType: Int = AudioManager.STREAM_MUSIC val streamRate: Int = 22050 val channelConfig: Int = AudioFormat.CHANNEL_CONFIGURAT..

2020-05-12 17:33:09 333

原创 android MediaExtractor分离并播放pcm

//activity 1class Video2PcmActivity : Activity() { val TAG: String = "Video2PcmActivity" val filePath: String = "/sdcard/test/test.mp4" val pcmPath: String = "/sdcard/test/test.pcm" override fun onCreate(savedInstanceState: Bundle?) { .

2020-05-11 16:09:30 448

原创 android 录制视频技术记录

Android 录制视频可以大致分为: 直接录屏,带滤镜的录屏前者就是直接根据camera的onpreviewcallback返回的byte数组,然后传输,又或者根据camera2的ImageReader来获取预览数据,这就需要根据自己的版本设定来选择了,又或者根据设备的版本来做出兼容,当然方案2更为合适,至于音频方面就简单得多,都是通过AndroidRecord来read当前的音频数据,然后...

2020-04-28 10:45:30 550

原创 (算法题)给定一个字符串,求第一个不重复的字符

public static void main(String[] args) { String str = "abbaddxyyu"; char result = 0; char tempChar = 0; char[] testData = str.toCharArray(); StringBuffer s...

2019-10-23 18:03:11 623

原创 (算法题)标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号

public static int getLastPeopleNum(ArrayList<Bean> tempList, int mode) { if (tempList != null) { ArrayList<Bean> list = (ArrayList<Bean>) tempList.clone();...

2019-10-23 17:14:44 564

原创 android Parcelable encountered IOException writing serializable object解决方法

这个错误具体没有指向我们能编辑的代码某一行,所以只能从序列化方面开始着手。而网上的解决方法大多指向了我们序列化传输实体类中的某一项并没有实体类,这里说下另外一种情况。那便是Fragment中传输序列化对象后,启动新的activity报此类错误的情况。由于我们新的Activity并不需要这个序列化对象,所以着手点并不在于序列化对象本身,而是在于生命周期内@Overrideprot...

2019-08-27 16:19:30 1781

原创 android TextView自适应间距

android中原生的TextView会因为各种英文字符或者特别符号、颜文字等,判定没有足够空间时会自动换行,因为需要自己重写并适配好这样的问题,下面分享下这样的控件代码public class JustifyTextView extends TextView { private int mLineY; private int mViewWidth; public...

2019-03-12 16:36:48 917

原创 android 人脸区分简要

最近一直在看openCv,用处很多。比方说人脸识别,图片处理等,当然最主要的还是用来做人脸识别。那么,怎么人脸识别法呢? 主要是用到了直方图匹配。什么意思呢,可以参考下支付宝等手机里面那个人脸识别内容框,其实里面已经固定好了一个大小。然后跟第一次注册时的实名人脸做对比。里面的技术内容很多,最初有图片的截取,保存、上传。其次有实时的人脸图片匹配,里面包括了转化灰度图,计算直方图,...

2018-10-10 16:45:51 218

原创 android ubuntu编译ffmpeg

1.下载ffmpeg的源代码2.新建脚本编译文件build_android.sh,如果要编译其他cpu格式,修改cpu处的赋值即可#!/bin/bashmake clean# NDK的路径,根据自己的安装位置进行设置export NDK=/home/gjh/android-ndk-r10eSYSROOT=$NDK/platforms/android-19/arch-arm/TO...

2018-08-25 11:09:13 710

原创 android cannot call this method while recyclerview is computing a layout

报错的原因出自源代码的异常抛出,解决办法既不是放在主线程也不是判断滚动标识位再刷新,加个延迟刷新即可。应用场景可在Focus事件中取消上一次的刷新并开启加500毫秒的延迟任务即可。这时实际上已经滚动结束了。...

2018-08-17 16:41:10 945

原创 android DLNA投屏

android投屏技术的基本原理就是根据DLNA以及UPNP来实现,另外还有些黑科技技术便是根据端口号或者通过广播来用adb下载本身相关的apk来间接实现投屏,当然此处不提及黑科技。原理什么的百度一堆。这里主要讲实现方式和具体实现的代码。那么,开始开发这玩意的时候肯定要先看看有没有现成的轮子,git上是有轮子的,链接如下:https://github.com/4thline/cling 最...

2018-05-04 17:44:38 21079 4

原创 android studio编写jni代码自动补全

android studio中编写Jni的时候非常不方便,没有代码不全,有些是因为环境没配好,有些是配置没写全。插件下载的话不必多说,都是在setting里面下载好即可,下面说下如何让jni中的cpp或者c文件代码可以自动补全。我们需要在工程中的Build文件上配置上下面这句话即可:sourceSets.main { jni.srcDirs = ['src/main/jni'] j...

2018-02-25 10:25:21 4692

原创 openGl oom的解决方法

android需要用到openGL的时候基本都会使用到硬件加速,而一旦超出机器的承受范围,轻则卡顿,重则直接报openGl out of memory。那么,怎么解决呢?1.最不靠谱的就是去掉硬件加速,使用软件加速或者不用加速,那么就会变得卡顿起来2.减少重绘主要是减少布局的层次,尽量一个frameLayout解决层次关系3.减少图片的内存使用可以看下自己用的图片本身的

2017-12-07 17:30:26 824

原创 android setVisibility(GONE)不及时刷新的问题

android中需要根据接口返回或者获取完用户登录信息后进行数据刷新的地方很多,基本都会用到view.setVisibility(View,VISIBLE)或者VIEW.GONE来实现界面上的刷新。然而有些时候或者有些设备上,调用这些方法会有显示异常的问题,具体表现为调用无效或者调用有效,但是控件本身消失但仍占据控件。之所以有这种情况的原因大致上有两种:1.控件本身正在执行动画

2017-07-26 10:55:14 11004 4

原创 android 从imageloader中取出缓存中的图片

android项目中有时需要从缓存中获取出已经加载好的图片,以免进行二次加载浪费流量和时间,因此,需要从imageloader本身缓存中获取出已经加载好的图片做法如下:Bitmap bitmap = ImageLoader.getInstance().getMemoryCache().get(bean.pic);if (bitmap == null) { String pat

2017-06-15 10:52:15 1047

原创 java 获取两颜色值的中间值

有时候做项目的时候,需要动态的计算两颜色值之间的中间值,然后做出一定的效果,那么该怎么求呢? 下面说说做法:简单而言,就是需要对两颜色之间的求和再取平均值,但是直接使用color.parseInt再求和除2是不对的,因为直接求和会导致颜色不对,具体原因出自相加求和颜色退位。那么,该如何算呢,贴下代码:public static String getMiddleColor(Str

2017-06-13 19:39:58 2208 1

原创 android ContentProvider读取其他应用数据库

android中,保存和读取数据数据的方式很多种,大致上有网络保存,内存记忆,文件保存和数据库保存。而应用之间的数据库数据分享,读写,主要用到的便是ContentProvider.为什么这么说呢? 如果能直接读取数据库文件的话会快很多,然而我们并没有直接读写数据库文件即****.db的权限,即便实在cmd命令下ls目录,也会直接提示permission denied.因为我

2016-10-24 14:36:33 5005

原创 android 识别U盘以及读写文件

android中读写文件的需求地方很多,其中就包括了识别U盘,弹出U盘,读写U盘的文件等。那么,如何实现这些需求呢?笔者简单的说下:1.识别U盘:识别U盘的方法只要是用到了2个android官方类。它们分别为:ContentResolver和AsyncQueryHandler。表现为前者提供内容给后者读取。作法如下:1)获取状态并遍历contentO

2016-08-29 10:29:05 18454 23

原创 android 细数断点续传的坑

android项目中,不可避免会下载一些第三方应用,或者自身更新的包,或者下载视频文件,那么都会考虑用到断线续传的方式。那么,断电续传的方式大概有3种:1.比如下载视频的时候,调用js的方法,把文件下载下来,然后用randomAccessFile合并成一个文件。2.如xUtils的断点续传代码,具体自己看。3.利用sqlite,配合上randomAccessFile

2016-05-08 11:13:22 4678

原创 android popwindow和dialog的取舍

android之中,对话窗口使用率极高,表现在提示用户或者是弹出操作栏之上。那么,他们之前的取舍应该在哪呢?首先对比一下他们之间的共同之处1.都可以根据setContentView来设置窗体的自定义内容2.都可以根据setCanceledOnTouchOutside来搞定点击外部取消对话框3.基本上都可以出现在大部分位置,只要表现在popwindow是通过动画,

2016-02-27 13:20:24 4162

原创 android sqlite更新版本并记录旧数据

android开发中,不时会用到数据库,而android机子中本身就自带了sqlite这个小型数据库,因此我们可以直接运用它。而版本迭代时,数据库表中的字段会不时增加或者减少,或者是增加几个表,除了我们在SQLiteOpenHelper中进行代码更新修改外,还需要在添加回先前数据库中的数据。直接看看主要的代码:public class DatabaseHelper ex

2016-02-17 17:35:29 518

原创 android 仿QQ音乐歌单效果

最新的项目里面,有一个需求比较好玩,就是要仿造下QQ音乐里面的歌单上下切换效果,如下先做一个类似的效果,测试效果如下:

2016-02-17 09:53:53 6077 1

原创 android 截屏内容的获取

有些app的开发需求中或许会包含 得到截屏的图片 截屏的通知等情况。那么来讲一下如何获取。当然截屏的快捷键自己网络查询。主要用到的类为ContentObserver,下面来看看详细的代码: private static final String EXTERNAL_CONTENT_URI_MATCHER =        MediaStore.Images.Media

2016-02-16 16:23:37 972

原创 android view简单水平垂直移动的api运用

在实际的开发之中,很多时候需要根据手势或者按钮的点击来修改某些空间的位置,一般常见的做法为1.根据手势所获得的x,y坐标,重新调用view.layout方法,随之把参数都设置进去。2.使用属性动画,也就是object.animation的方法,设置透明或者x,y方向上的改变,当然做这个要考虑低版本的处理,需要导入nineOldandroid包来兼容。3.使用补间动画,也就是Alpha、

2016-01-29 17:11:35 1680

原创 android eclipse代码混淆

android 代码是开源的,这个大家都知道,不加密或者不混淆的话别人很容易通过反编译的工具查看我们的代码甚至是通过逆向工程什么的直接篡改我们的app,加个广告就当自己的应用上传上去。因此,混淆是必要的。网上有很多第三方加固,如百度加固,360加固等,但是这些加固会存在一些问题,比如在一些机型上跑不起来或者开启时卡顿的时间长。因此,这篇简单的说下如何混淆。具体的

2015-12-29 11:47:05 2201

原创 android fragment报Fragment already active

android fragment的用处非常大,常用于同一界面下点击下方或者左/右侧菜单栏切换不同的内容。普通操作下并没有问题,但是在专业人员的测试下就有问题了,如Fragment already active,或者no host。这2个问题主要的原因有如下2点。第一点:每一次切换并没有写FragmentTransaction fragmentTransaction =

2015-12-28 14:12:35 2755

原创 android imageloader加密解密图片

android 项目中开发为了节省周期又或者不重复造轮子都会选择一些开源框架来设计我们的app,而imageloader是加载网络本地图片的一大利器,但是其本身并未提供加密和解密的方法,需要我们从源码中自己改写。首先简略的说下imageloader的工作原理,在displayImage方法中我们可以看到:Bitmap bmp = configuration.memoryCa

2015-12-11 17:36:27 2932

原创 android imageview倒影

在很多的手机和电视应用中,好看的效果都离不开倒影。而目前大部分的都是在同一个imageview中做倒影,也就是原图和倒影图一起,重新组合成一个图片并绘画上去。但是对于一些可以选中,但是倒影不需要放大和变化的应用来说,并不符合实际的开发需求。因此,对于这样的需求,可以考虑2个imagview来实现,上下来叠加,一个可以focused,另外一个只作为获取前一

2015-11-13 15:09:53 1654

原创 android更新app未读消息数目在app图标的办法

很多时候,自己写的app会推送或者提示用户有新的内容或者消息时,为了让用户注意,一般都会在app图标处或app内容中的消息界面中有数目提示,但是一般都是前者的用户体验效果更佳。因此,对于这类的写法,谷歌提供了下面的写法: Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE")

2015-09-21 16:17:30 5543 3

原创 android仿音乐引用锁屏切换音乐歌曲壁纸

在许多音乐应用中,一般都会附带有锁屏时切换壁纸,解屏时还原的功能以及有开屏时的状态通知栏有歌曲的提示和播放进度等。现在来说说怎么简单的就实现锁屏切换壁纸的功能。首先,要先写好广播,用于监听锁屏和开屏等系统广播,如下: BroadcastReceiver mybroadcast = new BroadcastReceiver() { private String acti

2015-09-21 13:07:00 2646

openGL时间水印录制

openGL时间水印录制,录制成Mp4文件,支持多种滤镜等

2020-06-10

OpenGl录制音视频

android录制音视频,有声音有画面有聚焦功能,支持切换前后摄像头等

2020-06-08

android DLNA代码

android DLNA投屏,支持网络在线视频,具体代码欢迎下载观看

2018-05-04

android3DimageSwitch

android3D版imageswitch,但是回收未实现完整,需要自我改善

2015-10-16

android3DGallery

3Dgrallery,android版,需要4张以上的图片才可以正常运行

2015-10-16

Shell编程从入门到精通

Linxu下shell从入门到精通,超值

2014-01-31

Volley框架包

android流行的volley包,方便开发,用的简洁。

2014-01-31

空空如也

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

TA关注的人

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