随记————技术盲区看得到

229 阅读7分钟
19 -->  "KEYCODE_DPAD_UP" 
20 -->  "KEYCODE_DPAD_DOWN" 
21 -->  "KEYCODE_DPAD_LEFT" 
22 -->  "KEYCODE_DPAD_RIGHT"
23 -->  "KEYCODE_DPAD_CENTER" 

adb shell "getprop ro.product.cpu.abi" 查看cpu

查看当前activity

adb shell dumpsys activity | grep "mFocusedActivity"

adb shell dumpsys activity | findstr "realActivity"

textView跑马灯效果

fun setTextMarquee(textView: TextView?) {    if (textView != null) {        textView.ellipsize = TextUtils.TruncateAt.MARQUEE        textView.isSingleLine = true        textView.isSelected = true        textView.isFocusable = true        textView.isFocusableInTouchMode = true    }}

android:focusable="true"android:focusableInTouchMode="true"android:singleLine="true"android:ellipsize="marquee"android:marqueeRepeatLimit="marquee_forever"

gradle下载: gradle.org/releases/

在C:\Users\你自己的用户名\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9目录下放置你下载好的gradle-3.3-all.zip,不用解压,一长串的字母数字的文件夹可能每个人的会不一样;重新启动android studio,再次构建,应该就OK了.

强推,即利用强覆盖的方式将本地的代码替换远程git仓库的内容

git push -f origin

  1. //为项目添加远程仓库 piasy 是远程仓库地址的别名,这个可以随便写,默认是origin
  2. //可以添加多个远程仓库
  3. git remote add piasy github.com/HackWebRTC/…

git remote -v 查看远程分支

Android APP代码混淆

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile


