- 博客(132)
- 资源 (16)
- 收藏
- 关注
原创 onTouchlistener、onTouchevent、onClick的优先级
先看一下Android源码中对于View中dispatchTouchEvent的实现: public boolean dispatchTouchEvent(MotionEvent event){ ... ... if(onFilterTouchEventForSecurity(event)){ ListenerInfo li = mListenerInfo; if(li != null && li.mOnTouchListener != null &&
2021-04-02 01:35:43
687
转载 DES加密原理
首先要生成一套加密密钥,从用户处取得一个64位长的密码口令,然后通过等分、移位、选取和迭代形成一套16个加密密钥,分别供每一轮运算中使用。DES对64位(bit)的明文分组M进行操作,M经过一个初始置换IP,置换成m0。将m0明文分成左半部分和右半部分m0 = (L0,R0),各32位长。然后进行16轮完全相同的运算(迭代),这些运算被称为函数f,在每一轮运算过程中数据与相应的密钥结合。在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个
2021-04-01 03:16:09
428
原创 一些工作总结整理
一、git操作:远程分支如何合并git rebase 使用(已commit) 本地分支合并git pull --rebase(1.未commit 2.已commit)1.会失败 2会合并且不会额外生成一个历史记录git pull 前已有本地修改 没commit拉不了,commit会mergegit pull (会有merge?) 是的git commit --...
2020-01-14 09:58:05
252
原创 NAT穿透
1 .ClientA-1 (202.103.142.29:5000 )发送数据包给Server ,请求和ClientB-1 (221.10.145.84:6000 )通信。2. Server 将ClientA-1 的地址和端口(202.103.142.29:5000 )发送给ClientB-1 ,告诉ClientB-1 ,ClientA-1 想和它通信。3. ClientB-1 向Client...
2018-11-15 15:10:19
477
原创 ADB调试广播发送接收
adb发送BOOT_COMPLETED我们可以通过adb shell am broadcast -a android.intent.action.BOOT_COMPLETED命令发送BOOT_COMPLETED广播,而不用重启测试机或模拟器来测试BOOT_COMPLETED广播,这条命令可以更精确的发送到某个package,如下:adb shell am broadcast -a android....
2018-05-21 18:35:03
5145
转载 webrtc声音处理demo与编译
Android APM带JNI源码的例子https://github.com/dengzikun/WebRTC-APM-for-AndroidAndroid APM接口使用例子https://github.com/dengzikun/WebRTC-APM-for-Android-Demo
2018-01-22 16:28:30
1281
2
原创 NDK重新编译so库
先用test2.cpp生成libhello.so,将该库放在源文件目录下,然后对该库进行再次编译,android.mk文件如下格式:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := foo-prebuiltLOCAL_SRC_FILES := libhello.soinclude $(PREBUILT_
2017-12-21 23:15:12
2555
原创 jNI callback
#include #include #include "tdnmanager.h"#define LOG_TAG "Network"#include "log.h"#include "NetworkCallback.h"#include static const char* const kClassNameNetwork = "com/apical
2017-12-14 22:05:18
610
原创 Ubuntu编译Android源代码
一、环境准备本人使用VMware安装Ubuntu系统。1、安装git (命令 sudo apt-get install git)安装完成之后,需要对git进行配置,设置git的电子邮件和用户名。git config --global user.email "你的电子邮件地址"git config --global user.name "你的名字"2、下载repo
2017-10-08 01:17:00
752
转载 Android Studio gradle插件版本和gradle版本对应关系
转载自http://blog.youkuaiyun.com/whj9073/article/details/768546921、gradle插件版本配置位置:project对应的build.gradle文件中buildscript { repositories { jcenter() } dependencies {
2017-09-25 20:06:13
1239
转载 H264实时传输心得总结
一篇不错的文章,转载于 http://blog.youkuaiyun.com/mandagod/article/details/52559053
2017-02-28 17:24:26
2083
原创 apk反编译
(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹])注意:上面的命令针对低版本的apktool,在高版本运行会提示:input file was not found or was not readable,此时应该运行新的命令:apktool d -f ride.apk -o ride (中间多了-o)
2017-02-14 14:10:39
307
转载 Tinker热修复技术使用
一篇不错的文章:http://blog.youkuaiyun.com/johnny901114/article/details/54934782
2017-02-09 16:12:19
396
原创 android的AIDL的一点心得
个人理解的通信原理就是客户端和服务端使用同一个接口,服务端通过service实现这个接口的方法并且暴露(注册),客户端通过与service连接得到接口关联,之后客户端就能调用服务端接口的方法了(粗略理解,个人觉得每次接口改变,客户端和服务端都得改,这种架构并不好) 需要注意几点:1.编写.aidl文件,IDE会自动再gen目录生成.java文件(客户端和服务端都一样,且.aidl
2017-02-07 16:02:12
355
原创 android的Binder框架
Binder机制的核心是在客户端创建一个代理,在服务端创建一个存根,通过代理和存根之间的调用来完成进程间的数据交换
2017-02-07 15:07:54
312
原创 android静默安装
关键点:1.手机已经root2.执行静默安装的程序需要申请root权限,代码如下: /** * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限) * * @return 应用程序是/否获取Root权限 */ public static boolean upgradeRootPermission(String p
2017-02-07 14:05:45
426
原创 设置Textview的可复制性
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="!!!!!!!!!" android:enabled="true" android:textIsSelectable="true" android:focusable="tru
2017-02-07 11:18:45
1074
原创 android蓝牙通信
一 蓝牙开启首先需要获取系统的蓝牙适配器,如果适配器不为空且没有开启的话,通过intent进行开启操作,相关代码如下:BluetoothAdapter blueadapter = BluetoothAdapter.getDefaultAdapter();if (blueadapter != null) { //Device support Bluetooth //确认开启
2017-02-06 09:48:21
604
原创 URL编码
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
2016-12-01 15:21:38
329
原创 paint.setXfermode不起作用的解决方法
当想设置图片重叠的相交状态时 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));这个不起作用了。试下setLayerType(View.LAYER_TYPE_SOFTWARE, null);//关掉硬件加速
2016-10-28 10:37:17
3007
转载 分辨率兼容
首先Drawable资源分为xxhdpi,xhdpi,hdpi,mdpi,ldpi,分别为超超高密度400dpi(左右),超高密度320dpi,高密度240dpi,中密度160dpi,低密度120dpi。然后手机的屏幕又分为FWVGA,WVGA,VGA,HVGA,QVGA,其中 VGA是:Video Graphic Array,显示标准为480 x 640; WVGA是Wi
2016-08-23 09:34:49
691
原创 ProgressDialog高级使用
http://www.cnblogs.com/firecode/archive/2012/09/25/2701039.html
2016-05-25 10:22:51
319
原创 Service的一点心得
Service接收通知的原理:通过维护一个死循环,在这个死循环中,不停地去读内核中binder driver,查看是否有可读的内容;即是否有对service的操作要求, 如果有,则调用svcmgr_handler回调来处理请求的操作。应用和service之间的通信会涉及到2次binder通信。1.应用向SM查询service是否存在,如果存在获得该service的代理binde
2016-05-19 16:51:36
387
转载 android-async-http使用总结
下载最新的包可以到github:https://github.com/loopj/android-async-http官方说明文档:http://loopj.com/android-async-http将jar包添加到项目里面就可以开始使用了:第一步:按照官方推荐,创建一个静态的请求对象.添加基本请求功能public class MyBaseRequest { publ
2016-05-19 10:42:02
3361
1
转载 Android ListView分类/分组效果 - 第二种实现方式
http://blog.youkuaiyun.com/androiddevelop/article/details/8316759
2016-05-19 10:40:47
345
转载 android studio调试编译错误
有各种各样原因,具体就请自己进cmd编译看什么地方出错进入项目的gradle文件所在目录打gradlew compileDebug --stacktrace来追踪就可以啦~
2016-03-11 14:13:19
439
转载 Activity被回收导致fragment的getActivity为null的解决办法
这两天一直被这个问题困扰,假如app长时间在后台运行,再点击进入会crash,而且fragment页面有重叠现象,让我十分不爽。研究了一天,终于明白其中的原理并加以解决。解决办法如下: 如果系统内存不足、或者切换横竖屏、或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Acti
2016-03-10 11:44:39
384
转载 android 获取控件高度
问题如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth、getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单的,不信的话,你可以去试一下,在onCreate里面,你是无法获得长宽值的,始终为0。原因这是为什么呢,其实熟悉view绘制流程的朋友应该一眼就看出来了,在onCreate中,我们的控件其实
2015-10-23 14:23:50
461
原创 SkImageDecoder::Factory returned null
SkImageDecoder::Factory returned null流不能二次操作。于是看明白了,第一次取图片尺寸的时候is这个InputStream被使用过了,再真正取图片的时候又使用了这个InputStream,此时流的起始位置已经被移动过了,需要调用is.reset()来重置,然后再decodeStream(imgInputStream, null, options)就没问题了。
2015-05-28 10:08:38
524
原创 shareSDK使用心得
1.微信分享如果使用绕过审核的方式,只要一进入到界面就会提示分享成功2.ShareSDK的APPID不要忘记填写;3.ShareSDK后台可以配置各个分享平台的APPID,如果本地的XML文件APPID和后台的不一致也会导致失败,应该清空后台配置
2015-04-24 09:52:31
417
原创 popupWindow自适应关键代码
popupWindow.setWidth(LayoutParams.WRAP_CONTENT); popupWindow.setHeight(LayoutParams.WRAP_CONTENT);popupWindow.showAtLocation( myview, Gravity.TOP | Gravity.CENTER, 0, 0);
2015-03-18 16:58:28
405
原创 asp.net网站安全检测网址
https://asafaweb.com/Scan?Url=old.pinganxiaoba.com%2Findex.php
2015-03-11 14:42:13
687
原创 根据文件名获取id字符串
int resId = context.Resources.GetIdentifier(name, "drawable", context.PackageName);
2015-02-28 11:41:01
796
原创 android控件的边框设置
xml version="1.0" encoding="utf-8"?>shape xmlns:android="http://schemas.android.com/apk/res/android" > 圆角 --> corners android:radius="9dp" android:topLeftRadius="2dp"
2015-02-15 15:30:08
19278
原创 利用NDK生成.so文件
1.选中工程,点击右键-->Properties-->Builders-->New,新建立一个Builder,在弹出的对话框上点中Program,点击OK;2.在弹出对话框EditConfiguration中,配置选项卡Main:Location中填入NDK安装目录,D:\ProgramFiles\Android\android-sdk\android-ndk-r9\ndk-build.cmd
2015-02-15 15:28:26
748
原创 微信分享注意事项及总结
1.在微信后台注册时,注意MD5和包名没有写反,一不小心就容易混淆;2.网络图片分享时记得压缩成缩略图,原生的demo默认是120px,所以是跑不通的,后来我改成80就可以了
2015-02-04 15:22:48
765
转载 Android AudioManager处理两个播放器同时有声音,停止其中一个播放的问题
尽管某个时刻只有一个activity可以运行,Android却是一个多任务环境.这对使用音频的应用带来了特殊的挑战,因为只有一个音频输出而可能多个媒体都想用它.在Android2.2之前,没有内建的机制来处理这个问题,所以可能在某些情况下导致坏的用户体验.例如,当一个用户正在听音乐而另一个应用需要通知用户一些重要的事情时,用户可能由于音乐声音大而不能听的通知.从Android2.2开始,
2014-10-09 14:36:20
20880
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人