Android
無門
冰冻三尺非一日之寒,滴水石穿非一日之功!!!
展开
-
GLSurfaceView+MediaPlayer播放视频
代码大量拷贝https://blog.csdn.net/king1425/article/details/72773331博客,有兴趣可以去看一下,简单解释了一下流程和相关关联TextureViewMediaActivity代码public class TextureViewMediaActivity extends Activity { private static final String TAG = "GLViewMediaActivity"; private GLSurfac转载 2022-05-25 10:59:05 · 697 阅读 · 0 评论 -
Android生成Javadoc
-encoding UTF-8 -charset UTF-8 -tag date:a:时间原创 2022-04-15 16:12:32 · 2392 阅读 · 0 评论 -
SurfaceView和TextureView的区别
SurfaceViewSurfaceView中采用了双缓冲机制,保证了UI界面的流畅性,同时 SurfaceView 不在主线程中绘制,而是另开辟一个线程去绘制,所以它不妨碍UI线程;SurfaceView 继承于View,他和View主要有以下三点区别:(1)View底层没有双缓冲机制,SurfaceView有;(2)view主要适用于主动更新,而SurfaceView适用与被动的更新,如频繁的刷新(3)view会在主线程中去更新UI,而SurfaceView则在子线程中刷新;SurfaceV原创 2022-04-02 15:01:18 · 3843 阅读 · 1 评论 -
AndroidStudio导出JavaDoc提示“目标 11 不允许选项 --boot-class-path“
AndroidStudio生成JavaDoc提示找不到Android源码中的对象,比如Context、View等百度后配置了Android.jar(-bootclasspath /Users/dinghe/Library/Android/sdk/platforms/android-28/android.jar)包后依然出错,原创 2022-03-15 10:31:05 · 4576 阅读 · 5 评论 -
解决ARouter 无法在Fragment中收到onActivityResult回调的问题
解决ARouter Fragment中startActivityForResult 无法在Fragment中的onActivityResult收到回调的问题 val postcard = ARouter.getInstance().build(RouterPage.SUBJECT) ARouter.getInstance().fragmentNavigation(this, postcard,1000)fun ARouter.fragmentNavigation(fragment: Frag原创 2021-10-22 11:16:28 · 1109 阅读 · 0 评论 -
Android Uri和path的相互转换
/** * path转uri * @param context * @param imageFile * @return */ public static Uri getImageContentUri(Context context, java.io.File imageFile) { String filePath = imageFile.getAbsolutePath(); Cursor cursor =...原创 2021-06-29 14:55:39 · 1349 阅读 · 0 评论 -
进程被防火墙禁止启动process is forbid to start by firewall
原创 2021-06-25 11:17:48 · 124 阅读 · 0 评论 -
adb 命令记录
ADB简介:ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android设备玩家的好玩具。安卓调试桥 (Android Debug Bridge,adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 AndroidStudio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。注:有部分命令的支持情况可能与 Android 系统原创 2021-04-16 11:16:16 · 146 阅读 · 0 评论 -
Android Okhttp3添加https自签名证书以及Glide4.X添加https自签名证书
一、网络协议HTTP协议Http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTPS协议Https协议是Hypertext Transfer Protocol Secure(安全超文本传输协议)的缩写,是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。http和https的区别:httphttpsHTT原创 2020-12-23 17:13:53 · 1744 阅读 · 3 评论 -
Android文字基线Baseline算法的使用讲解
引言 Baseline是文字绘制时所参照的基准线,只有先确定了Baseline的位置,我们才能准确的将文字绘制在我们想要的位置上。Baseline的概念在我们使用TextView等系统控件直接设置文字内容时是用不到的,但是如果我们想要在Canvas画布上面绘制文字时,Baseline的概念就必不可少了。 我们先了解一下Android中Canvas画布绘制文字的方法,如下图: 参数示意: text,文字内容x,文字从画布上开始绘制的x坐标(Canvas是一个原点在左上角的平面坐标系)y,Baselin转载 2020-11-04 11:11:37 · 1123 阅读 · 0 评论 -
Android开启关闭手机扬声器
/** * 当前音量 */ private static int currVolume = 0; private AudioManager audioManager;@Overridepublic void openSpeaker() { try { if (audioManager == null) { audioManager = ((AudioManager) getSystemService(AUDIO_SE.原创 2020-07-21 10:15:48 · 1778 阅读 · 0 评论 -
Android FileProvider详细解析和10.0的适配
今天项目中文件存储的时候,我们都知道7.0以上要通过FileProvider保存文件,但是在小米10pro上报错,无法找到文件路径,对各个系统的反复测试,只有Android Q的手机会出现异常,于是百度才发现是Android10.0 更改了文件存取机制。 Android7.0 (N) 开始,将严格执行 StrictMode 模式,也就是说,将对安全做更严格的校验。而从 Android N 开始,将不允许在 App 间,使用 file:// 的方式,传递一个 File ,否者会抛出 FileUriE.原创 2020-07-10 12:53:29 · 8571 阅读 · 0 评论 -
Android上传通讯录收集到2个号码
收集通讯录的时候回无缘无故出现未知的数据原创 2020-07-07 12:16:14 · 124 阅读 · 0 评论 -
通过约束布局动态更改横竖屏切换后View视图变动
最近在项目中开发视频会议模块总结一下遇到的问题,每个用户的流控和视图SurfaceView一一绑定的,所以切换C位视图的时候需要动态的切换View视图以及数据。 横竖屏切换的时候,view不能被销毁,需要配置configChanges ="orientation | screenSize",然后在onConfigurationChanged方法里做处理。 还有就是横竖屏切换的时候,横屏布局和竖屏布局UI位置变化了,用两套布局的话需要重新setContentView,但是用户一一绑定的SurfaceV原创 2020-06-12 10:23:55 · 780 阅读 · 0 评论 -
解析ConstraintLayout的dimensionRatio属性
比例分为三种情况:宽值高值标准值约束值宽高比2:10dp固定值、wrap_content以H约束W2:1W,2;10dp固定值、wrap_contentHW2:1H,2:10dp固定值、wrap_contentHW1:2宽值高值标准值约束值宽高比2:1固定值、wrap_content0dp以W约束H2:1W,2;1固定值、wrap_content0dpwh1:2H,2:1原创 2020-06-12 09:53:37 · 1780 阅读 · 0 评论 -
去掉RecyclerView、ScrollView滑到顶部和底部的阴影效果
添加android:overScrollMode="never"属性可以取消掉 <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never原创 2020-05-29 17:46:01 · 2251 阅读 · 0 评论 -
Layout state should be one of 100 but it is 10
原创 2020-05-15 17:15:08 · 496 阅读 · 1 评论 -
图解 Android 事件分发机制
MotionEvent.Action_Cancel什么时候发生?子View在处理一个Touch事件中,父View的onInterceptTouchEvent返回true,此时子View会接收到MotionEvent.Action_Cancel。参考资料:https://stackoverflow.com/questions/5240719/whats-the-difference-between-action-cancel-and-action-up-in-motionevent...原创 2020-03-27 18:21:37 · 208 阅读 · 0 评论 -
SharedPreferences commit 和 apply的区别,以及跨进程共享数据
commit 和 apply的区别返回值存储apply没有内存—异步—>硬盘committrue和false同步—>硬盘,多条并发提交,等待处理保存磁盘的操作,从而减低了效率跨进程共享数据(A保存数据,B读取数据)在两个应用中的清单文件配置相同的sharedUserIdA进程:B进程:通过createPackageCon...原创 2020-03-26 11:06:56 · 265 阅读 · 0 评论 -
studio3.6新特性【视图绑定】是时候开始使用ViewBinding了
首先,这是官...转载 2020-03-14 17:18:53 · 849 阅读 · 2 评论 -
关于百度TTS初始化使用混合模式TtsMode.MIX闪退问题
集成百度tts 语音合成的时候如果合成模式设置成混合模式TtsMode.MIX的时候就会直接奔溃掉,如下:根据百度demo,发现申请了动态权限其中的一个特殊权限Write_settings...原创 2020-01-18 17:27:48 · 646 阅读 · 0 评论 -
Android8.0以下、8.0、9.0、10.0发送静态(可夸进程)广播
Android8.0以下、8.0、9.0、10.0发送静态(可夸进程)广播Android 8.0以下 Intent intent = new Intent("com.noway.start"); sendBroadcast(intent);Android 8.0和9.0 Intent intent = new Intent(); intent.setAction("c...原创 2020-01-14 17:43:37 · 1191 阅读 · 2 评论 -
A WebView method was called on thread".....”All WebView methods must be called on the same thread
RuntimeException:java.lang.Throwable: A WebView method was called on thread ‘OkHttp http://www.zhidianbao.cn/…’. All WebView methods must be called on the same thread. (Expected Looper Looper (main, ...原创 2020-01-13 15:20:45 · 1274 阅读 · 0 评论 -
system.exit(0) system.exit(1) 含义与区别
首先他俩都是退出程序的意思:区别在于: system.exit(0): 正常退出,程序正常执行结束退出 system.exit(1): 非正常退出,就是说无论程序正在执行与否,都退出,System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连...原创 2020-01-13 10:22:05 · 10987 阅读 · 1 评论 -
Android 播放视频有声音无画面
第三方播放器用到了TextureView,不开硬件加速的时候就显示不出来图像,只有声音。<application android:hardwareAccelerated="true"> <activity ... /> <activity android:hardwareAccelerated="false" /></appl...原创 2020-01-10 09:21:21 · 900 阅读 · 0 评论 -
Android程序开机自启动
<!--开机自启权限--> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <receiver android:name=".receiver.BootBroadcastReceiver"> <intent-filt...原创 2020-01-04 12:39:03 · 131 阅读 · 0 评论 -
android 定时关机,定时重启
android 定时关机,定时重启原创 2020-01-04 12:32:27 · 633 阅读 · 0 评论 -
GreenDao 主键自增 UNIQUE constraint failed: VISITOR_MODEL._id (code 1555)
@Entitypublic class MenuData { @Id(autoincrement = true) long id;}insert插入数据的时候报 UNIQUE constraint failed: VISITOR_MODEL._id, 将long改为Long ;原创 2019-12-31 12:02:51 · 1281 阅读 · 0 评论 -
在服务中使用android:process=":remote"的意义
android:process=":remote",代表在应用程序里,此时有":“号,当需要该service时,会自动创建新的进程。而如果是android:process=“remote”,没有”:"分号的,则创建全局进程,不同的应用程序共享该进程。...原创 2019-12-31 11:31:25 · 249 阅读 · 0 评论 -
android:fillViewport="true"
<ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true">fillViewport用于ScrollView,当ScrollView里面的空间高度大于ScrollVie...原创 2019-12-28 14:19:37 · 996 阅读 · 0 评论 -
Binary XML file line #9: Error inflating class android.webkit.WebView
Binary XML file line #9: Error inflating class android.webkit.WebView原创 2019-12-25 09:29:51 · 1804 阅读 · 0 评论 -
安卓各版本大变化(Android 6.0到10.0),兼容适配
Android 5.0Material DesignART虚拟机Android 6.0应用权限管理官方指纹支持Doze电量管理运行时权限机制->需要动态申请权限Android 7.0多窗口模式支持Java 8语言平台需要使用FileProvider访问照片安装apk需要兼容Android 8.0通知画中画自动填充后台限制自适应桌面图标->适配隐式广...原创 2019-12-04 11:08:38 · 3822 阅读 · 0 评论 -
乐固加固APP后无法启动
最近在上线项目的时候,使用了腾讯的乐固加固软件,签名加固前APP正常启动,签名加固后APP启动后立马闪退。原创 2019-12-04 10:18:35 · 650 阅读 · 0 评论 -
知乎图片选择框架Matisse的完整使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...转载 2019-10-30 17:19:39 · 2422 阅读 · 0 评论 -
Android中X5WebView详解
https://blog.csdn.net/c10WTiybQ1Ye3/article/details/80046695原创 2019-10-14 09:44:02 · 823 阅读 · 0 评论 -
共享元素的实现
共享元素:是A页面向B页面跳转的时候的一种炫酷动画效果,可以实现一个或多个元素进行共享,是可变参数 。 (只有 Android5.0以上的版本才能展现出效果来,共享的元素也就是View)一、首先,在A activity 和 B activity里面的要共享的View指定属性 android:transitionName="xxx"; 这原创 2017-04-06 17:28:43 · 658 阅读 · 0 评论 -
录制音频和播放音频
Android录音及播音的步骤:一、录音 1.创建MediaRecorder对象 2.调用MediRecorder对象的setAudioSource()方法设置声音的来源(麦克风),一般传入MediaRecorder.MIC 3.调用MediaRecorder对象的setOutputFormat()设置所录制的音频文件的格式原创 2017-04-10 17:51:18 · 398 阅读 · 0 评论 -
EditText 输入控制,用InputFilter过滤表情、特殊字符
/** * 过滤掉常见特殊字符,常见的表情 */ public static void setEtFilter(EditText et) { if (et == null) { return; } //表情过滤器 InputFilter emojiFilter = new Input原创 2017-05-31 11:51:55 · 4152 阅读 · 0 评论 -
内容解析者获取手机通讯录信息
一、启动通讯录 //跳转到联系人界面 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0);原创 2017-07-17 22:58:13 · 355 阅读 · 0 评论 -
Android 设置应用的底部导航栏(虚拟按键)背景颜色
对于有些Android手机的底部虚拟键,进行设置颜色,其实很简单,利用系统提供的Api一步代码就可以搞定,只支持Android5.0以上的系统 //设置底部导航栏颜色 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setNavigationBarColo原创 2017-08-21 10:26:43 · 5727 阅读 · 0 评论