<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sclgxt的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/sclgxt</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sclgxt]]></copyright><item><title><![CDATA[OTA升级常见问题及流程]]></title><link>https://blog.csdn.net/sclgxt/article/details/116986086</link><guid>https://blog.csdn.net/sclgxt/article/details/116986086</guid><author>sclgxt</author><pubDate>Tue, 27 Jul 2021 14:25:22 +0800</pubDate><description><![CDATA[OTA升级1.日志查看2. SELinux权限QA2.1示例一:2.2示例二:2.3注意2.4关闭SELinux权限检查3.升级包制作3.1整包3.2差分包4.升级包上传&amp;升级任务建立5.版本校验&amp;升级包下载6.升级流程其他升级方式1.通过Recovery SD卡方式2.通过Android adb命令方式
1.日志查看
通过查看recovery日志分析问题
通过adb shell logcat -v time &gt;upgradelog.txt,输出升级过程日志,查看问题卡在何处。
通过a]]></description><category></category></item><item><title><![CDATA[Android Red5视频通讯第四篇：推流]]></title><link>https://blog.csdn.net/sclgxt/article/details/103529984</link><guid>https://blog.csdn.net/sclgxt/article/details/103529984</guid><author>sclgxt</author><pubDate>Fri, 13 Dec 2019 16:47:50 +0800</pubDate><description><![CDATA[AndroidRed5视频通讯第四篇：推流

1.布局视频预览


&lt;com.xxx.xxx.WechatCameraView

android:id="@+id/wechat_cameraview"

android:layout_width="79px"

android:layout_height="106px"

an...]]></description><category></category></item><item><title><![CDATA[Android Red5视频通讯第三篇：视频数据采集]]></title><link>https://blog.csdn.net/sclgxt/article/details/103529420</link><guid>https://blog.csdn.net/sclgxt/article/details/103529420</guid><author>sclgxt</author><pubDate>Fri, 13 Dec 2019 16:25:15 +0800</pubDate><description><![CDATA[Android Red5视频通讯第三篇：视频数据采集

1.视频编码RemoteUtil.java


