
android
文章平均质量分 61
祥仔先生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
appium+nodejs自动化测试安卓手机
hanxiang1@hanxiang1deMacBook-Pro ~ % adb shell dumpsys window windows | grep mFocusedApp mFocusedApp=AppWindowToken{9fc21f5 token=Token{29f32c ActivityRecord{209fadf u0 com.tencent.news/.activity.SplashActivity t230}}}原创 2021-08-15 22:57:51 · 1732 阅读 · 0 评论 -
mac 解决安装Android Studio 报错The Android SDK location canot be at the filesystem root
最近又需要安装安卓的东东了,感觉android stdio每次安装都会有各种问题。今天记录一个首先会看到The Android SDK location canot be at the filesystem root这个提醒,然后点击android sdk location的后面的edit的话会提示下面的错错误二:SDK emulator directory is missing mac解决办法来了,在点击edit的时候 会看到sdk的路径我们去官网下载有效的SDKht.原创 2021-05-26 19:25:04 · 14105 阅读 · 5 评论 -
Android修改特定语言下的字体大小
修改泰国需求,默认第一次设置为泰语字体大小为1.08倍packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java///modify{@import java.util.Locale;import android.content.SharedPreferences;import a...原创 2019-12-23 15:06:35 · 649 阅读 · 0 评论 -
Android删除除自定义铃声后,来电铃声显示是一串数字
[DESCRIPTION]1.设置--声音--手机铃声--添加铃声--自定义铃声--选择音乐文件为铃声2.设置--声音--手机铃声--添加铃声--自定义铃声--进入Files音频--查看Ringtones列表,删除刚才设置的铃声或者进入File Manager--Internal shared storage--Ringtones,删除刚才设置的铃声[SOLUTION]...原创 2020-04-19 15:47:27 · 1810 阅读 · 0 评论 -
Android选择外部铃声后,直接选中
[FAQ22231][Audio APP]选择外部铃声后,直接选中内容(2019-09-23)[DESCRIPTION]1.Settings-》Sound-》Phone ringtone-》Add ringtone2.选择手机/SD卡中的音频文件添加到通知铃声列表3.刚添加到铃声列表中的音频文件不会默认被选中,期望被选中[SOLUTION]...原创 2020-05-14 10:11:09 · 550 阅读 · 1 评论 -
【安卓学习积累】ContentObserver的使用
在开发过程中使用到ContentObserver的主要用途就是监听数据库内容的变化,例如我们经常会通过在SettingProvider中写入一个标志位来进行各种判断。如果我们要监听这个标志位的变化就是使用到ContentObserver。还有假如我们需要监听(蓝牙开关、飞行模式开关等)都会用到ContentObserver。一、ContentObserver的创建创建ContentOb...原创 2019-05-15 15:45:24 · 1341 阅读 · 0 评论 -
Android 8.1上notification的适配
安卓O上的notification适配,参照郭大神的进行学习。一起来学习Android 8.0系统的通知栏适配吧下面一篇文章是解决Notification适配的方法。解决Android 8.0 的Notification不显示问题从安卓O开始引入了通知渠道的概念,即我们可以指定一类通知为一个通知渠道,每个渠道的通知互不影响,关闭某一个通道不影响其他通道的通知。@Overri...原创 2019-05-08 11:36:24 · 1161 阅读 · 0 评论 -
【安卓学习积累】Android连续点击事件的实现
今天随便记录一点内容,在安卓系统中连续点击事件的实现,例如我们在安卓手机中点击Android版本号多少下,型号多少下,安卓补丁多少下(在设置中的关于手机中)可以做出一些响应。看了一下源码实现,主要是利用数组左移来记录点击的时间,最后把最后一次和第一次的时间相减的差值来判断是否在规定时间内。 private long[] mHits = new long[3]; //点击次数 f...原创 2019-05-21 10:47:06 · 1478 阅读 · 0 评论 -
【安卓学习积累】线程的暂停、恢复、停止方法
import android.util.Log;/** * Created by gsoft2-3 on 19-6-02. */public class MyThread extends Thread { //调用该线程的实例对象 private final Object lock = new Object(); //是否暂停 private b...原创 2019-06-02 16:42:15 · 1783 阅读 · 0 评论 -
【安卓学习积累】Message在MessageQueue中的入列和出列过程
本文主要记录的是message进入MessageQueue时如何操作的,即MessageQueue的入列和出列过程的源码分析。一、message的入列过程Handler发送一条message到MessageQueue,最终会调用MessageQueue中的enqueueMessage(Message msg, long when)方法。MessageQueue.java (framew...原创 2019-05-15 10:53:20 · 445 阅读 · 0 评论 -
Android 8.1 中Systemui中的常见修改(八)SystemUI加载流程
SystemUI作为系统应用,在开机的时候就会开始加载启动,今天来学习一下它的启动流程。SystemServer.java (frameworks\base\services\java\com\android\server)1.最开始会调用SystemServer里面的StartOtherService方法,我们可以看到startSystemUi方法实际上是启动了一个SystemUIS...原创 2019-04-30 19:21:57 · 3670 阅读 · 0 评论 -
Android 8.1 中Systemui中的常见修改 更改横屏状态下的NavigationBar位置
经过调整,使得NavicationBar在手机界面的左侧。主要思路分为两步,调整NavitationBar的位置,二是调整view的起始点。frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.javadiff --git a/services/core/java/com/and...原创 2019-04-28 14:49:56 · 3858 阅读 · 8 评论 -
Android通过反射获取手机是否有NavigationBar方法
今天介绍一个通过发射获取是否有navigationBar的方法。public static boolean deviceHasNavigationBar() { boolean haveNav = false; try { //1.通过WindowManagerGlobal获取windowManagerService ...原创 2019-04-23 14:14:40 · 4401 阅读 · 0 评论 -
Android音频相关(八)来电铃声播放流程
铃声的设置流程之前总结过,可以参考该文章:Android音频相关(四)设置铃声流程总结一、铃声播放准备二、铃声播放三、总结本文主要介绍的下面标红的播放流程,SystemUI的播放流程我们在另一篇文章进行介绍。一、铃声播放准备1.来电后最先会通过telecom中的Ringer.java里面的方法mRingtonePlayer.play(mRingtoneF...原创 2019-04-14 14:12:24 · 6042 阅读 · 0 评论 -
安卓手机解锁:Device is locked. Please unlock the device first
Device is locked. Please unlock the device first 在安卓P的手机上如果adb remount 不上手机并且报如上的错的话,就需要对手机进行解锁。1.首先需要打开开发者模式中的OEM unlocking开关2.adb reboot bootloader3.fastboot flashing unlock4.fastboot g...原创 2019-04-13 18:11:51 · 36474 阅读 · 4 评论 -
安卓播放系统铃声的两种方法
方法一: Uri defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE); Ringtone ringtone = RingtoneManager.getRingtone(MainActivity.this, def...原创 2019-05-25 17:38:19 · 4547 阅读 · 0 评论 -
【安卓学习积累】关于RecyclerView的基本使用方法
今天主要介绍RecyclerView的基本使用方法。下面是实现的Demo的样式。一、准备阶段首先我们应该知道RecyclerView主要使用的到是V7包。我们需要在dependencies添加compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'二、布局阶段使用布局也比较简单,直接添加下面的代码就可以了。...原创 2019-05-21 22:21:08 · 199 阅读 · 0 评论 -
【安卓学习积累】IntentService的源码分析
今天主要总结一下IntentService的源码,里面是如何实现的,为什么IntentService在执行完耗时操作后会自动停止。1.theservice is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.2....原创 2019-05-17 14:41:02 · 201 阅读 · 0 评论 -
O版和P版如何预置APK
1.预置可卸载APK,恢复出厂设置以后不可以恢复,将apk预置到data/app目录下android o 版本以后google 加入了patch,不允许预置apk到data/app目录下,只允许使用adb install 的方式来安装apk到data/app目录下,需要将其roll back 回以前的版本,然后用下列方法可以完成预置:https://android.googlesource...转载 2019-09-03 10:54:41 · 1691 阅读 · 0 评论 -
Android源码之剩余充电时间计算
连接电脑USB充电,50%提示需要4H充满,55%需要5H充满分析:电量充满时间 = 充一格电所需的时间 x (100-当前电量)充一格电所需的时间 = 充电总时间/充电格数mBatteryLevel = 45 时候 mBatteryPlugged = false 变为true ,开始充电,一个满格的时间计算从46开始计算从46开始 20:27:02.916 到50 20:47:36...原创 2019-12-18 23:26:49 · 3295 阅读 · 0 评论 -
Android 使用几张图片制作成动画
AnimationDrawable-帧动画帧动画的实现还是比较简单的,使用场景就是在一些需要有动态变化的图标时会用到。首先需要在drawable下面添加location_loading.xml文件,主要是图片的轮播。<animation-list xmlns:android="http://schemas.android.com/apk/res/android"> ...原创 2019-07-02 14:39:53 · 845 阅读 · 0 评论 -
【安卓学习积累】Callback回调的使用
callback是回调的意思,一般我们需要2个类需要相互调用,一个类把数据动态传递给另外一个类进行处理。回调机制:定义一个回调函数; 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者; 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。回调的步骤只需4步:定义一个接口类,定义需要的方法。 声明一个接口类对象,提供一个设置类对象的方法。...原创 2019-07-01 15:49:22 · 2757 阅读 · 0 评论 -
【安卓学习积累】安卓拔出SD卡后Play音乐仍然可以识别到SD卡中音乐
主要的解决思路:拔出SD卡后添加扫描动作。/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.java public void onReceive(Context context, Intent intent) { final String actio...原创 2019-06-23 22:40:24 · 402 阅读 · 0 评论 -
【安卓学习积累】AsyncTask的源码分析
在记录本文之前有参考下面大神的文章,本文也加入了一些自己的见解。旨在记录和学习一些Android知识。欢迎大家一起来讨论。别再傻傻得认为AsyncTask只可以在主线程中创建实例和调用execute方法一、抛出几个问题1.AsyncTask是否只能在主线程中创建并执行呢?2.AsyncTask中的onPreExecute()、doInBackground(String... par...原创 2019-05-17 22:07:13 · 172 阅读 · 1 评论 -
【安卓学习积累】Android Bitmap压缩图片
本文主要介绍如何使用Bitmap压缩高清图片。如果我们使用Bitmap加载高清图片很容易造成OOM,同时在很多时候,我们可以对这种高清图片进行压缩。主要使用到的是BitmapFactory.Options。一、代码段BitmapFactory.Options options = getBitmapFactory(R.drawable.ceshi, 500, 400);img.set...原创 2019-05-22 22:26:48 · 375 阅读 · 0 评论 -
Android音频相关(九)SystemUI接到通知播放声音的流程RingtonePlayer
最近项目上遇到一个问题,来电无提示音,分析下来因为SystemUI创建的Track太多,导致Track的内存不足从而无法播放。但是就在想铃声播放为什么是SystemUI创建的AudioTrack太多呢?下面我们梳理一下这个流程,方便我们解决相应的问题。问题的原因:When a call comes, the phone module asynchronously sends a message...原创 2019-04-14 23:03:14 · 2561 阅读 · 0 评论 -
android frameworks编译
今天总结并记录一下,一些常见的frameworks的编译。编译目录 frameworks/base/core/编译命令 mmm验证:system/framework/framework.jar system/framework/arm system/framework/arm64编译目录 frameworks/base/services/编译命令 mmm验证...原创 2019-04-01 19:15:03 · 3530 阅读 · 0 评论 -
Android音频相关(七)Audio log 分析篇
1.new devices的查看log中的new devices 要看Audio-baes.h 在安卓9.0上是可以看 //OUT_AUX_DIGITAL的。这个主要是看当前播放音频的设备是什么。位置在例如 new devices 0x2 其实就是speaker在播放声音。enum { AUDIO_DEVICE_NONE = 0u, // 0x0 AUDIO_D...原创 2019-03-28 09:47:12 · 5800 阅读 · 0 评论 -
安卓应用禁止分屏模式方法
因为很多应用的自身问题,在分屏模式下会出现layout错乱的现象。所以有些应用是不支持分屏模式的。下面我们介绍三种禁止分屏模式的方法。由最简单实用,到稍微麻烦但一律秒杀的。方法一: 我们会经常使用的,在AndroidManifest.xml文件中的application节点或者activity节点中添加如下:android:resizeableActivity="false"...原创 2018-10-11 10:06:44 · 14513 阅读 · 1 评论 -
安卓系统根据SIM卡槽ID获取SIM卡信息
导入一个包:import android.telephony.SubscriptionManager;声明变量:SubscriptionManager mSubscriptionManager = SubscriptionManager.from(mContext); int simNumberCard = mSubscriptionManager.getActiveSubs...原创 2018-08-21 14:02:14 · 5850 阅读 · 0 评论 -
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl
在安卓8.0 上如果使用windowManager的悬浮窗口的话 在安卓8.0上会出下面的错误: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a3c3b78 -- permission denied for window type 2003原创 2017-12-18 10:11:42 · 11455 阅读 · 1 评论 -
安卓8.0 SystemUI 中的quick setting加入屏幕截图功能
在安卓8.0的QS中增加一个选项 和在安卓7.0上的大致相同,可能还会有一点点的小区别。现在开始总结一下,如果有什么问题,欢迎提出。嘿嘿 1.首先在/frameworks/base/packages/SystemUI/res/values/config.xml里面添加截屏screenshot的选项 wifi,cell,battery,dnd,flashlig原创 2017-11-16 17:20:05 · 3140 阅读 · 3 评论 -
安卓7.0上在状态栏上加电池百分比
》》》》》》 安卓7.0上的statusbar上是默认不带电池百分比的。需要我们加上去。有两个方法,先写第一个方法 1. 在frameworks/base/packages/SystemUI/res/layout/system_icons.xml中添加布局文件: <TextView android:id="@+id/system_icon_battery_le原创 2017-09-22 10:51:48 · 4396 阅读 · 2 评论 -
安卓中阿拉伯语,波斯语等一些布局需要翻转的方法
在安卓中阿拉伯语系,波斯语系都是一些从右到左的显示。这时候就需要我们进行适配啦! 下面开始我们的大法了! 1.首先我们必须需要在AndroidManifest.xml文件中元素中,添加”andr原创 2017-05-04 15:41:51 · 6542 阅读 · 0 评论 -
Android7.0更换系统默认输入法
更换安卓7.0系统默认输入法的方法: 首先我们需要在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java里面做修改 private void loadSecureSettings(SQLiteDatabase db) {原创 2017-04-14 16:28:26 · 7323 阅读 · 5 评论 -
Android中画边框线,EditText四周边框线
i.有的时候我们需要对textView,或者EditText 等组件增加边框线。这个时候我们首先想到的就是有没有什么属性可以直接添加到XML里面。上网找了半天也没有什么好的办法。后来想到了 我们可以自己画出边框线。原创 2017-03-01 10:29:00 · 16100 阅读 · 0 评论 -
android ListView 去除下划线和选中模式
<ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="150dip"原创 2017-02-22 11:16:35 · 5623 阅读 · 0 评论 -
安卓Action Bar 两端有空白问题
在Action Bar的自定义布局的时候 可能会遇到两端留白的问题。在网上看了很多的方法 但是经过实验下面的方法只需要在style文件中进行修改就可以了。 #f2f2f2 @style/AcBar_titleStyle 0dp 0dp 上面是自定义style文件。原创 2017-02-20 16:42:21 · 828 阅读 · 0 评论 -
安卓中Spinner换图表样式
i.我们在按照UI画的图修改一些界面的时候,有的时候会涉及到Spinner换图标样式的这种情况。刚开始接触肯定是比较坑的,首先说的是Spinner的background如果直接替换图标的话,肯定不是你想要的样子。因为Spinner里面的backgroud的属性指的是它整个的背景。 》》》》》》这里面的向下箭头,都是spinner里面的》》》》》 教程来了。。。。。 首先我们原创 2017-03-01 10:50:55 · 3064 阅读 · 0 评论 -
android中DeskClock的一些bug解决方案
本文中涉及的DeskClock为android中源生时钟。 问题一:【操作步骤】clock->右下角图标->settings->snooze length->滑动选择任意时间(不是默认值)->横屏【实际结果】横屏后时间数值恢复为之前设置的值【预期结果】时间数值应为所选值 该问题为横屏刷新界面所致 首先我们在manifest文件中添加下面这个属性android:c原创 2017-02-08 16:06:12 · 3011 阅读 · 1 评论