Android
RKGG爱吃鱼
每天进步一点点。
展开
-
经典蓝牙那些事儿——(登录、登录异常、自动连接、中断、断后重连等)
最近项目中用到传统蓝牙连接设备通讯,折腾了一周把基本功能实现了,这里简单记录一下。蓝牙设备:HC-05蓝牙模块主要功能:-首次手动配对;-自动连接;-连接超时或异常处理;-中断监听;-中断后检测重新连接测试版本:Android 6.0实现经典蓝牙功能的基本逻辑:整个蓝牙功能逻辑如上图所示,其中比较关键的是蓝牙自动连接和断开后重新连接。关于蓝牙自动连接,本文采用的是首次配对...原创 2019-07-17 13:13:58 · 3020 阅读 · 0 评论 -
Android中AIDL异常
在调试AIDL服务的时候,一开始遇到了下面这个问题: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.example.renkai.aidl_test.IMyService }看过很多大神的回答,说是Android 5.0之后AIDL就不支持隐式声明了,总结了网上的方法,原创 2017-06-02 20:35:18 · 1759 阅读 · 0 评论 -
利用handler机制进行Server数据传输
在进行Server数据收发的时候,由于Android对HTTP、Socket等不支持在UI中进行操作,所以需要使用非主线程的其他线程来进行请求操作,于是想到了利用handler,将Socket等收发数据的请求放在其他线程中,通过handler传递来更新主线程,主要的收发传递代码如下:一、handler接收端private Handler handler = new Handler() {原创 2017-06-07 09:21:58 · 502 阅读 · 0 评论 -
Android<我所理解的Handler机制>
1.为什么需要Handler机制在我的<线程和进程在Android中的工作方式>中,明确地说明了应用启动时,系统会为应用创建一个名为“主线程”的执行线程。 此线程非常重要,因为它负责将事件分派给相应的用户界面小部件,其中包括绘图事件。 此外,它也是应用与 Android UI 工具包组件(来自 android.widget 和 android.view 软件包的组件)进行交互的线程。所以我们所有的涉转载 2017-06-07 09:06:34 · 372 阅读 · 0 评论 -
Android Menu的基本使用
在Android中,菜单项是比较常见的一种人机交互方式,通过设置菜单项,既可以节省布局控件,也可以实现更加人性化的操作(可以提供一种不断发掘探索的精神)。其实,关于菜单项,大家都已经见怪不怪了,在windows或者其他操作系统中,已经熟悉的不能再熟悉了,在Android中应用也是非常,例如QQ、微信等都有不少菜单。接下来,简单介绍一下菜单的基本使用。1.创建选项菜单(Options Menu)原创 2017-05-21 10:41:15 · 462 阅读 · 0 评论 -
关于 MPAndroidChart 中的 LineChart 的使用小结
不得不说MPAndroidChart这个开源库是比较强大的,在描述各种数据图形上,功能还是比较齐全,最近一直在使用Linechart,看到网上的案例大多都是讲一些属性,没有具体的一个使用Demo和用户体验,所以自己稍微封装了一下其中的Linechart实现功能。前提是,这个封装好的类,只适用于传入数据并打印,功能比较简单。public class LineChartShow { pri原创 2017-04-21 15:28:09 · 20283 阅读 · 2 评论 -
Android中的广播Broadcast
从一开始值认识Activity到现在开始逐步学习其他三大组件,这是个漫长的过程,今天刚好学了一点儿Broadcast的内容,总结一下。顾名思义,Broadcast,即为广播的意思,那么这样一个广播在Android开发中起什么作用呢?首先,从传统意义上来讲,广播的作用是为了传递信息,那么Broadcast同样也是用来传递信息的,而且传递的还是全局信息,即Android中的系统信息,比如短信的收发,不原创 2017-05-28 15:44:55 · 479 阅读 · 0 评论 -
关于android生命周期的一些学习总结
从一开始学Java到开始接触Android编程学习,给我的感觉是相似又不同。在Java中,一个程序的入口即main()函数,而在Android的中,你会发现找不到main函数,取而代之的,是它的生命周期。简单来讲,当一个Android Activity以后,会调用onCreate()方法,对该Activity进行初始化。onStart()方法会在启动该Activity时被调用(原创 2017-02-24 19:25:11 · 420 阅读 · 0 评论 -
Android中的显隐式Intent
Android中Intent常用来调用启动不同的Activity,分为显式和隐式Intent,其实很简单,即在调用Intent时,在其构造函数中直接传递主Activity和要跳转的Activity就属于显式Intent,而没有指定Activity,通过制定一个Action和Category的方式启动另一个Activity的方式称为隐式Intent。下面通过一个实例来演示:AndroidMani原创 2017-05-09 14:43:35 · 268 阅读 · 0 评论 -
Android中的Toast和Notification
刚刚学习了Android中的信息提示方法,之前的AlertDialog和Toast、Notification都是Android中存在的信息提示方法,本文总结一下Toast和Notification的基本使用方法。1.Toast首先来看Toast,这个是我最早接触的信息提示方法,也是很常见的一种信息提示方法,例如手机连接usb设备,会弹出一个小的提示“设备已连接!”,这在利用usb通讯或者蓝原创 2017-05-24 13:55:21 · 599 阅读 · 0 评论 -
自定义Title标题栏
最近需要写一个自定义的标题栏,本来想把自带的style改改的,但是又感觉太麻烦,所以干脆自己来写一个,简单的实现中间文字标题,两侧Button点击事件。先放个效果图:代码如下:<android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_原创 2017-06-23 15:28:40 · 524 阅读 · 0 评论 -
如何实现EditText的历史记录功能(关闭后再次打开显示上次的记录)?
内容:主要是实现从主Activity跳转到设置Activity,然后点击EditText进行参数设置(这里均是Number类型),参数需要限制类型、限制长度,同时在退出当前Activity或者关闭应用再次打开后,可以自动显示最近的历史参数记录。实现的方式:Android studio,一个敲码很爽的键盘,一首轻快的民谣外加一个思考的大脑一、基本属性言归正传,一步一步来写,首先是Edit原创 2017-06-23 15:12:56 · 7970 阅读 · 0 评论 -
利用ViewPager和WheelView实现横向纵向轮番滚动
如题如图,利用ViewPager和WheelView实现横向滚动带动纵向数据列表发生变化。横向滚动:ViewPager关于ViewPager的使用,网上已经有较多的介绍,这里说一点,之前我想利用ViewPager实现无限循环,虽然功能实现了,但是无法获取到当前每个view的ID,无论通过setTag还是setId都无法准确获取到无限循环中的view,所以导致在上述代码实现过程中,使用的还是传统有限...原创 2018-07-04 10:47:39 · 992 阅读 · 0 评论 -
关于MPAndroidChart中 LineChart的更新使用
在去年4月份,就MPAndroidChart的旧版本中的LineChart进行了简单封装,上个月在做另一个项目时,无意间去看了一下这个控件的github,竟然发现更新了,所以在新项目中,尝试使用了更新之后的LineChart,发现效果还不错,接下来就这一“折线图”进行简单说明。github地址:https://github.com/PhilJay/MPAndroidChart public c...原创 2018-07-04 09:39:32 · 3871 阅读 · 0 评论 -
Android矢量图的制作
在Android开发中,搞过UI设计的人都知道,经常会为了适应不同的屏幕分辨率而制作大量的图片,如果有一个靠谱负责的美工还好,否则真的很痛苦,经过这么久的学习,踩坑无数,练成了终极大法,遂昭告天下。首先,总结一下现成的几个不错的Android图片素材库(从知乎大佬那里copy过来的):1.阿里公开库http://www.iconfont.cn/collections?spm=a313x原创 2017-12-26 15:06:17 · 1493 阅读 · 0 评论 -
Android中的socket长连接问题(包括心跳机制、多线程数据发送)
前阶段的一个项目,需要实现socket的长连接,即需要实现心跳连接,由于之前只做过简单的socket通讯,所以没有太多的相关知识,只能在度娘上边儿潜水,从0开始学习心跳机制,其实,只要稍微了解网络通讯的业界大佬对此应该都是不屑的,“心跳”说白了就是为了保证长连接,在正常的socket通讯中,只要服务端socket和客户端socket连接成功后,就可以进行数据的传递了,但是有些时候,服务器端不知道客原创 2017-12-26 10:38:49 · 2755 阅读 · 2 评论 -
Android基础笔记(十六)- Service:startService()、stopService()、bindService()、unbindService()补充
开门见山第一种第二种第三种总结开门见山开启服务有三种情况:如果直接使用服务,则没有必要进行绑定,但是如果要使用服务里面的方法,则要进行绑定。具体的启动情况有下:①调用startService(),再调用stopService()。②单独调用bindService()方法,再unbindService()后,以执行服务内部的方法。③先调用startService(),再调用bindSer转载 2017-09-22 09:31:27 · 1496 阅读 · 0 评论 -
获得Android设备的唯一序列号
理论部分1、每个设备都有一个唯一序列号,Android设备也不例外,PC上用Mac地址实践部分1、核心代码: Secure.getString(getContentResolver(),Secure.ANDROID_ID);2、一个小案例: main.xml [html] view plain copy print? <?xml version=“1.0” encoding=“utf-转载 2017-09-11 18:09:46 · 1527 阅读 · 0 评论 -
Android横竖屏切屏的注意事项
最近接触切屏,要求横竖屏有不同的布局,但是控件功能一致,所以就上网找了找这方面的知识,刚开始头还是比较大的,总结一下网上整理的,大致从以下几个方面讲一下。1.横竖切屏的生命周期要实现切屏,首先要考虑切屏时候的数据保留问题,这就需要考虑到生命周期的变化,经过测试正常的切屏会经历:onPause-->onStop-->onDestroy-->onCreate-->onStart...原创 2017-08-25 14:15:28 · 496 阅读 · 0 评论 -
Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
最近刚好做了一个Android的登录注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登陆注册功能,本文未涉及到与服务器的交流。首先,对于登陆注册要有一个明确的逻辑顺序,不管是对于SharedPreferences还是SQLite,流程都是:注册---->检测是否重名---->注册成功---->登录---->验证...原创 2017-07-10 08:57:43 · 34685 阅读 · 13 评论 -
Base64编码与解码原理和使用及复杂数据的存储
Base64是网络上最常用的传输8bit字节数据的编码方式之一,是一种简单的加密方式,实际中使用的加密比这复杂的多,也可以用在复杂数据的存储上,比如我们要把类对象和图片等复杂数据进行存储,就需要将这些对象和图片的字节数据进行Base64编码,然后再讲编码后的String存储到XML文件中。 我们先来简单的了解Base64的原理:3*8=4*6 例子:s13 首先转载 2017-05-25 09:29:04 · 957 阅读 · 0 评论 -
关于Base64编码的理解
之前在很多业务中都有见过或者用到过Base64编码,但一直一知半解,没有对它有一个深入的认识和理解。今天就来聊一聊Base64编码的问题。 首先要明确的是,Base64是一种可逆的编码方式,提到编码方式,我们首先想到的肯定是Ascii、GBK、Unicode这些常用的编码方法,那么Base64与这些编码方式有什么不同呢? 简单来将,Base64就是一种用64个Ascii字符转载 2017-05-25 09:25:56 · 295 阅读 · 0 评论 -
Android GPS初识
Android为GPS提供了LocatManager服务类,通过该类来获取GPS相关的服务,与AudioManager类相似,均需要调用系统服务。查询相关的API后可知,其中较为重要的类有LocationProvider和Location类,在实际应用中,获取GPS定位信息的主要步骤如下:1.获取系统GPS服务类,即LocationManager实例对象。LocatManager原创 2017-03-19 18:18:53 · 467 阅读 · 0 评论 -
Android中的AsyncTask异步类
AsyncTask类是Android异步任务处理的主要类(辅助类),主要是为了处理后台网络通信,然后将结果返回给UI线程,其本质是一个线程类,只是AsyncTask的处理时间较短,适用于短期操作。通过查阅API可知:1.AsyncTask有三种类型:Params,Progress,Result。new AsyncTask,Progress,Result>()//其中,Param原创 2017-03-20 14:04:46 · 344 阅读 · 0 评论 -
Activity之间的值传递
最近又在开始复习(其实就是在重学啊,都TM忘了啊)Activity的一些操作,今天刚又看了一次极客学院的视频,作为一次记录,同时也算作一次小结。好了,废话不多说,在Activity之间进行值传递,通常用两种方法,对于数据量少的可以进行简单值传递,此时会用到Intent这个类,基本使用方法看以下代码:主Activity:import android.content.Intent;impor原创 2017-03-21 20:27:37 · 349 阅读 · 0 评论 -
Android启动页面定时跳转的三种方法
从我所做的项目来看,几乎都少不了开始页面,启动页面的作用能够打广告、发公告、做缓存处理、更新数据等等!Android实现开始页面的跳转,就是打开一个Android手机APP的欢迎界面后跳转到指定界面,下面就让我简单介绍下比较常用的开始页面的跳转方法吧。一、在onCreate里设置个Timer,然后建立Intent指向你要调用的Activity。设置Timer 任意秒后执行startActi转载 2017-03-22 19:32:56 · 3308 阅读 · 0 评论 -
Android 项目结构
创建一个Android项目需要先清楚它的项目结构:如图:其中最主要的部分书app部分。build/:Android studio自动生成的各种源文件,包括生成的.apk文件、R.java文件等。libs/: 存放第三方jar包的地方,主要用来导入jar,可以将第三方jar包粘贴,然后右键选择As ...src/: Java源代码存放的地方main/:原创 2017-03-23 13:39:13 · 371 阅读 · 0 评论 -
Android权限大全
访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米获取精确位置转载 2017-03-23 13:43:48 · 472 阅读 · 0 评论 -
Android USB通讯
今天抽空整理一下上周开发USB Host过程中学习到的。Android USB通讯其实还是比较简单的,只要把具体的流程搞清楚,实现起来并不难。本文主要简单讲一下如何实现USB Host通讯以及在开发过程中遇到的问题。言归正传,在开发前,你需要做这么几件事情,首先你需要知道你要连接的USB设备的VID和PID,这里不再解释二者的含义(其实就是硬件ID);其次你需要清楚Android设备USB通讯的原创 2017-04-07 09:23:52 · 877 阅读 · 0 评论 -
Spinner中getResource()空指针问题以及Context传值问题
在封装一个Spinner的时候,传值报空指针异常:java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference报错语句:time原创 2017-04-08 11:14:46 · 4422 阅读 · 0 评论 -
Android Intent传值和回传值
为了实现点击某个Actionbar弹出某个Dialog Or AnortherAvtivity进行参数设置,同时设置好的参数还可以返回当前主界面进行处理,此时会想到用Intent的传值问题。那么首先要了解Intent启动一个Activity并进行值传递的过程。之前的博客写过关于Intent启动的方法和简单的传值,这里主要说一下关于Intent传递int数据的问题,Intent传递Int数据可以通过原创 2017-04-11 21:26:20 · 11801 阅读 · 0 评论 -
Android学习笔记之传感器
Android传感器概述:动作传感器、环境传感器、位置传感器等,如方向传感器(电子罗盘)、重力传感器(横纵切换)。Android SDK支持的传感器并不是每一部Android手机均支持。动作传感器:在三个轴上测量加速度和旋转角度,包括加速度、重力、陀螺仪;环境传感器:测量环境参数,包括湿度、光线、温度;位置传感器:测量设备物理位置,包括方向、磁力。ASF(Android传感器框架)原创 2017-03-08 09:12:09 · 849 阅读 · 0 评论 -
Android学习笔记之基础绘图类
Android中常用的基础绘图类有以下三种:1>Bitmap类,表示一张位图,可以自由创建或者读取文件,功能类似于Java中的BufferedImage,其中有很多相似的方法,包括读取一张图片,创建或者保存等。2>Canvas类,表示画布,可以通过设置画布的属性,画出所需要的东西。其中,Canvas类和Bitmap类在某些方法上具有相似的功能,例如创建一个固定大小的图像等。3>Pain原创 2017-02-27 09:48:38 · 699 阅读 · 0 评论 -
Android AlertDialog的基本用法
在Android开发中,我们会遇到很多信息提示,这在人机交互方面也是非常有用的一种方式,原创 2017-05-24 13:10:50 · 389 阅读 · 0 评论 -
GitHub上star超过2k的安卓项目和代码风格指南(绝对干货)
前几天看到的一个帖子,比较火,五一节没有时间开电脑,所以现在贴出来和大家分享一下。转载地址:http://weizhan.51cto.com/article/view/58e5fe3bf2dd8763f472c5c1?is_share=1注释:感谢原创作者和后期翻译者的辛苦。近日在搜MVP模式作为安卓项目架构时候,发现GitHub上一篇介绍MVP架构的文章。一看star已经超过转载 2017-05-02 11:24:51 · 1218 阅读 · 0 评论 -
Android学习笔记之动画简介
由于在本科期间对动画产生过兴趣,利用Adobe Flash制作过一些小的动态图,正好在学Android动画制作,所以来记录一下学习笔记。目前,在Android中,有以下三种动画模式:1>Frame Animation:逐帧动画,通过利用每张静态图片在人眼的“视觉暂留”,以达到动画目的,就像一开始的动画片一样,将每一张图片合订,在随着页码的翻动,显示给人们的就还想是动起来一样。配置逐帧动画,即在原创 2017-02-27 14:38:48 · 770 阅读 · 0 评论 -
Android学习笔记之蓝牙
蓝牙:短距离无线通讯技术标准。蓝牙协议分为4层,即核心协议层、电缆替代协议层、电话控制协议层和彩乃的其他协议层。其中核心协议层包括基带、链路管理、逻辑链路控制和适应协议四部分。链路管理(LMP)负责蓝牙组件间的建立。逻辑链路控制与适应协议(L2CAP)位于基带协议层上,属于数据链路层,是一个高层传输和应用层协议屏蔽基带协议的适配协议。1>第一种打开蓝牙的方式: Intent enableI原创 2017-03-14 15:09:42 · 500 阅读 · 0 评论 -
Android Key获取方式
在很多情况下,比如应用百度SDK开发Android定位或者实现网页交互,均需要获取一个key来进行调试。简单说一下在Android studio和eclipse中如何获取key以及如何查看相关信息,笔者是在Mac下获取的,windows也一样。1.Android studio中创建获取Key1>随便新建一个Android项目,点击Build下拉Generate Signed APK原创 2017-03-19 19:15:42 · 2863 阅读 · 0 评论 -
Android onKeyDown自定义功能
最近做一个应用,需要实现类似于自拍杆的功能,即将自拍杆插头插入耳机孔,然后模拟自拍杆,点击自拍杆按钮实现拍照功能或者调解音量功能。之前没有接触过关于硬触发的开发,所以不太清楚在Android项目中该如何添加实现,在网上查了一番,发现Android中提供了一个onKeyDown方法,用来监听手机键盘被按下时的事件动作。查阅Android API可知:原创 2017-03-25 09:37:38 · 1915 阅读 · 0 评论 -
Android Studio真机测试抛出Error:Unable to delete file: F:.../....jars
在windows平台使用Android Studio没有出现过此问题,最近装了 Hackintosh ,进行真机测试的时候出现此问题:Error:Execution failed for task ':app:clean'.> Unable to delete directory: /Volumes/Function/RK/Android代码/Http/app/build/intermedi原创 2017-01-12 16:11:12 · 736 阅读 · 0 评论