import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
/**
* ...]]></description><category></category></item><item><title><![CDATA[Android Red5视频通讯第二篇:音频数据采集]]></title><link>https://blog.csdn.net/sclgxt/article/details/103529024</link><guid>https://blog.csdn.net/sclgxt/article/details/103529024</guid><author>sclgxt</author><pubDate>Fri, 13 Dec 2019 16:11:42 +0800</pubDate><description><![CDATA[Android Red5视频通讯第二篇:音频数据采集

1.音频数据编码

采用speex编码。编译so库

https://download.csdn.net/download/sclgxt/12031721



例子中已经有编译好的so文件

2.jni使用new package com.speex.lib，新建Speex.java


//包名不能改
package com.speex....]]></description><category></category></item><item><title><![CDATA[Android Red5视频通讯第一篇：连接服务器]]></title><link>https://blog.csdn.net/sclgxt/article/details/103523537</link><guid>https://blog.csdn.net/sclgxt/article/details/103523537</guid><author>sclgxt</author><pubDate>Fri, 13 Dec 2019 11:22:16 +0800</pubDate><description><![CDATA[Android 视频通讯第一篇：连接服务器

1.开发环境

开发工具：AndroidStudio、Kotlin

使用jvu-rtmp-client-1.5.10.此版本为破解版本





2.连接

2.1声明red5Client，回调接口


private var red5Client: INetConnection? = null

private val singleExecut...]]></description><category></category></item><item><title><![CDATA[自定义View SwitchButton]]></title><link>https://blog.csdn.net/sclgxt/article/details/81281262</link><guid>https://blog.csdn.net/sclgxt/article/details/81281262</guid><author>sclgxt</author><pubDate>Mon, 30 Jul 2018 10:51:53 +0800</pubDate><description><![CDATA[ 

Note:代码总共140行许，实现按压高亮，可自由拖动效果

1.准备素材：四张图片

switch_bar_light.png



switch_bg_left.png



switch_bar.png



switch_bg_right.png



2.效果图



3.代码


package com.carsyso.radiosurface.view;

import com...]]></description><category></category></item><item><title><![CDATA[Java break return continue]]></title><link>https://blog.csdn.net/sclgxt/article/details/79011450</link><guid>https://blog.csdn.net/sclgxt/article/details/79011450</guid><author>sclgxt</author><pubDate>Tue, 09 Jan 2018 11:59:28 +0800</pubDate><description><![CDATA[break：默认作用于当前循环，跳出当前循环，当前循环接下来所有动作不再执行，如果外面还有嵌套的循环跳不出去
return:直接跳出当前方法，结束循环；
continue：默认作用于当前循环，结束当前循环这次循环中接下来的动作，进入当前循环的下次循环；


public static void recycle() {
A: for (int i = 1; i 
B: for (int]]></description><category></category></item><item><title><![CDATA[Java try cathc finally 分析]]></title><link>https://blog.csdn.net/sclgxt/article/details/79011011</link><guid>https://blog.csdn.net/sclgxt/article/details/79011011</guid><author>sclgxt</author><pubDate>Tue, 09 Jan 2018 11:29:09 +0800</pubDate><description><![CDATA[1.执行顺序
try{
}catch(Exception e){
}finally{
}
首先执行，try｛｝里面的语句，如果try｛｝有异常，则执行catch(Exception e){}中的语句；最后无论如何都会执行finally｛｝中的语句；
2.return（三个里面都有return 返回哪一个）
按照执行顺序，如果最后执行return语句是finally｛｝中，则retur]]></description><category></category></item><item><title><![CDATA[Java String +运算]]></title><link>https://blog.csdn.net/sclgxt/article/details/78960935</link><guid>https://blog.csdn.net/sclgxt/article/details/78960935</guid><author>sclgxt</author><pubDate>Wed, 03 Jan 2018 14:40:45 +0800</pubDate><description><![CDATA[总结：+运算如果全部是常量那么会在常量池中寻找或者创建(相当于=“”)，只要含有一个变量或者对象（new String（））最终会在堆中创建一个对象（相当于new String()）
        



        private static final String s11="hello";
private static final String s22="world";]]></description><category></category></item><item><title><![CDATA[Java String类型在方法之中的参数传递]]></title><link>https://blog.csdn.net/sclgxt/article/details/78958316</link><guid>https://blog.csdn.net/sclgxt/article/details/78958316</guid><author>sclgxt</author><pubDate>Wed, 03 Jan 2018 10:14:26 +0800</pubDate><description><![CDATA[参考Java String =“ ”和 new String的区别详解.
http://blog.csdn.net/sclgxt/article/details/78952880
总结：String数据类型，通过=“”创建的对象在方法之中传递的常量池之中的常量的引用，通过new String传递的是堆中对象的引用；值得注意的是，一旦在方法之中通过任何方式对String数据类型进行修改，那么方法]]></description><category></category></item><item><title><![CDATA[Java String =“ ”和 new String的区别详解]]></title><link>https://blog.csdn.net/sclgxt/article/details/78952880</link><guid>https://blog.csdn.net/sclgxt/article/details/78952880</guid><author>sclgxt</author><pubDate>Tue, 02 Jan 2018 16:14:47 +0800</pubDate><description><![CDATA[Java String =“ ”和 new String的区别在说明两者区别之前，先说明两个概念:常量池和堆常量池：常量池在java用于保存在编译期已确定的，已编译的class文件中的一份数据。它包括了关于类，方法，接口等中的常量，也包括字符串常量，如String s = "java"这种申明方式；当然也可扩充，执行器产生的常量也会放入常量池，故认为常量池是JVM的一块特殊的内存空间。堆：简单来说]]></description><category></category></item><item><title><![CDATA[java 反射简单运用]]></title><link>https://blog.csdn.net/sclgxt/article/details/78612128</link><guid>https://blog.csdn.net/sclgxt/article/details/78612128</guid><author>sclgxt</author><pubDate>Thu, 23 Nov 2017 11:02:20 +0800</pubDate><description><![CDATA[0基础
Method getDeclaredMethod(String name, Class… parameterTypes)
          返回一个 Method 对象，该对象反映此
Class 对象所表示的类或接口的指定已声明方法。
(该类声明的所有方法的单个,name:方法名,parameterTypes:参数类型.Class) 
Method[] getDeclaredM]]></description><category></category></item><item><title><![CDATA[Recyclerview adapter.notify几个方法内存占用分析]]></title><link>https://blog.csdn.net/sclgxt/article/details/78500636</link><guid>https://blog.csdn.net/sclgxt/article/details/78500636</guid><author>sclgxt</author><pubDate>Fri, 10 Nov 2017 15:54:56 +0800</pubDate><description><![CDATA[1.adapter.notifyItemChange(position) 占用内存少
adapter.notifyDataSetChanged() 占用内存多,
在做D3Radio 电台列表的时候:来回反复调两个RecyclerView AM 和FM adapter.notifyDataSetChanged()时候导致内存居高不下,最后调adapter.notifyItemChange(pos]]></description><category></category></item><item><title><![CDATA[深度解析ViewPager  页面 滑动效果PageTransformer]]></title><link>https://blog.csdn.net/sclgxt/article/details/75572229</link><guid>https://blog.csdn.net/sclgxt/article/details/75572229</guid><author>sclgxt</author><pubDate>Thu, 20 Jul 2017 18:39:46 +0800</pubDate><description><![CDATA[在
public void transformPage(View view, float position) 方法中, 会传递两个参数, 且
 该View 对应 当前的 position 
position为float类型,可知position可为小数,position 有一下几个区间: 
1.position=0,静止状态下当前显示的page的位置
2.position=1,静止状态下]]></description><category></category></item><item><title><![CDATA[RecyclerView跨行显示]]></title><link>https://blog.csdn.net/sclgxt/article/details/75570619</link><guid>https://blog.csdn.net/sclgxt/article/details/75570619</guid><author>sclgxt</author><pubDate>Thu, 20 Jul 2017 17:43:51 +0800</pubDate><description><![CDATA[设置跨行需要注意两点

1.在CreateViewHolder的时候使用下面的方法
View cardView = LayoutInflater.from(parent.getContext()).inflate(        R.layout.header_view_folder, parent, false);return new FolderHeadViewHolder(cardVi]]></description><category></category></item><item><title><![CDATA[Android 点击按压效果selector]]></title><link>https://blog.csdn.net/sclgxt/article/details/72910012</link><guid>https://blog.csdn.net/sclgxt/article/details/72910012</guid><author>sclgxt</author><pubDate>Thu, 08 Jun 2017 09:13:12 +0800</pubDate><description><![CDATA[1 enabled+pressed

1.1.1无效

&lt;?xml version="1.0" encoding="utf-8"?&gt;

&lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;



&lt;item android:drawable="@drawable/icon_fm_p...]]></description><category></category></item><item><title><![CDATA[不可滑动的ViewPager]]></title><link>https://blog.csdn.net/sclgxt/article/details/72909943</link><guid>https://blog.csdn.net/sclgxt/article/details/72909943</guid><author>sclgxt</author><pubDate>Thu, 08 Jun 2017 09:06:30 +0800</pubDate><description><![CDATA[mport com.uninew.util.LogTool;


import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.Mo]]></description><category></category></item><item><title><![CDATA[自定义listview快速滚动条]]></title><link>https://blog.csdn.net/sclgxt/article/details/70159373</link><guid>https://blog.csdn.net/sclgxt/article/details/70159373</guid><author>sclgxt</author><pubDate>Thu, 13 Apr 2017 18:03:47 +0800</pubDate><description><![CDATA[1.滚动条
package com.example.myviews.views;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android]]></description><category></category></item><item><title><![CDATA[Android viewpager之view的重用]]></title><link>https://blog.csdn.net/sclgxt/article/details/53811477</link><guid>https://blog.csdn.net/sclgxt/article/details/53811477</guid><author>sclgxt</author><pubDate>Thu, 22 Dec 2016 10:55:24 +0800</pubDate><description><![CDATA[//原理:1.public Object instantiateItem(ViewGroup container, int position)

// 2.public void destroyItem(ViewGroup container, int position, Object object)
//用一个链表,把移除出去的view保存起来,在初始view的时候,判断链表之中是否有待重]]></description><category></category></item><item><title><![CDATA[Android studio添加/创建自定义外包]]></title><link>https://blog.csdn.net/sclgxt/article/details/51940728</link><guid>https://blog.csdn.net/sclgxt/article/details/51940728</guid><author>sclgxt</author><pubDate>Mon, 18 Jul 2016 11:45:36 +0800</pubDate><description><![CDATA[1.如果是文件夹的形式,也就是是说把其他项目中的外包,直接拷贝到自己项目的目录之下例如: 
 
那么需要在settings.gradle之中添加 
 
然后呢,在app目录下添加依赖关系 
 
2.还有一种就是,在其他项目之中编译过后会生成一个arr文件,把它拷贝到app的lib之中去,随便考一个. 
 
然后在app下的build.gradle之中对应着你拷贝的文件,添加依赖关系 
 
至于外包哪]]></description><category></category></item></channel></rss>