200款优秀android项目源码
1. Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)
万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。
涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送和接收数据、分包解包)和服务端(初始化广播数据、开始广播、配置Services、Server回调操作)整个环节以及一些常见的问题即踩过的一些坑。
比如
1、在Android不同版本或不同手机的适配问题,扫描不到蓝牙设备
2、如何避免ble蓝牙连接出现133错误?
3、单次写的数据大小有20字节限制,如何发送长数据
蓝牙有传统(经典)蓝牙和低功耗蓝牙BLE(Bluetooth Low Energy)之分,两者的开发的API不一样,本文主讲Ble蓝牙开发,传统蓝牙不展开,有需要的可以自行了解。
相对传统蓝牙,BLE低功耗蓝牙,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输。
客户端
服务端
Android4.3(API Level 18)开始引入BLE的核心功能并提供了相应的 API。应用程序通过这些 API 扫描蓝牙设备、查询 services、读写设备的 characteristics(属性特征)等操作。
BLE蓝牙协议是GATT协议, BLE相关类不多, 全都位于android.bluetooth包和android.bluetooth.le包的几个类:
android.bluetooth.
.BluetoothGattService 包含多个Characteristic(属性特征值), 含有唯一的UUID作为标识
.BluetoothGattCharacteristic 包含单个值和多个Descriptor, 含有唯一的UUID作为标识
.BluetoothGattDescriptor 对Characteristic进行描述, 含有唯一的UUID作为标识
.BluetoothGatt 客户端相关
.BluetoothGattCallback 客户端连接回调
.BluetoothGattServer 服务端相关
.BluetoothGattServerCallback 服务端连接回调
android.bluetooth.le.
.AdvertiseCallback 服务端的广播回调
.AdvertiseData 服务端的广播数据
.AdvertiseSettings 服务端的广播设置
.BluetoothLeAdvertiser 服务端的广播
.BluetoothLeScanner 客户端扫描相关(Android5.0新增)
.ScanCallback 客户端扫描回调
.ScanFilter 客户端扫描过滤
.ScanRecord 客户端扫描结果的广播数据
.ScanResult 客户端扫描结果
.ScanSettings 客户端扫描设置
BLE设备分为两种设备: 客户端(也叫主机/中心设备/Central), 服务端(也叫从机/外围设备/peripheral)
客户端的核心类是 BluetoothGatt
服务端的核心类是 BluetoothGattServer 和 BluetoothLeAdvertiser
BLE数据的核心类是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor
下面详细讲解下客户端和服务端的开发步骤流程
安卓手机涉及蓝牙权限问题,蓝牙开发需要在AndroidManifest.xml文件中添加权限声明:
在搜索设备之前需要询问打开手机蓝牙:
注意: BLE设备地址是动态变化(每隔一段时间都会变化),而经典蓝牙设备是出厂就固定不变了!
通过扫描BLE设备,根据设备名称区分出目标设备targetDevice,下一步实现与目标设备的连接,在连接设备之前要停止搜索蓝牙;停止搜索一般需要一定的时间来完成,最好调用停止搜索函数之后加以100ms的延时,保证系统能够完全停止搜索蓝牙设备。停止搜索之后启动连接过程;
BLE蓝牙的连接方法相对简单只需调用connectGatt方法;
参数说明
与设备建立连接之后与设备通信,整个通信过程都是在BluetoothGattCallback的异步回调函数中完成;
BluetoothGattCallback中主要回调函数如下:
上述几个回调函数是BLE开发中不可缺少的;
当调用targetdDevice.connectGatt(context, false, gattCallback)后系统会主动发起与BLE蓝牙设备的连接,若成功连接到设备将回调onConnectionStateChange方法,其处理过程如下:
判断newState == BluetoothGatt.STATE_CONNECTED表明此时已经成功连接到设备;
mBluetoothGatt.discoverServices();
扫描BLE设备服务是安卓系统中关于BLE蓝牙开发的重要一步,一般在设备连接成功后调用,扫描到设备服务后回调onServicesDiscovered()函数,函数原型如下:
BLE蓝牙开发主要有负责通信的BluetoothGattService完成的。当且称为通信服务。通信服务通过硬件工程师提供的UUID获取。获取方式如下:
具体操作方式如下:
开启监听,即建立与设备的通信的首发数据通道,BLE开发中只有当客户端成功开启监听后才能与服务端收发数据。开启监听的方式如下:
BLE单次写的数据量大小是有限制的, 通常是20字节 ,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
监听成功后通过向 writeCharacteristic写入数据实现与服务端的通信。写入方式如下:
其中:value一般为Hex格式指令,其内容由设备通信的蓝牙通信协议规定;
若写入指令成功则回调BluetoothGattCallback中的onCharacteristicWrite()方法,说明将数据已经发送给下位机;
若发送的数据符合通信协议,则服务端会向客户端回复相应的数据。发送的数据通过回调onCharacteristicChanged()方法获取,其处理方式如下:
通过向服务端发送指令获取服务端的回复数据,即可完成与设备的通信过程;
当与设备完成通信之后之后一定要断开与设备的连接。调用以下方法断开与设备的连接:
源码上传在CSDN上了,有需要的可以借鉴。
=====> Android蓝牙Ble通讯Demo示例源码–扫描,连接,发送和接收数据,分包解包
BLE单次写的数据量大小是有限制的,通常是20字节,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
总体流程如下:
1、定义通讯协议,如下(这里只是个举例,可以根据项目需求扩展)
2、封装通用发送数据接口(拆包)
该接口根据会发送数据内容按最大字节数拆分(一般20字节)放入队列,拆分完后,依次从队列里取出发送
3、封装通用接收数据接口(组包)
该接口根据从接收的数据按协议里的定义解析数据长度判读是否完整包,不是的话把每条消息累加起来
4、解析完整的数据包,进行业务逻辑处理
5、协议还可以引入加密解密,需要注意的选算法参数的时候,加密后的长度最好跟原数据长度一致,这样不会影响拆包组包
一般都是Android版本适配以及不同ROM机型(小米/红米、华为/荣耀等)(EMUI、MIUI、ColorOS等)的权限问题
蓝牙开发中有很多问题,要静下心分析问题,肯定可以解决的,一起加油;
2. android项目源码下载
对于读项目源代码来说,可能对大多数人是件困难的事。首先,第一个障碍:看到项目,就已经放弃! 如果有十个人,可能有5个人以上会是上面这种情况,分析其想法:这么多的代码,我要怎么读啊!我要读好久啊!算了,还是看小Demo吧,所以这样,他们也就只是把这个项目导入到eclipse中,点了几下鼠标,然后就没有下文了。 解决办法:其实他们终止的原因很简单,就是嫌麻烦,那好吧,告诉你,这点麻烦都能对你造成影响,其实你的开发之路也可以终止了。任何东西,你要学到它,你就必须花时间、花精力、还要有面对困难的准备。想一步登天,有可能,除非你是天才,但毕竟天才太少了!对于开发,不是学习1+1,所以,先摆正心态吧,那要具备怎样的心态呢?那就是:有面对困难的准备,也有解决苦难的信心。 心态问题解决了,那就是读代码的技巧了,很多人拿到一个项目不知道怎么入手,干脆就胡乱的一通看,看到一定时候发现,实在进行不下去了,又开始重新梳理自己的思路。这样是很浪费时间的,其实对于读一个项目,最好按照以下步骤进行(
个人意见,仅供参考
): 1、使用这个应用或者游戏,直到熟悉它的使用流程和功能 2、根据自己的体验分析代码实现(整体) 3、如果有条件和原作者请教项目思路 4、从最先启动的Activity开始,弄懂每个Activity功能如何实现以及它的布局实现 5、遇到不懂的代码,首先找搜索引擎(一般都能解决)。还不行就可以请教他人了 6、对新学到的知识点,一定要总结下来,并且定期的去回顾
7、最重要的一点:
我认为要自己动手写,那怕是重新写一遍这个项目,或者自己设计一个类似的,再或者只写这个项目中的一部分。 为什么要自己动手呢?大家都知道coder这个东西,那怕你理论学得再好,不动手,那也是毫无意义的!所以,动手写一下,你会遇到问题,你就会解决问题,这样,你才能学到更多。这就是经验·······
以上回答你满意么?
3. 急求一个android studio小程序源代码,最好是纪念日app那样的,只有最简单功能就行
主界面
这次我的测评希望可以尽可能地避免出现对于设计美感的主观讨论,为了达到这个目标,我特意用 Keynote 制作了三个应用主界面的“原型图”。
通过我做的“原型图”可以看出,三个应用都采用了顶部导航的设计,而其中共有的一个按钮是“添加新项目”这个使用频次最高的功能。其次,“最美时光”和“Daybox”都将“设置”按钮放在了顶部,而“Days Matter”则是将这个按钮放在了接下来我们会谈到的底部导航栏中。除此之外,“最美时光”在顶部设置了一个“更多”按钮,用来展示最美系列的其他应用,“Days Matter”在顶部设置了一个“分类查看”按钮,可以呼出左边侧边栏,用来分类查看不同的倒数日、纪念日。
“最美时光”与“Daybox”仅仅有一个顶部导航,而“Days Matter”则非常复古地添加了一个底部导航栏,这在最近类似的轻应用中是很少见的。具体的功能我们放到后面去分析,至少双导航栏的设计占据了本属于倒数日列表的空间是毋庸置疑的,而且过多的元素排布会分散用户的注意力。
接下来让我们把目光转向主界面最重要的元素——纪念日展示,虽然都是列表的展示,但是仔细观察还是能发现其中的差别的。“Days Matter”与“Daybox”都是采用“一主多次”的排列方案:即给最重要的倒数日最大的展示空间,其他的倒数日则用窄列表排列;而“最美时光”则是采用“一视同仁”的排列方案。这两种方法各有利弊,一句话来说就是在“视线聚焦”与“更多的展示空间”之间做抉择,至于确定哪种方案更好,我的计划是是要调查用户到底需要记多少个倒数日以及倒数日之间到底有没有轻重之分,这个在后面我会设计一个实验来证明。
最后我们要关注的是一个细节,即如何区分“倒数”与“正数”。简单解释一下,在应用中我们一般要记两种日子,一种是倒数,比如“距离 X 的生日还有 XX 天”;另一种是正数,比如“距离我们第一次吃饭已经有 XX 天了”。在应用中如何区分这两种计数方式是我关心的一个点,因为这体现了这款应用是否够严谨。先让我们看“Days Matter”,用“已经”、“还有”两个中文词汇就轻松区分开了两种计数方式,从这点可以明显地看出应用的优势;“最美时光”的方式也很巧妙,用[+]来表示“正数”,没有符号则代表“倒数”,虽然会有一定的学习成本,仍可以算是一个“简约”的方案。表现最差的是“Daybox”,完全没有在这上面下功夫,单单从界面上根本无法区分“正数”与“倒数”,可以说是一个败笔哦。
4. 怎样查看 Android APP源代码
将apk文件拷贝至sdcard上。
命令顺序如下:
进入Android sdk文件夹/tools目录下
输入adb shell
输入su
输入cd data
输入cd app
这时就可以看到你安装的所有的apk文件。输入cp 空格 对应的apk 空格 /sdcard/
这样就将apk文件拷贝出来了。
将apk文件后缀直接变成rar格式,可以看到熟悉的目录结构了,
其中xml文件打开后都是二进制的,无法查看。
这时就用到了一个android4me的AXMLPrinter2工具。(请自行网络搜索)
输入以下命令,将xml文件解析出来
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
将showtimes_list.xml生成xml文件,则输入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前进行到这一步,只能看到xml文件的内容,其工程中的java源文件还是看不到,看目录结构下有一个classes.dex文件,我们需要将dex文件变为jar文件。
这里用到了另一个工具dex2jar。(自行搜索下载)
在Windows下解压之后的目录如下图所示:
在命令行中,进入到此目录下:
在Windows下,输入以下命令:
dex2jar.bat c:classes.dex
运行完之后,在C盘会多一个classes.dex.dex2jar.jar文件,此文件就是我们需要的jar文件。
利用jd-gui,将jar文件反向工程为java代码。(请自行搜索下载)
它分为Windows、Linux、和max三个版本,这里我下载的是Windows版本的。
解压之后,双击运行exe文件,选择classes.dex.dex2jar.jar文件,相应的jar文件中的Java文件就被反向工程显示出来了!
5. Android GitHub高分优秀中文项目
CarGuo/GSYVideoPlayer
Tencent/QMUI_Android
JessYanCoding/AndroidAutoSize
youth5201314/banner
jeasonlzy/okhttp-OkGo
justauth/JustAuth
LuckSiege/PictureSelector
gyf-dev/ImmersionBar
huanghaibin-dev/CalendarView
goldze/MVVMHabit
Meituan-Dianping/walle
jpush/aurora-imui
KunMinX/Jetpack-MVVM-Best-Practice
ximsfei/Android-skin-support
yanzhenjie/SwipeRecyclerView
TommyLemon/指哗Android-ZBLibrary
hongyangAndroid/baseAdapter
youlookwhat/CloudReader
h2pl/Java-Tutorial
oldmanpushcart/greys-anatomy
zzhoujay/RichText
brianway/java-learning
pqpo/SmartCropper
luojilab/DDComponentForAndroid
getActivity/AndroidProject
| Doikki/DKVideoPlayer |
promeG/袜裂TinyPinyin
zhou-you/RxEasyHttp
| crazyandcoder/citypicker |
huburt-Hu/NewbieGuide
FinalTeam/RxGalleryFinal
mxdldev/android-mvp-mvvm-flytour
MagicMashRoom/SuperCalendar
jiajunhui/PlayerBase
xuexiangjys/XUI
dingjikerbo/唯好行Android-BluetoothKit
android-notes/Cockroach
KingJA/LoadSir
Hitomis/transferee
KunMinX/Linkage-RecyclerView
doocs/jvm
BaronZ88/MinimalistWeather
LaiFeng-Android/SopCastComponent
JeremyLiao/LiveEventBus
svga/SVGAPlayer-Android
mqzhangw/JIMU
jianjunxiao/NiceVieoPlayer
6. 有没有什么好的android 实例开发的源代码网站
网上下载建站系统,例如:pageadmin cms、discha都是不错的、简单、方便、直接下载就可以使用。
7. 怎样查看 Android APP 源代码
需要把反编译的apk存放到apktools同级文件夹目录下,然后运行要查看的安装包,具体操作如下:
1、首先把反编译的apk存放到apktools同级文件夹目录下,如下图所示。
8. 需要一套android打车软件的源码(可现金购买
网约车平台推荐:神州专车、首汽约车、滴滴出行、美团打车、曹操专车。
1、神州专车
神州专车app打车方便,随叫随到,同时神州专车app支付还方便,微信、支付宝都可以付款,神州专车还可以预约用车,还有很多中高端车型,选择多样化。预约用车和专车首选它。
2、首汽约车
“首汽约车”是首约科技(北京)有限公司实施开发运营,首汽约车与市面现有专车不同,首汽约车车辆全部为政府许可的出租运营车辆,挂有北京出租车特有的"京旦洞B"牌照。在首都深圳等地约车的不二选择。
3、滴滴出行
滴滴出行app是一款涵盖出租车、专车、快车、顺风车、代驾及巴士在内的一站式出行平台,不仅能够增加司机的接单率和收入,乘客出行打车等待时间也大大减少,是现在使用模备枯量最大的一个平台,属于出行必备APP。
4、美团打车
这是美团在南京测试运营打车业务后,正式向其他城市拓展业务的最新举动。美团初期选定的城市包括北京、上海、成都、杭州、福州、温州和厦门。并且在这些地区招收各种网约车司机,由于优厚的福利很多司机都报名了,打车价格较为低廉。是在美团打车开通的城市的不二选择。
5、曹操专车
曹操专车是首个建立新能源汽车出行服务标准的专车品牌。集合了新能源专车出行、新能源汽车分时租赁(由的蓝租车提供)等服务的平台。注重新能源以及拥有特色的租车服务。而且在专车方面和神州滚并不相上下,会不定期有优惠券,是绿色理念城市人的新选择。
9. android 开发大侠 求android google pinyin IME 开源源码
包含在Android的源代码里,路径:packages\inputmethods\PinyinIME
Android的源代码下载参考: http://source.android.com/source/downloading.html
需要在Linux环境下载
10. 目前市面上android商城app源码有哪些效果怎么样
android商城app源码有很多,能看的眼花缭乱。大型商城app源码自然很少,都可以学习下载,效果来说还不错的。