安卓晋级Senior Android
Jabony
只要还有明天,今天就永远是起跑点
展开
-
【闭坑】linux下安装Android SDK
前提最近服务器配置jenkins 安卓自动打包APK,需要安卓环境,网上介绍挺多实际遇到一些问题,解决方法思路差不多,都说有坑但是没有细节步骤1.首先下载linux安装压缩包android studio 官网wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgztar xvzf android-sdk_r24.4.1-linux.tgz解压后有有一个android-sdk-linux目录内容如下,这是不完.原创 2020-11-05 13:54:35 · 3069 阅读 · 2 评论 -
【androidStudio】不使用Androidx编译配置
AS新建项目使用的是AndroidX作为依赖,并且旧的依赖包也更换为新的AndroidX依赖包如果项目不需要使用androidX,在项目下的gradle.properties文件修改配置#是否使用AndroidX库android.useAndroidX=false#是否迁移第三方库android.enableJetifier=false...原创 2020-03-12 08:46:43 · 4385 阅读 · 0 评论 -
android 获取连接WiFi的名称SSID
我们经常会用到wifi的定向连接,需要对连接的wifi名称进行判断首先权限声明,在manifest中添加<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取WIFI信息状态的权限 --> <uses-permission android:...原创 2020-02-20 08:51:59 · 2477 阅读 · 3 评论 -
3.SurfaceView与多线程的混搭
上一篇简单介绍了SurfaceView的基本使用,这篇就介绍SurfaceView与多线程的混搭。SurfaceView与多线程混搭,是为了防止动画闪烁而实现的一种多线程应用技术。android的多线程用法与Java的多线程用法完全一样,本文不做多线程方面的介绍了。直接讲解SurfaceView与多线程的混合使用,即开一条线程专门读取图片,另外一条线程专门绘图。先看效果图,左边是开单个线程转载 2013-06-29 16:38:12 · 898 阅读 · 0 评论 -
6.Android BroadcastReceiver
前面分别讨论了Activity和Service,这篇就介绍Android BroadCastReceiver,BroadCast是应用程序间通信的手段。BroadCastReceiver也是跟Intent紧密相连的,动态/静态注册了BroadCastReceiver之后,使用sendBroadcast把Intent发送之后,系统会自动把符合条件的BroadCastReceiver启动,跟嵌入式转载 2013-06-29 16:44:10 · 827 阅读 · 0 评论 -
5.Android Service
上次介绍了Activity以及Intent的使用,这次就介绍Android Service,如果把Activity比喻为前台程序,那么Service就是后台程序,Service的整个生命周期都只会在后台执行。Service跟Activity一样也由Intent调用。在工程里想要添加一个Service,先新建继承Service的类,然后到AndroidManifest.xml -> Applic转载 2013-06-29 16:41:37 · 745 阅读 · 0 评论 -
7.XML的解析与生成
本文使用SAX来解析XML,在Android里面可以使用SAX和DOM两种方法来解析XML,DOM方法需要把整个XML文件读入内存再解析,比较消耗内存,而SAX基于事件驱动的处理方式,可以在各节点触发回调函数,不过SAX适合节点结构简单的XML文档,复杂的XML文档在后期的节点深度处理会有点麻烦。本文要解析的test.xml文件如下:?12转载 2013-06-29 16:57:32 · 899 阅读 · 0 评论 -
8.SQLite分页读取
Android内置了常用于嵌入式系统的SQLite,免去了开发者自己安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作。不过有跨平台需求的程序就建议使用标准的SQL语句,毕竟这样容易在多个平台之间移植。先贴出本文程序运行的结果:本文主要讲解了S转载 2013-06-29 17:01:49 · 1195 阅读 · 0 评论 -
13.探秘蓝牙隐藏API
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API。用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢?本文利用JAVA的反射机制去调用这两项功能对应的函数:createBond和removeBond,具体的发掘和实现步骤如下:1、使用Git工具下载pla转载 2013-06-29 17:12:24 · 995 阅读 · 0 评论 -
14.探秘TelephonyManager
上次介绍了如何使用JAVA的反射机制来调用蓝牙的隐藏API,这次继续练习JAVA的反射机制,探秘TelephonyManager在Framework里包含却在SDK隐藏的几项功能。先来看看本文程序运行的效果图:本文程序演示了以下功能:1.所有来电自动接听;2.所有来电自动挂断;3.开启/关闭Radio;4.开启/关闭数据连接(WAP or NET的连转载 2013-06-29 17:15:08 · 868 阅读 · 0 评论 -
1.Android MediaPlayer的使用
本文介绍Android MediaPlayer的使用,MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。SurfaceView比普通的自定义View更有绘图上的优势,它支转载 2013-06-29 16:34:47 · 1178 阅读 · 0 评论 -
2.SurfaceView的基本使用
上次介绍MediaPlayer的时候稍微介绍了SurfaceView,Android SurfaceView由于可以直接从内存或者DMA等硬件接口取得图像数据,因此是个非常重要的绘图容器,这次我就用两篇文章来介绍SurfaceView的用法。网上介绍SurfaceView的用法有很多,写法也层出不同,例如继承SurfaceView类,或者继承SurfaceHolder.Callback类等,这转载 2013-06-29 16:36:19 · 857 阅读 · 0 评论 -
10.AudioRecord实现“助听器”
Android可以利用MediaRecorder和AudioRecord这两个工具来实现录音,MediaRecorder直接把麦克风的数据存到文件,并且能够直接进行编码(如AMR、MP3等),而AudioRecord则是读取麦克风的音频流。本文使用AudioRecord读取音频流,使用AudioTrack播放音频流,通过“边读边播放”以及增大音量的方式来实现一个简单的助听器程序。PS:由于转载 2013-06-29 17:05:21 · 1130 阅读 · 0 评论 -
12.蓝牙传感应用
上次介绍了Android利用麦克风采集并显示模拟信号,这种采集手段适用于无IO控制、单纯读取信号的情况。如果传感器本身需要包含控制电路(例如采集血氧信号需要红外和红外线交替发射),那么传感器本身就需要带一片主控IC,片内采集并输出数字信号了。Android手机如何在不改硬件电路的前提下与这类数字传感器交互呢?可选的通信方式就有USB和蓝牙,两种方式各有好处:USB方式可以给传感器供电,蓝牙方式要自转载 2013-06-29 17:11:23 · 1033 阅读 · 0 评论 -
4.Android Activity+Intent
Android有三个常用基础组件Activity、Service和BroadcastReceiver,他们都是依赖Intent来启动。本文介绍的是Activity的生命周期以及针对Activity的Intent使用。之前的例子一直都是使用Activity,在一个Layout XML与一个Activity捆绑的情况下可以视为一个Form,多个Layout XML与一个Android Acti转载 2013-06-29 16:39:35 · 779 阅读 · 0 评论 -
9.SQLite分页表格
上次讲的Android上的SQLite分页读取,只用文本框显示数据而已,这次就讲得深入一些,实现并封装一个SQL分页表格控件,不仅支持分页还是以表格的形式展示数据。先来看看本文程序运行的动画:这个SQL分页表格控件主要分为“表格区”和“分页栏”这两部分,这两部分都是基于GridView实现的。网上介绍Android上实现表格的DEMO一般都用ListView。ListView与Gr转载 2013-06-29 17:03:57 · 1154 阅读 · 0 评论 -
11.模拟信号示波器
上次简单地介绍了AudioRecord和AudioTrack的使用,这次就结合SurfaceView实现一个Android版的手机模拟信号示波器。最近物联网炒得很火,作为手机软件开发者,如何在不修改手机硬件电路的前提下实现与第三方传感器结合呢?麦克风就是一个很好的ADC接口,通过麦克风与第三方传感器结合,再在软件里对模拟信号做相应的处理,就可以提供更丰富的传感化应用。先来看看本文程序运行的转载 2013-06-29 17:08:28 · 1150 阅读 · 0 评论 -
Eclipse快捷键 10个最有用的快捷键
一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组转载 2013-11-08 10:11:11 · 997 阅读 · 0 评论 -
【有图有真相】来自GitHub的安卓自定义Views
来源:http://www.androidviews.net/珍惜劳动人民果实!自己的功底有限,看到网上有一些已经实现的自定义Views很漂亮,所以决定把这些库跟大家分享一下。本文中出现的下载连接均为亲手调试过的,不能运行的绝不上传且不索取积分。1.Holo Circular ProgressBar 封闭圆形进度条CSDN下载:Holo Circular P原创 2014-01-23 11:46:29 · 1379 阅读 · 0 评论 -
采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)
问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。 网上资料:{ finish()和system(0)都只能退出单个activity。杀进程等的等方式都不行~~~ 解决问题: 我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Int转载 2014-02-12 11:27:07 · 911 阅读 · 0 评论 -
Android圆形图片控件RoundedImageView
首先,感谢大家的每一次点击,这是bu'd原创 2014-04-13 18:23:46 · 3461 阅读 · 2 评论 -
viewpager实现循环滑动(左右无限循环)
使用viewpager的时候大家不要忘了导入android-support-v4.jar这个包,自己可以去下载。但是在使用的时候发现以上找到的viewpager不能实现循环滑动,这对于用户体验可能不是太好,所以自己又开始在此基础上寻找其他的方法,最终发现了以下解决办法:将MyPagerAdapter修改一下:/** * ViewPager适配器 */public cla转载 2013-08-24 10:14:13 · 1995 阅读 · 0 评论 -
安卓自定义View(第一篇)
【Android 常用基本控件】1.1 Android 控件基本介绍Android 本身提供了很多控件,比如我们常用的有:文本控件(TextView 和 EditText)、按钮控件(Button 和 ImageButton)、状态开关按钮(ToggleButton)、单选复选按钮(RadioButton 和 RadioGroup)、单选按钮和复选按钮(CheckBox原创 2014-04-17 14:36:29 · 1224 阅读 · 0 评论 -
activities和fragments中Bundle的处理
来源: http://blog.petrnohejl.cz/handling-bundles-in-activities-and-fragmentsBundle is a useful data holder, which maps String values to various Parcelable types. So basically it is a heteroge翻译 2014-04-17 11:24:52 · 1604 阅读 · 0 评论 -
android自定义一圆角ImageView
http://blog.csdn.net/whyrjj3/article/details/7975480转载 2014-04-13 18:36:48 · 1118 阅读 · 0 评论 -
【AlarmManager】使用AlarmManager定时任务
下面的代码是使用Android AlarmManager类可以完成定时执行任务的样例代码。首先创建Intent和日历(Calendar)对象,然后使用AlarmManager去运行这个intent。代码:new Intent(getBaseContext(), some_service.class);PendingIntent pendingIntent = PendingIn原创 2014-09-10 17:09:16 · 6868 阅读 · 2 评论 -
【layout】Android中include的使用
如果在程序中多次用到一部分相同的布局,那我们就需要xml布局的重复利用,首先定义一个重复利用的XML布局,然后在需要的地方通过引入,如下:layout.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content"原创 2013-06-27 20:47:30 · 1339 阅读 · 0 评论 -
【Proguard】android 中 Proguard 使用
引用:http://blog.csdn.net/wbw1985/article/details/6932149在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。 解决办法: 1、在Android.mk中加入一行: LOCAL_PROGUARD_FLAGS转载 2013-09-30 09:03:13 · 1506 阅读 · 0 评论 -
【JNI】 Android JNI入门实例(Windows+Cygwin+Eclipse)
1 基础知识点① JNI:Java native interface② Android中调用JNI:static //static区声明的代码会先于onCreate方法执行{System.loadLibrary("HelloWorld");//加载,完整的名字是lib HelloWorld.so}private native String Hello(); //有 nati转载 2013-06-01 15:39:24 · 852 阅读 · 0 评论 -
【SwipeRefreshLayout】Google官方下拉刷新组件
官方链接:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html#inhfields原创 2014-04-03 19:21:49 · 21698 阅读 · 8 评论 -
【Res id】通过图片名称获取资源图片
情景:最近产品有个小需求,通过自定义配置xml的形式改变界面布局形式,其中大家常见的资源图片Drawable设置方 式是获取资源Id,但是R是后生成的,所以这种方式的话并不是很理想。思路:1)看到网上有反射的方式如下: /** * 获取图片名称获取图片的资源id的方法 * @param imageName * @return */ public int原创 2014-06-27 09:56:46 · 1334 阅读 · 0 评论 -
【开机自启动】开机自启动应用程序
源码下载连接:http://download.csdn.net/detail/knockheart/5510225 Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED”开机自启动程序,只需要“捕捉”到这个消息再启动你的程序即可,我们要做的是接收这个消息,并原创 2013-06-03 18:50:32 · 1241 阅读 · 0 评论 -
【模仿】模仿易信的UI
易信,它的UI还是很简洁,因此本人想模仿一下它,用了一天的时候来研究它的资源文件,终于被我写出来。先看下效果图吧。 (一)首页的标题 main_title.xml?"1.0"encoding= "utf-8"?>"http://schemas.android.com/apk/res/android"转载 2013-09-06 01:02:52 · 1195 阅读 · 0 评论 -
【ant】ANT打包Android应用
转自:http://blog.csdn.net/liuhe688/article/details/6679879大家好,今天来分享一下如何使用ANT打包Android应用。通常我们习惯用eclipse来开发Android程序,它会自动帮我们打包当前的应用程序。如果在Navigator视图下,我们可以看到以下几个文件:在上图中,com包放置的是我们的class转载 2014-03-15 12:53:36 · 1078 阅读 · 0 评论 -
【异步加载】Android 网络数据异步加载解决方案
Android的Lazy Load主要体现在网络数据(图片)异步加载、数据库查询、复杂业务逻辑处理以及费时任务操作导致的异步处理等方面。在介绍Android开发过程中,异步处理这个常见的技术问题之前,我们简单回顾下Android开发过程中需要注意的几个地方。Android应用开发过程中必须遵循单线程模型(Single Thread Model)的原则。因为Android的UI操作并不是线程转载 2013-09-20 15:52:21 · 1470 阅读 · 0 评论 -
【缓存图片】网络图片本地存储策略
情景一:在开发过程中经常会遇到将网络图片存储到本地,目的:为了避免图片多次下载实现策略:使图片的URL与存储文件文件名一一对应。 如果将文件的URL存储为文件名是行不通的,因为URL会包涵很多特殊字符,文件存储命名是不允许的。所以我们需要对图片的URL与文件名关联切符合文件名命名规则。 我的实现方式是采用MD5算法, MessageDigest 类为原创 2014-03-06 02:49:50 · 2573 阅读 · 0 评论 -
【listView】listView中多个listItem布局时,convertView缓存及使用
最近有需求需要在listView中载入不同的listItem布局,开始没有使用convertView,加载了多个item后导致了内存泄露,所以回来研究convertView在多个listItem布局时的缓存及应用,并且和大家分享构造Adapter时,没有使用缓存的 convertView,导致内存泄露示例代码:public View getView(int position,转载 2013-08-15 13:09:05 · 986 阅读 · 0 评论 -
【layout】Android中merge和include标签的使用
先说下标签的第一个比较简单的用法。如果我们使用FrameLayout作为activity's content view的父元素(也就是在main.xml里把它写在最外层),那么可以考虑用替换标签。官方文档给出的解释是这样做可以减少一级布局层次达到优化布局的效果。这是文档里关于这部分结论的原文,个人E文水平有限,直接贴出来好了:Obviously, using works in t转载 2013-06-28 19:21:17 · 904 阅读 · 0 评论 -
Android自动化测试
Android自动化测试1、安装JDK 6、Android SDK 2.3 2、安装Eclipse 3.5.2、ADT8.0.1https://dl-ssl.google.com/android/eclipse/ 3、HelloAndroidE:\Program Files\Android\android-sdk-windows\docs\resources\t转载 2013-07-23 11:37:43 · 981 阅读 · 0 评论 -
Android中的MD5加密
MD5是一个安全的散列算法,有两个特点:1、输入两个不同的明文(一段原始的数字信息)不会得到相同的输出值2、根据输出值,不能得到原始的明文,即过程不可逆所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,然后在所谓的解密的时候,都是通过这个映射表来查找其所对应的原始明文。而绝对没有一种算法,可以通过输出加密后的散列原创 2013-07-26 12:31:20 · 1279 阅读 · 0 评论