#-------------------------------------------基本不用动区域--------------------------------------------
#---------------------------------基本指令区----------------------------------
-optimizationpasses 5       # 指定代码的压缩级别
-dontusemixedcaseclassnames     # 是否使用大小写混合
-dontskipnonpubliclibraryclasses        # 指定不去忽略非公共的库类
-dontskipnonpubliclibraryclassmembers       # 指定不去忽略包可见的库类的成员
-dontpreverify      # 混淆时是否做预校验
-verbose        # 混淆时是否记录日志
-printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/*,!class/merging/*      # 混淆时所采用的算法
-keepattributes *Annotation*,InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
#----------------------------------------------------------------------------
-ignorewarnings     # 是否忽略检测,(是)
-keep public class javax.**

-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}

-dontwarn com.facebook.**
-keep class com.facebook.**
-keep class com.facebook.** { *; }
-keep enum com.facebook.**
-keep public interface com.facebook.**


-dontwarn aavax.xml.**
-keep class aavax.xml.**
-keep enum aavax.xml.**
-keep public interface aavax.xml.**
-keep class aavax.xml.** { *; }

-dontwarn com.bea.xml.**
-keep class com.bea.xml.**
-keep enum com.bea.xml.**
-keep public interface com.bea.xml.**
-keep class com.bea.xml.** { *; }

# Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase

#------------------------------EventBus3.0-----------------------------
-keepattributes *Annotation*
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

#----------------------------gson---------------------------------------
-keep class com.google.gson.** {*;}
-keep class com.google.**{*;}
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.examples.android.model.** { *; }

#---------------------------定制类---------------------------
-keep class com.tv.terminal.bean.**{*;}
-keep class com.tv.terminal.db.**{*;}

Linux tar 命令

tar 命令其实并不是真的解压缩的处理者,而是使用了 gzip 或者 bzip2 等其它命令来达成,但是 gzip 等命令通常只能处理单个文件,并不方便,所以一般我们都是选择使用 tar 命令间接的完成解压缩。

-z : 使用 gzip 来压缩和解压文件-v : --verbose 详细的列出处理的文件-f : --file=ARCHIVE 使用档案文件或设备,这个选项通常是必选的-c : --create 创建一个新的归档(压缩包)-x : 从压缩包中解出文件

# 压缩文件 file1 和目录 dir2 到 test.tar.gz
tar -zcvf test.tar.gz file1 dir2
# 解压 test.tar.gz(将 c 换成 x 即可)
tar -zxvf test.tar.gz
# 列出压缩文件的内容
tar -ztvf test.tar.gz 

MPEG-4、MPEG-4/AVC、H.264之间的联系与区别

当你在网上下载视频时,经常会看到MPEG-4、h.264等等词汇,它们之间有什么关系吗?

在视频编解码技术定义方面有两大标准机构。一个是国际电信联盟(ITU),致力于电信应用,已经开发了用于低比特率视频电话的H.26x标准,其中包括 H.261、H.262、H.263与H.264;另一个是国际标准化组织(ISO),主要针对消费类应用,已经针对运动图像压缩定义了MPEG标准。MPEG标准包括MPEG-1、MPEG-2与MPEG-4。

一、关于MPEG-4
当初制定MPEG-1和MPEG-2技术时,定位标准均为高层媒体表示与结构,但随着计算机软件及网络技术的快速发展,MPEG-1和MPEG-2的弊端就显示出来:交互性及灵活性较低,压缩的多媒体文件体积过于庞大,难以实现网络的实时传播。而MPEG-4(MPEG-4 Part 2)技术的标准是对运动图像中的内容进行编码,其具体的编码对象就是图像中的音频和视频,术语称为"AV对象",高效率地编码、组织、存储、传输AV对象是MPEG-4标准的基本内容。在视频编码方面,MPEG-4支持对自然和合成的视觉对象的编码(合成的视觉对象包括2D、3D动画和人面部表情动画等)。在音频编码上,MPEG-4可以在一组编码工具支持下,对语音、音乐等自然声音对象和具有回响、空间方位感的合成声音对象进行音频编码。

二、关于H.264
以制订国际通讯标准为主的国际电信联盟电信标准分局ITU-T,在完成H.263(针对视频会议之用的串流视频标准)后,与ISO/IEC机构联手合作,两机构共同成立一个名为JVT(Joint Video Team)的联合工作小组,以MPEG-4技术为基础进行更适于视频会议(Video Conference)运用的衍生发展,联合制订了一个新的标准。这个标准,ITU-T方面称之为H.264。但ISO/IEC的则将这个新标准归纳于MPEG系列,称为MPEG-4 Part 10(第10部分,也叫ISO/IEC 14496-10),MPEG-4 Part 10的另一个代称是MPEG-4 AVC(Advanced Video Coding,先进视频编码)。
所以,所谓的H.264其实与MPEG-4/AVC就是同一回事,即H.264 = MPEG-4 Part 10 = ISO/IEC 14496-10 = MPEG-4 AVC。

三、H.264与MPEG-4的区别
既然有了MPEG-4(MPEG-4 Part 2),为什么ISO/IEC还要与ITU-T一起制定H.264呢?H.264到底与MPEG-4有何差别?或者说MPEG-4 Part 10与MPEG-4 Part 2有何差别?
虽然MPEG-4已针对Internet传送而设计,提供比MPEG-2更高的视频压缩效率,更灵活与弹性变化的播放取样率,但就视频会议而言总希望有更进一步的压缩,所以才需要出现了H.264。
要知道H.264好在哪?我们可以将MPEG-2、MPEG-4(MPEG-4 Part 2)、H.264(MPEG-4 AVC、MPEG-4 Part 10)三者进行分辨率表现与所用带宽的比较,无论MPEG-2、MPEG-4、H.264,三者都能达1920×1080i(非交错)的高清晰度(High Definition,HD)、24fps(每秒更新24张画面)的影像画质,但传输带宽上MPEG-2需要12~20Mbps,相对的H.264只要7~8Mbps,而MPEG-4则介于两者间,更直接地说,若把MPEG-2的带宽用作基准的100%,MPEG-4要达相同效果只需要60%带宽,H.264更是低至40%,约为原MPEG-2的1/2~1/3。
值得一提的是H.264标准采用的熵解码有两种:一种是基于内容的自适应变长编码(CAVLC)与统一的变长编码(UVLC)结合;另一种是基于内容的自适应二进制算术编码(CABAC)。CAVLC与CABAC根据相临块的情况进行当前块的编码,以达到更好的编码效率。CABAC比CAVLC压缩效率高,在相当画质的情况下可以节省20%左右的带宽,但要复杂一些。

Python源安装

输入pip install pillow提示pip指令不能用,可尝试以下解决方案使用国内的

镜像网站:

* pypi.douban.com/

豆瓣 * pypi.hustunique.com/

华中理工大学 * pypi.tuna.tsinghua.edu.cn/simple/

清华大学 * mirrors.aliyun.com.pypi/simple/ 

阿里云 * mirrors.aliyun.com/pypi/simple…

百度 * mirror.baidu.com/pypi/simple

* 指令为pip install pillow -i http://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn(以清华为例,我用的是清华的镜像)

* --trusted-host和之后的是为了防止出现不信任的报错更改

超时时间 * **pip --default-timeout=500 install -U pillow**

*超时时间默认为100,改大点就好(这里我改成了500)

更新pip * python -m pip install --upgrade pip

ps:下面看下pip install 没反应怎么办

用 python -m pip install 便可