- 博客(51)
- 资源 (6)
- 收藏
- 关注
原创 android 应用内浮标(非WindowManager全局悬浮)
app在应用内的浮标我们第一个会想到WindowManager去添加一个view,但是WindowManager是有缺陷的比如现在系统高版本需要权限,并且不是app的而是全局的一个浮标,也就是说如果你的app退到后台如果你对这个浮标不做处理那么它还会一直显示。我们先看看一般WindowManager怎么实现吧:if (mWindowManager == null) { ...
2020-04-26 00:14:37 2380
原创 android多模块解偶
在项目中我们随着功能越做越多,工程会越来越大,随之而来的我们会将某一功能单独提取出来作为一个模块,但是我们有希望这个模块是独立的,不要和其他模块相互引用,每个模块的代码不要引入在其他模块。为了解偶我们想到接口的方式,每个模块提供一套接口出来,其他模块需要用到这个功能可以通过接口来调用,达到解偶的目的。先看一下项目结构:包含了modleA,modleB,basic,floatview等模...
2020-04-25 22:50:42 591
原创 Android 华为手机音频设置播放倍速mMediaPlayer.getPlaybackParams().setSpeed(speed)无效果
前期项目中做音频播放过程中有设置播放倍速,正常的情况我们设置MediaPlayer参数就能实现,但是当在华为手机上设置时候第一次mMediaPlayer.getPlaybackParams().setSpeed(speed)不仅没效果而且还会导致音频播放暂停,调试发现getPlaybackParams().setSpeed方法返回undefined,貌似是native方法没有实现,但是实际在后面的...
2020-04-21 16:29:23 5583 2
原创 Android 自定义通知栏适配
之前做音乐播放器的需求中有要通知栏部分,发现不同手机显示的系统通知栏千奇百怪不统一,需要适配。分析发现目前大部分手机通知栏不是白色就是深色,因此经过考虑定义两种不同的布局,根据不同通知栏背景颜色来创建不同的RemoteViews。我们可以自定义Notification,并且可以设置contentView以及bigContentView从而达到我们想要的布局以及背景颜色。RemoteViews仅...
2020-04-12 20:20:43 1524 1
原创 Activity onDestory延时10秒执行
前期做音乐播放器有个需求是桌面有一个浮标里面有音乐封面,如果音乐在播放的时候封面图片要旋转,后面有发现只要我的浮标在并且图片旋转会导致activity的onDestory方法延时10秒回调。百思不得其解,最后还是发现因为使用Animation动画在页面销毁的时候没有停止会出现这种情况。最终解决方法:由于activity销毁动画还要继续,浮标是全局的,音乐播放是service在后台一直播...
2020-04-12 19:27:49 722
原创 Android Shape属性大全
在Android开发中我们为了美观很多UI设计都需要一些背景图片,为了能减少资源图片,减小apk的大小,以及更好的适配(当然.9图片也可以很好的适配),Android为我们提供了shape可以定义一定规则的形状,如矩形(rectangle),椭圆形(oval),线性(line)和环形(ring)。几个基本属性:solid填充色<solid android:color="#219...
2020-03-16 00:08:18 443
原创 Android 自定义圆形进度条带图片旋转
由于需求需要做一个圆形进度条并且中间填充的是圆形图片并且能有旋转,找了一下没找到合适的,所以自己撸一个。主要思路是两个控件组合起来。一个自定义画的圆,另一个自定义一个圆形的imageview。先看一下主布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml...
2020-03-16 00:00:42 1085 1
原创 Android 自定义SeekBar(滑块跟随进度条移动)
项目中有个播放音频需要进度条并且播放时间跟随进度条移动如下下面看一下怎么自定义这个控件,首先我们继承AppCompatSeekBar,然后在进度条上画一个带圆角的框,在里面再画进度时间直接上代码:/** * 带进度的seekbar */public class SeekBarAndText extends AppCompatSeekBar { // 画笔 ...
2020-03-15 23:51:01 2571
原创 android mixpanel可视化埋点框架解析
Mixpanel唯一的开源的商业可视化埋点实现,提供可视化埋点以及代码埋点方式。mixpanel官网mixpanel android集成指南mixpanel框架开源地址首先在Mixpanel官网注册,然后创建一个项目,有一个Token,在初始化的时候需要用到。接下里我们分析一下源码:入口MixpanelAPI,提供初始化方法 mMixpanel = MixpanelA...
2018-08-17 09:36:46 4583
原创 android截当前屏
怎样获取当前屏并保存成为图片?思路有两个:1 可以利用android为了提高滚动等各方面的绘制速度,为每一个view创建了一个缓存,使用 View.buildDrawingCache方法可以获取相应view的cache,这个cache就是一个bitmap对象。2 通过查看View的源码发现有一个方法createSnapshot,但是它是@hide隐藏的,但是我们可以通过反射的 ...
2018-08-15 11:22:57 544
原创 RecyclerView添加多种布局
上一篇文章讲述了一下ListView添加多种布局,现在RecyclerView已经火的不行不行了,那么我们再讲述一下RecyclerView添加多种布局,同样的效果图还是上篇文章中的对话列表只是ListView改为RecyclerView。RecyclerView怎么用我就不多讲了网上很多例子,我们在Xml文件替换ListView:xmlns:android="http://sch
2016-07-08 13:53:05 1123
原创 Android ListView加载多种布局
我们经常看到聊天界面有各种布局显示,例如微信,网上也很多写相关的文章,这里值写一个简单的demo,先上一张图看下效果
2016-06-30 16:13:42 1048
原创 Android数据库升级且表添加新列
今天突然想到我们android版本升级的时候经常会遇到升级版本的时候在新版本中数据库可能会修改,今天我们就以数据库升级且表添加新列为例子写一个测试程序。首先在要创建一个数据库,一般我们先创建一个DbHelper,继承SQLiteOpenHelper,构造函数我们使用传递版本号的:public DbHelper(Context context, String name, int vers
2016-06-20 09:30:43 4234
原创 Android AsyncTask源码解析
AsyncTask 在android中是一个轻量级的异步线程,我们使用也比较多,今天就从源码的角度来解析一下AsyncTask。首先我们看一下怎么使用:我们从网络上下载一张图片,显示下载的进度:先把代码贴出来/** * Created by xxnan on 2016/6/3. */public class TestAsyncTaskActivity extends AppC
2016-06-03 18:26:16 549
原创 git 创建远程仓库并将本地文件上传到远程仓库
首先在服务器创建一个目录:mkdir XxnanTest进入XxnanTest目录,初始化仓库 :git init --bare然后再本地创建一个目录名字也叫XxnanTest(一般是项目名称)我在里面创建一个文件,一般放项目代码。在目录下右键键入GitBash(前天本地安装git)然后git init添加文件 git add .(添加所有)提交
2016-05-31 16:36:33 2795
原创 Java设计模式--观察者模式
自己对观察者模式的理解:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。我们已例子来说明:接口:包含更新数据的方法package com.example.xxnan.suanfa.observer;/** * Created by Administrator on 20
2016-04-12 22:46:04 347
原创 Java 设计模式--策略模式
最近看Head Frist设计模式一书,对设计模式的一点记录,供自己以后查阅,首先学习的是策略模式,策略模式的好处:策略模式的好处在于你可以动态的改变对象的行为策略模式的设计原则:将一个类中经常改变或者可能要改变的部分提取出来作为一个接口,然后在类中声明这个接口的实例,声明方法可以改变这个实例,这样类就可以调用实现这个接口类的方法。就以书中例子说明: 我们有父类鸭子(D
2016-04-12 16:36:33 350
原创 View的事件分发
记录一下自己对view事件分发的理解: 我们以button为例来分析,如我们知道button的点击事件只要设置Listener如:button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 点
2016-03-31 10:41:47 390
原创 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 29095 8
原创 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 6195 2
原创 error: insufficient permissions for device(解决adb shell问题)
今天在linux下连接平板usb,试用adb shell时出现error: insufficient permissions for device,而且我们输入adb devices显示:xxnan@xxnan-pt:~$ adb devicesList of devices attached ???????????? device那么我们怎么解决它呢?首先在
2013-02-23 17:26:33 63384 8
原创 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 2510
原创 命令运行 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 1060
原创 Android Setting中添加解除屏幕锁选项
首先,我前面有一片博客写的是android消除屏幕锁,这里想加以改进,因为在我们所使用的手机中已经在“设置”的“辅助功能”中有选择是否“解除屏幕锁”(也就开机时和按power键亮屏时是否有屏幕锁)。这里我想做的就是在原生的android源码上添加这一功能,主要还是以学习为主去实现这一功能。看这个之前我希望你们看一下android消除屏幕锁这篇博客。首
2013-01-21 13:37:57 5021
原创 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 5634
原创 Android setting中添加桌面循环滑动选项
首先,我前面有一片博客写的是android桌面(launch2)循环滑动,这里想加以改进,因为在我们所使用的手机中已经在“设置”的“辅助功能”中有选择是否“桌面循环”。这里我想做的就是在原生的android源码上添加这一功能,主要还是以学习为主。看这个之前我希望你们看一下android桌面(launch2)循环滑动这篇博客。首先我是在做好了桌面循环之后去
2013-01-09 17:16:59 2259
原创 android Setting中隐藏项
我们都知道做程序员有时会恶搞,就像android中,程序员在setting中就隐藏这样一项:我们可以找到“关于手机"这一项在里面有“android版本”这一项,如图:当我们快速点击“android版本”这一项时会弹出一张图片(恶搞型,这是2.3操作系统,但是4.0系统的话会弹出一个android标志图片,你按住android标志不
2013-01-08 11:23:07 3976 4
原创 android 添加按电源键结束通话
首先我们发现现在我们所用的android智能手机大部分都有当你在打电话时按power键来挂断电话,一般都是在设置中。我主要是在原生源码中添加这一功能,主要用于学习。。。。先看一张图: 看到那个按电源键挂断电话吧,那就是我所添加的,本来原生源码中是没有这一栏的。。。。。大概思路:首先我先添加这一个checkboxPreference,
2012-12-27 15:55:32 3119 1
原创 android Dialog布局显示已打开的应用程序
次想法是根据上一片博客改进而来,为了添加到framework中,基本代码相同,但是有所修改。将activity修改成Dialog布局的形式将已经打开的程序显示出来。看一下大概图片吧:首先用一个activity来显示一个button,为button添加点击事件,这个点击事件就是弹出dialog布局显示已经打开的程序,并可以实现点击回复程序所在页面,以及
2012-12-21 09:09:52 1879
原创 android获取正在运行的应用程序
因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序:还是先看图吧:这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击(回复到你打开的界面)和长按事件(关闭应用程序)。看看代码吧:直接贴出来再加上注释吧(直接写在一个文件里):
2012-12-18 10:56:54 4097 5
原创 android源码settings中显示所有正在运行进程流程分析
下面我要分享一下这几天看源码中获得正在运行进程的简单流程:也就是图中所看到的首先我们看到的是settings下的application(应用程序)下的manageApplication(管理应用程序)下的页面,那么要了解其流程,我们就得到源码中去分析:那么我们到源码下的package/app/Settings/src/com/android/settings下去
2012-12-13 16:08:38 2996
原创 android桌面(launch2)循环滑动
把我实现的一个源码中桌面左右滑动实现循环小功能分享出来: Android 的原生代码中的Launch2的一大功能就是支持左右滑动,但是好像它不能支持循环滑动,初想一下好像比较简单,那就是在获取第几屏的时候取余,差不多就可以实现,但是事实上源码里面会有很多误导,那么我就分享一下我分析Android2.3.3的Launch2源码并实
2012-12-11 15:30:24 4007 9
原创 android自动屏幕旋转流程分析
在android设置(Settings)中我们可以看到显示(display)下有一个自动屏幕旋转的checkbox,如果我们勾选checkbox的话当你手机屏幕就会根据重量自动旋转,那么我们就分析一下这个过程:在Display_settings.xml文件中我们可以找到: android:key="accelerometer"
2012-11-30 17:40:41 7365
原创 android低电量处理流程
前一段时间分析的一个小过程,把它记下来:我们都知道android电量的一些功能很多在service中,低电量也是如此,在BatteryService.java中我们可以从jni层(当然jni层的电量也是从下层kernel接收而来,这里就不做过多分析,有兴趣的可以去深入了解一下)获得机器的电量mBatteryLevel,我们也知道当手机电量低的时候它会有警告有些还发出声音提醒你,并且太低
2012-11-29 15:52:11 10565 1
原创 android usb大体流程解析
我分析这个流程也是从这张图来分析:首先kernel层是由kernel_imx/drivers/power/下的bq27x00_battery.c和power_supply_core.c以及power_supply_sysfs.c三个文件来做,power_supply_core.c主要提供统一设备文件的创建以及发送power_supply相关的Uevent;bq27x00_battery.c主要
2012-11-28 14:34:35 2681 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 1734 1
原创 android长按返回键弹出关机框
今天刚好在PhoneWindowManager.java下看,当看到长按Home键的功能时,突然想到是不是可以长按back键来弹出关机框。。。。有想法就试试呗。。。。。当然想法是根据长按home键来的,那么我们应该可以模仿长按Home键来做。。。。。经过一番实验,貌似好像可以,拿出来给大家分享一下!!!先找到PhoneWindowManager.java文件,在framework/
2012-11-22 15:02:06 3714 2
原创 android自动调节屏幕亮度自动调节流程解析
屏幕亮度自动调节:主要是从Sensor分析之中分离出来分析LIGHT 光线感应器,因此就分析一下自动调节屏幕亮度(手机随着光线的强度自我调节,也就是在亮的光线下屏幕自动调亮一些,暗的时候就自动调暗一些,省得光线对眼睛有刺激)..... (本人从历经挫折才大概了解流程),现在就开始讲一下流程,如果有不对地方希望牛人指出来。。。 先从Sttings入手吧,在di
2012-11-22 09:13:39 12979
原创 android定时关机
(记住一定要在源码下编译生成apk,也就是放在源码的package/app下编译!!!)先看一下简单的图形界面吧,比较简单的实现定时关机!!!(我的上传资源中有整个工程:注:设定的关机时间是24小时制的)当然我们是在eclipse下开发的,那么我们先建一个工程Shutdown(当然可以随便取),然后就是包名,类名什么的。。。这就不多说了,这里先看一下上面那个时钟的代码:analog
2012-11-20 09:07:50 6904 7
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人