![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
xxnan
不积跬步无以至千里,不积小流无以成江海。
展开
-
android 应用内浮标(非WindowManager全局悬浮)
app在应用内的浮标我们第一个会想到WindowManager去添加一个view,但是WindowManager是有缺陷的比如现在系统高版本需要权限,并且不是app的而是全局的一个浮标,也就是说如果你的app退到后台如果你对这个浮标不做处理那么它还会一直显示。我们先看看一般WindowManager怎么实现吧:if (mWindowManager == null) { ...原创 2020-04-26 00:14:37 · 2265 阅读 · 0 评论 -
android多模块解偶
在项目中我们随着功能越做越多,工程会越来越大,随之而来的我们会将某一功能单独提取出来作为一个模块,但是我们有希望这个模块是独立的,不要和其他模块相互引用,每个模块的代码不要引入在其他模块。为了解偶我们想到接口的方式,每个模块提供一套接口出来,其他模块需要用到这个功能可以通过接口来调用,达到解偶的目的。先看一下项目结构:包含了modleA,modleB,basic,floatview等模...原创 2020-04-25 22:50:42 · 560 阅读 · 0 评论 -
Android 华为手机音频设置播放倍速mMediaPlayer.getPlaybackParams().setSpeed(speed)无效果
前期项目中做音频播放过程中有设置播放倍速,正常的情况我们设置MediaPlayer参数就能实现,但是当在华为手机上设置时候第一次mMediaPlayer.getPlaybackParams().setSpeed(speed)不仅没效果而且还会导致音频播放暂停,调试发现getPlaybackParams().setSpeed方法返回undefined,貌似是native方法没有实现,但是实际在后面的...原创 2020-04-21 16:29:23 · 5391 阅读 · 2 评论 -
Android 自定义通知栏适配
之前做音乐播放器的需求中有要通知栏部分,发现不同手机显示的系统通知栏千奇百怪不统一,需要适配。分析发现目前大部分手机通知栏不是白色就是深色,因此经过考虑定义两种不同的布局,根据不同通知栏背景颜色来创建不同的RemoteViews。我们可以自定义Notification,并且可以设置contentView以及bigContentView从而达到我们想要的布局以及背景颜色。RemoteViews仅...原创 2020-04-12 20:20:43 · 1467 阅读 · 1 评论 -
Activity onDestory延时10秒执行
前期做音乐播放器有个需求是桌面有一个浮标里面有音乐封面,如果音乐在播放的时候封面图片要旋转,后面有发现只要我的浮标在并且图片旋转会导致activity的onDestory方法延时10秒回调。百思不得其解,最后还是发现因为使用Animation动画在页面销毁的时候没有停止会出现这种情况。最终解决方法:由于activity销毁动画还要继续,浮标是全局的,音乐播放是service在后台一直播...原创 2020-04-12 19:27:49 · 697 阅读 · 0 评论 -
Android Shape属性大全
在Android开发中我们为了美观很多UI设计都需要一些背景图片,为了能减少资源图片,减小apk的大小,以及更好的适配(当然.9图片也可以很好的适配),Android为我们提供了shape可以定义一定规则的形状,如矩形(rectangle),椭圆形(oval),线性(line)和环形(ring)。几个基本属性:solid填充色<solid android:color="#219...原创 2020-03-16 00:08:18 · 409 阅读 · 0 评论 -
Android 自定义圆形进度条带图片旋转
由于需求需要做一个圆形进度条并且中间填充的是圆形图片并且能有旋转,找了一下没找到合适的,所以自己撸一个。主要思路是两个控件组合起来。一个自定义画的圆,另一个自定义一个圆形的imageview。先看一下主布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml...原创 2020-03-16 00:00:42 · 1026 阅读 · 1 评论 -
Android 自定义SeekBar(滑块跟随进度条移动)
项目中有个播放音频需要进度条并且播放时间跟随进度条移动如下下面看一下怎么自定义这个控件,首先我们继承AppCompatSeekBar,然后在进度条上画一个带圆角的框,在里面再画进度时间直接上代码:/** * 带进度的seekbar */public class SeekBarAndText extends AppCompatSeekBar { // 画笔 ...原创 2020-03-15 23:51:01 · 2516 阅读 · 0 评论 -
android.uid.system下解决sdcard读写问题
因为在做一个项目时发现在有Manfast.xml文件sharedUserId="android.uid.system时,即使你加了权限: 也还是不能操作sdcard,那么如何解决这个问题?第一:把sharedUserId="android.uid.system去掉即可,但是我们必须要sharedUserId="android.uid.system那怎么原创 2013-03-14 11:37:31 · 6173 阅读 · 2 评论 -
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
最近项目中连接蓝牙之后接收蓝牙设备发出的指令功能,在连接设备之后,创建RfcommSocket连接时候报java.io.IOException: read failed, socket might closed or timeout, read ret: -1错误,下面说一下我的解决方法,希望对各位有一点帮助。private BluetoothSocket mSocket; priva原创 2015-07-17 17:18:17 · 28899 阅读 · 8 评论 -
View的事件分发
记录一下自己对view事件分发的理解: 我们以button为例来分析,如我们知道button的点击事件只要设置Listener如:button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 点原创 2016-03-31 10:41:47 · 379 阅读 · 0 评论 -
Java 设计模式--策略模式
最近看Head Frist设计模式一书,对设计模式的一点记录,供自己以后查阅,首先学习的是策略模式,策略模式的好处:策略模式的好处在于你可以动态的改变对象的行为策略模式的设计原则:将一个类中经常改变或者可能要改变的部分提取出来作为一个接口,然后在类中声明这个接口的实例,声明方法可以改变这个实例,这样类就可以调用实现这个接口类的方法。就以书中例子说明: 我们有父类鸭子(D原创 2016-04-12 16:36:33 · 332 阅读 · 0 评论 -
Java设计模式--观察者模式
自己对观察者模式的理解:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。我们已例子来说明:接口:包含更新数据的方法package com.example.xxnan.suanfa.observer;/** * Created by Administrator on 20原创 2016-04-12 22:46:04 · 331 阅读 · 0 评论 -
git 创建远程仓库并将本地文件上传到远程仓库
首先在服务器创建一个目录:mkdir XxnanTest进入XxnanTest目录,初始化仓库 :git init --bare然后再本地创建一个目录名字也叫XxnanTest(一般是项目名称)我在里面创建一个文件,一般放项目代码。在目录下右键键入GitBash(前天本地安装git)然后git init添加文件 git add .(添加所有)提交原创 2016-05-31 16:36:33 · 2777 阅读 · 0 评论 -
Android AsyncTask源码解析
AsyncTask 在android中是一个轻量级的异步线程,我们使用也比较多,今天就从源码的角度来解析一下AsyncTask。首先我们看一下怎么使用:我们从网络上下载一张图片,显示下载的进度:先把代码贴出来/** * Created by xxnan on 2016/6/3. */public class TestAsyncTaskActivity extends AppC原创 2016-06-03 18:26:16 · 530 阅读 · 0 评论 -
Android ListView加载多种布局
我们经常看到聊天界面有各种布局显示,例如微信,网上也很多写相关的文章,这里值写一个简单的demo,先上一张图看下效果原创 2016-06-30 16:13:42 · 1024 阅读 · 0 评论 -
Android数据库升级且表添加新列
今天突然想到我们android版本升级的时候经常会遇到升级版本的时候在新版本中数据库可能会修改,今天我们就以数据库升级且表添加新列为例子写一个测试程序。首先在要创建一个数据库,一般我们先创建一个DbHelper,继承SQLiteOpenHelper,构造函数我们使用传递版本号的:public DbHelper(Context context, String name, int vers原创 2016-06-20 09:30:43 · 4216 阅读 · 0 评论 -
RecyclerView添加多种布局
上一篇文章讲述了一下ListView添加多种布局,现在RecyclerView已经火的不行不行了,那么我们再讲述一下RecyclerView添加多种布局,同样的效果图还是上篇文章中的对话列表只是ListView改为RecyclerView。RecyclerView怎么用我就不多讲了网上很多例子,我们在Xml文件替换ListView:xmlns:android="http://sch原创 2016-07-08 13:53:05 · 1097 阅读 · 0 评论 -
android截当前屏
怎样获取当前屏并保存成为图片?思路有两个:1 可以利用android为了提高滚动等各方面的绘制速度,为每一个view创建了一个缓存,使用 View.buildDrawingCache方法可以获取相应view的cache,这个cache就是一个bitmap对象。2 通过查看View的源码发现有一个方法createSnapshot,但是它是@hide隐藏的,但是我们可以通过反射的 ...原创 2018-08-15 11:22:57 · 511 阅读 · 0 评论 -
android mixpanel可视化埋点框架解析
Mixpanel唯一的开源的商业可视化埋点实现,提供可视化埋点以及代码埋点方式。mixpanel官网mixpanel android集成指南mixpanel框架开源地址首先在Mixpanel官网注册,然后创建一个项目,有一个Token,在初始化的时候需要用到。接下里我们分析一下源码:入口MixpanelAPI,提供初始化方法 mMixpanel = MixpanelA...原创 2018-08-17 09:36:46 · 4378 阅读 · 0 评论 -
android 修改开机动画
小弟这里讲一下怎样修改开机动画。。。 首先你的机器必须是root过的,否则不能成功,下载一个你喜欢的bootanimation.zip,或则你自己做一个bootanimation.zip(前提是你知道怎么做,不知道上网搜一下),把它push到你机器的data/local或者system/media下就可,记住一定要修改bootanimation.zip的权限,应该是644原创 2012-11-16 19:31:15 · 991 阅读 · 0 评论 -
android的设备永不休眠(增加 Settings-->Dispaly-->-->screenout-->never Timeout)
首先要添加never Timerout,那么我们必须找到其文件,那么我们就到Settings下的src中去找DispalySettings.java文件,在oncreate中我们可以找到ListPreference screenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);原创 2012-11-13 14:39:19 · 3448 阅读 · 2 评论 -
NDK简单实例
下面将以前写的一个简单的NDK实例分享一下,希望对刚接触NDK的有一定的帮助!配置NDK环境:先下载一个android-ndk-r8b-linux-x86.tar.bz2压缩包,解压开来。在/etc/profile中的PATH中添加路径:这里是我的路径:$PATH:/home/xxnan/NDK/android-ndk-r8b保存,重启。这里就配置好了NDK环境。原创 2013-02-21 13:21:51 · 2488 阅读 · 0 评论 -
android修改桌面底端快捷图片为Settings
好吧,我还是先上两张张图吧(前一张是没修改的图,后一张是修改过的图)。。。。本来在settings图片的地方是浏览器的,现在我们要做的就将之改为settings(当然你也可以添加另外的图标实现功能):我们在源代码中找到Launcher2(桌面源码),找到launcher.java,里面setContentView(R.layout.launcher);说明它引用lanucher.xml文件原创 2012-11-15 11:11:49 · 1374 阅读 · 2 评论 -
android源码settings中显示所有正在运行进程流程分析
下面我要分享一下这几天看源码中获得正在运行进程的简单流程:也就是图中所看到的首先我们看到的是settings下的application(应用程序)下的manageApplication(管理应用程序)下的页面,那么要了解其流程,我们就得到源码中去分析:那么我们到源码下的package/app/Settings/src/com/android/settings下去原创 2012-12-13 16:08:38 · 2969 阅读 · 0 评论 -
android静音模式下仍可以播放媒体声音以及调节其大小。。。。
不多说,先上图,先看一张我开发板的截图 。。。 首先我先解释一下: 由于我的开发板硬件没有调节声音的按键,因而只能在图中所示处调节,但是在静音之后,那个声音调节又不可点击,所以我们要在静音模式下使其可以点击,也就是可以调节声音。经过上个星期的源代码分析以及一系列的测试,最终我发现在settings.xml文件中的 android:key=原创 2012-11-13 14:35:08 · 5669 阅读 · 1 评论 -
隐藏statusbar(就是手托动的状态栏)
基于android 2.3.3源码下隐藏statusbar(就是手托动的状态栏)。。。 找到framework/base/package/SystemUI/src/com/android/systemui/statusbar/StatusBarViewjava再找到Oncreat方法,里面有个makeStatusBarView(this),就是创建statusb原创 2012-11-13 14:31:09 · 1003 阅读 · 0 评论 -
android修改重力感应方向
在这里简要的为大家介绍一下我曾经改过android手机重力感应的一点知识。。。 首先,大家要android手机重力感应,那么必须得有你自己机器的源代码吧, 开始在网上找到蛮多资料,但是按其所说并不能实现,后经自己摸索,找到一个能是重力感应与本身相反的方法。 要修改android手机重力感应,那么你当然原创 2012-11-16 19:28:02 · 7101 阅读 · 0 评论 -
解决sharp阅读器开不了机
由于本人从事android framework开发工作,一开始给我发的是一块sharp的阅读器作为开发板,但是因为我在研究源码过程中(就是修改源码,编译,替换开发板里的原有东东像franmework.jar等),不慎出现问题导致sharp的阅读器启动的时候开不了机。。。那么今天我就讲一下方法(留做以后看看,也让有同困扰的人有点帮助)。。。注:这个方法是我老大(也就是我带我的原创 2012-11-14 16:07:38 · 1112 阅读 · 0 评论 -
android自动屏幕旋转流程分析
在android设置(Settings)中我们可以看到显示(display)下有一个自动屏幕旋转的checkbox,如果我们勾选checkbox的话当你手机屏幕就会根据重量自动旋转,那么我们就分析一下这个过程:在Display_settings.xml文件中我们可以找到: android:key="accelerometer"原创 2012-11-30 17:40:41 · 7343 阅读 · 0 评论 -
android低电量处理流程
前一段时间分析的一个小过程,把它记下来:我们都知道android电量的一些功能很多在service中,低电量也是如此,在BatteryService.java中我们可以从jni层(当然jni层的电量也是从下层kernel接收而来,这里就不做过多分析,有兴趣的可以去深入了解一下)获得机器的电量mBatteryLevel,我们也知道当手机电量低的时候它会有警告有些还发出声音提醒你,并且太低原创 2012-11-29 15:52:11 · 10497 阅读 · 1 评论 -
android Vold Usb
1. 总体架构2. 流程概览2.1 开启Vold2.2 引导Uevent2.3 处理事件 Vold - Volume Daemon存储类的守护进程,作为Android的一个本地服务,负责处理诸如SD、USB等存储类设备的插拔等事件。1. 总体架构Vold服务由volumeManager统一管控,它将具体任务分别分派给netlinkManager, command转载 2012-11-27 15:03:09 · 1698 阅读 · 1 评论 -
android自动调节屏幕亮度自动调节流程解析
屏幕亮度自动调节:主要是从Sensor分析之中分离出来分析LIGHT 光线感应器,因此就分析一下自动调节屏幕亮度(手机随着光线的强度自我调节,也就是在亮的光线下屏幕自动调亮一些,暗的时候就自动调暗一些,省得光线对眼睛有刺激)..... (本人从历经挫折才大概了解流程),现在就开始讲一下流程,如果有不对地方希望牛人指出来。。。 先从Sttings入手吧,在di原创 2012-11-22 09:13:39 · 12920 阅读 · 0 评论 -
android长按返回键弹出关机框
今天刚好在PhoneWindowManager.java下看,当看到长按Home键的功能时,突然想到是不是可以长按back键来弹出关机框。。。。有想法就试试呗。。。。。当然想法是根据长按home键来的,那么我们应该可以模仿长按Home键来做。。。。。经过一番实验,貌似好像可以,拿出来给大家分享一下!!!先找到PhoneWindowManager.java文件,在framework/原创 2012-11-22 15:02:06 · 3679 阅读 · 2 评论 -
android 添加按电源键结束通话
首先我们发现现在我们所用的android智能手机大部分都有当你在打电话时按power键来挂断电话,一般都是在设置中。我主要是在原生源码中添加这一功能,主要用于学习。。。。先看一张图: 看到那个按电源键挂断电话吧,那就是我所添加的,本来原生源码中是没有这一栏的。。。。。大概思路:首先我先添加这一个checkboxPreference,原创 2012-12-27 15:55:32 · 3076 阅读 · 1 评论 -
android获取正在运行的应用程序
因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序:还是先看图吧:这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击(回复到你打开的界面)和长按事件(关闭应用程序)。看看代码吧:直接贴出来再加上注释吧(直接写在一个文件里):原创 2012-12-18 10:56:54 · 4075 阅读 · 5 评论 -
android消除屏幕锁
实现屏幕无锁--->当我们开机或者超过锁屏幕时间或按电源键之后屏幕没有锁的一种状态。 经过查询许多资料以及分析代码,我们可以发现最主要的屏幕功能还是在framework/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java中。里面有一个handleshow方法:原创 2012-11-14 21:34:25 · 2160 阅读 · 0 评论 -
android定时关机
(记住一定要在源码下编译生成apk,也就是放在源码的package/app下编译!!!)先看一下简单的图形界面吧,比较简单的实现定时关机!!!(我的上传资源中有整个工程:注:设定的关机时间是24小时制的)当然我们是在eclipse下开发的,那么我们先建一个工程Shutdown(当然可以随便取),然后就是包名,类名什么的。。。这就不多说了,这里先看一下上面那个时钟的代码:analog原创 2012-11-20 09:07:50 · 6874 阅读 · 7 评论 -
命令运行 andorid 模拟器
在linux终端下输入:xxnan@xxnan-pt:~/android/android-sdk-linux/tools$ ./emulator -avd android4.0.3就是打开你创建的模拟器。~/android/android-sdk-linux/tools$目录就是sdk的tools目录,android4.0.3就是我创建模拟器的名字。如一般我们有原创 2013-01-29 15:26:37 · 1039 阅读 · 0 评论 -
Android 权限汇总
1、android.permission.ACCESS_CHECKIN_PROPERTIES :Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded.允许以read/write访问检入数据库(checkin database原创 2013-01-15 10:22:19 · 5532 阅读 · 0 评论