首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Android中使用枚举注解而不是枚举

很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。...就是这个类在给他人使用时,构造函数由于参数是 int 类型。所以他可以传递我们定义好的3种类型中的其它任意 int 数值,这就有可能会产生某种错误。...我们这里使用 RetentionPolicy.SOURCE 的用意就是在编码时能够识别出错误的 FileType,至于 RUNTIME和 CLASS 阶段的状态,我们是不关心的。...@IntDef 是 android.support.annotation 包定义的注解,使用它来规范我们的 fileType 变量的取值范围。...FileTypeDef { } public FileType(@FileTypeDef int fileType) { this.fileType = fileType; } } 使用注解除了可以避免不必要错误外

1.4K20

为什么我在 Linux 上使用 exa 而不是 ls?

我们生活在一个繁忙的世界里,当我们需要查找文件和数据时,使用 ls 命令可以节省时间和精力。但如果不经过大量调整,默认的 ls 输出并不十分舒心。...exa 是一个常规 ls 命令的现代替代品,它让生活变得更轻松。这个工具是用 Rust 编写的,该语言以并行性和安全性而闻名。...跟踪文件 你可以使用 exa 来跟踪某个 Git 仓库中新增的文件。 image.png 树形结构 这是 exa 的基本树形结构。--level 的值决定了列表的深度,这里设置为 2。...扩展文件属性 当你使用 exa 探索 xattrs(扩展的文件属性)时,--extended 会显示所有的 xattrs。...它的颜色编码让我更容易在多个子目录中进行搜索,它还能帮助我了解当前的 xattrs。

2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    eBPF在android上的使用

    BCC在android系统上也可以运行,但是要对系统进行一定程度的修改,后续可能会写单独的文章进行讲解。对于内核开发者我还比较关注怎么自己来实现监控的功能,下文也将做简单的讲解。 ?...8)中断性能 三、eBPF框架 在开始说明之前先解释下eBPF上的名词,来帮忙更好的理解。...四、eBPF在Android平台的使用 经过上面枯燥的讲解,大家应该对eBPF有了基础的认识,下面我们就来通过android平台上的一个监控性能的小例子来实操下。...至此,如何在android平台使用eBPF实现统计系统中每个pid在一段时间内系统调用的次数的功能就介绍完了。...研究的时间还是比较短,如果有任何错误的地方欢迎指正。

    4.5K10

    MongoDB在Android上的使用体验

    【前言】一般来讲,Android使用的数据库都是自带的SQLite数据库。Web重量级的MySQL、Orcacle、NOSQL等都不适用于Android项目的开发。...但是我发现了一个Web上最近几年比较火的一个数据库 ---- MongoDB。查看它的官网发现,它还可以用于Android开发,而且官方文档也给出了一些API说明。...于是我决定写下这篇博客分享一下MongoDB在Android上怎么使用。...【说明】:MongoDB也可以在iOS上面使用,我是做安卓开发的,本文只讲解MongoDB在Android上面的使用,iOS的使用情况请上MongoDB官网自行查阅。...默认情况下,Android Studio会为AVD部署选择x86映像,刚好运行的模拟器使用了x86镜像,导致了这个错误的发生。

    3.7K20

    ProGuard 在 Android 上的使用姿势

    如果以上还不足以说服您使用 ProGuard,其实移除无用代码和混淆所有名称还有其他更多的优化效果: 在一些版本的 Android 设备上,DEX 代码会在安装或者运行时被编译成机器码。...虽然有些错误会在构建应用时发生,您能及时发现,但是也有些错误您只能在运行时发现,所以请确保您的应用经过彻底的测试。 如何使用 ProGuard?...当一些类和方法会被动态访问到时(如使用反射),在某些情况下,ProGuard 在构建调用图时不能正确的决定他们的「生死」,导致这些代码被错误的移除掉。...这些警告的一个原因就是,您的构建路径中没有加入需要依赖的 JARs,如使用了 provided (仅编译时)依赖。而有时候,在 Android 上这些代码的依赖在运行时并不会被真正的调用。...这样的话当您看 ANRs & crashes 页面时,上报的堆栈都会现实真实的类名、方法名和行号而不是缩短的混淆后的那些。

    2.6K40

    低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别

    低功耗蓝牙(BLE) vs 经典蓝牙(SPP)区别项低功耗蓝牙(BLE)经典蓝牙(SPP 串行端口协议)蓝牙版本蓝牙版本 >= 4.0,又称蓝牙低功耗、蓝牙智能经典蓝牙2.0 或更早版本,经典配对模式在两台蓝牙设备之间建立虚拟串口数据连接...,提供一种简单而直接的数据传输通路用于数据交换。...看应用场景:BLE适用于低功耗、轻量级的应用,例如穿戴设备、传感器网络等。而SPP适用于需要大容量数据传输的应用,例如音频设备、文件传输等。...看连接距离需求:如果你需要在较远距离进行通信,经典蓝牙通常具备更广泛的连接范围。而如果通信是在相对较短的距离内进行,BLE可能是个更好的选择。...综上所述,BLE和SPP是两种不同的蓝牙通信协议,它们在功耗、数据传输速率和连接范围上存在区别。根据应用的需求,选择适合的协议以实现最佳的无线通信效果。

    2.5K10

    如何正确的在 Android 上使用协程 ?

    第一类是 Medium 上热门文章的翻译,其实我也翻译过: 在 Android 上使用协程(一):Getting The Background 在 Android 上使用协程(二):Getting started...在 Android 上使用协程(三) :Real Work 说实话,这三篇文章的确加深了我对协程的理解。...在 Android 中,一般是不建议直接使用 GlobalScope 的。那么,在 Android 中应该如何正确使用协程呢?再细分一点,如何直接在 Activity 中使用呢?...如何配合 ViewModel 、LiveData 、LifeCycle 等使用呢?我会通过简单的示例代码来阐述 Android 上的协程使用,你也可以跟着动手敲一敲。...协程在 Android 上的使用 GlobalScope 在一般的应用场景下,我们都希望可以异步进行耗时任务,比如网络请求,数据处理等等。当我们离开当前页面的时候,也希望可以取消正在进行的异步任务。

    2.8K30

    蓝牙透传模块芯片的BLE和SPP有什么区别?如何理解

    所以可以理解为蓝牙芯片是相对比较复杂的设计第二:蓝牙透传的概念理解蓝牙透传,实际上就是蓝牙应用的二次封装,它存在的意义就是方便客户使用蓝牙这项技术,因为单纯的对蓝牙SOC编程,是一件有门槛的事情,需要掌握的概念比较多...,并且代码量也相对比较庞大,所以在一些用量不大的情况下都会选择使用MCU+蓝牙模块去实现蓝牙的功能,比如和手机、平板等等进行蓝牙的数据交互所有的蓝牙部分的数据,全部由蓝牙模块去完成,最终转化为简单的接口...第三:蓝牙BLE透传的概念理解蓝牙BLE是属于蓝牙协议里面的一个子集而已,属于低功耗蓝牙部分,这个基本上是记忆蓝牙4.0版本以后才有的新技术,推出到现在也差不多10年的时间了蓝牙BLE主打的是数据传输,...而经典蓝牙是属于蓝牙协议的子集。...芯片最大的特点是在安卓只能使用3.0蓝牙,在IOS系统只能使用BLE蓝牙,价格基本和单模的持平,正因为前面所描述的BLE和SPP的存在,所以双模的芯片依然还有很强的生命力最后:以后的趋势必定是单模的天下随着蓝牙

    73330

    BLE低功耗蓝牙与经典蓝牙(持续更新)

    (每次最大传输20bit字节) 经典蓝牙(BT):经典蓝牙,泛指蓝牙4.0以下的都是经典蓝牙,你还怀念通过蓝牙让音箱播放手机的音乐么?经典蓝牙常用在语音、音乐等较高数据量传输的应用场景上。...传统蓝牙有3个功率级别,Class1,Class2,Class3,分别支持100m,10m,1m的传输距离 双模蓝牙:即在蓝牙模块中兼容BLE和BT 在Android 4.3及更高版本,Android...蓝牙堆栈可提供实现蓝牙低功耗 (BLE) 的功能,在 Android 8.0 中,原生蓝牙堆栈完全符合蓝牙 5.0 的要求。...也就是说在Android 4.3以上,我们可以通过Android 原生API和蓝牙设备交互。...ProfileProfile 并不是实际存在于 BLE 外设上的,它只是一个被 Bluetooth SIG 或者外设设计者预先定义的 Service 的集合。

    8.8K11

    Android 蓝牙4.0

    2,健康类的应用有人做出产品的 但不是基于蓝牙4.0低功耗的 还是用蓝牙2.1的spp协议来做的,蓝牙2.1或者3.0的耗电是个比较大的问题,一些小外设,需要用纽扣电池的应用就无法真正使用,对一些创意产品如果需要经常换电池或充电对用户体验都会大打折扣...3,iPhone手机的蓝牙是不能够和android手机的蓝牙通信的,而且iPhone除了蓝牙4.0以外其他版本的蓝牙外设需要通过苹果的认证才能使用的,除非大厂商大批量生产否则不可能通过认证的,当然也可以再加一个认证芯片上去解决...所以很多小公司,解决方案的公司做iPhone的应用只能做蓝牙4.0的,android的则没有这个限制。...BLE 和经典蓝牙Android编程说明 5,从界面开始的代码 Android4.0蓝牙使能的详细解析 6,开发实例(有时打不开) android 蓝牙4.0 开发经验分享 7,开发实例 关于android...蓝牙4.0开发详解  (代码已下载) 11,对蓝牙里的消息处理进行了深入讲解 源码分析异步消息处理线程机制 12,dfrobot代码,和dfrobot板子一起使用  drfobot蓝牙Android源码

    1.3K90

    关于KT6368A双模蓝牙芯片的传输速率的说明包含ble和spp

    设置mtu和串口波特率可以提高速率SPP的速率,理论上是可以达到60kbs,实际配合客户做项目,可以达到45kbs,也就是每秒45Kbyte当然这个还要考虑很多其他因素:比如信号稳定性、搭配晶振的频偏、...在连接过程中主从机会协商MTU的大小,BLE协议最大为520字节,但不是所有手机都支持512字节,大部分支持128字节。...基本上2020年以后的手机都可以设置为128个字节以上,推荐256可以理解为,MTU的大小跟蓝牙芯片无关,当客户在开发APP的时候,可以在APP端主动设置好MTU的大小,然后同步到蓝牙芯片即可==》没有修改...关于SPP的速率详细说明:spp就没有那么多事,简单直接,因为spp还是属于经典蓝牙里面子协议,共享经典蓝牙的带宽以及跳频点,所以速率相对会快很多 。...而不是分4次,每次128 。

    23150

    APP蓝牙通信的开发

    在开发APP的蓝牙通信功能时,以下是非代码层面的关键步骤和注意事项。1.明确需求功能需求:确定需要实现的功能,如数据传输、设备控制等。设备兼容性:确保支持目标设备的蓝牙版本(如BLE)。...2.选择开发平台iOS:使用CoreBluetooth框架。Android:使用Android Bluetooth API或BluetoothGatt。...3.权限配置iOS:在Info.plist中添加蓝牙权限描述。Android:在AndroidManifest.xml中声明蓝牙权限。4.蓝牙设备扫描扫描设置:确定扫描参数,如扫描时间、设备过滤条件。...8.错误处理常见错误:处理连接失败、数据传输错误等。重试机制:在必要时实现重试逻辑。9.用户界面设备列表:展示扫描到的设备。连接状态:显示连接状态和数据传输进度。...10.测试与调试设备测试:在不同设备上测试兼容性。场景测试:模拟各种使用场景,如信号弱、设备断开。11.安全与隐私数据加密:确保数据传输安全。用户隐私:遵守相关隐私政策。

    4210

    CA1831:在合适的情况下,为字符串使用 AsSpan 而不是基于范围的索引器

    Span 上的范围索引器是非复制的 Slice 操作,但对于字符串中的范围索引器,将使用方法 Substring 而不是 Slice。 这会生成字符串所请求部分的副本。...此副本在隐式用作 ReadOnlySpan 或 ReadOnlyMemory 值时常常是不必要的。 如果不需要副本,请使用 AsSpan 方法来避免不必要的副本。...,请对字符串使用 AsSpan 而不是基于 Range 的索引器,以避免创建不必要的数据副本。...若要使用它,请将光标置于数组冲突上,然后按 Ctrl+。 (句点)。 从显示的选项列表中选择“对字符串使用 AsSpan 而不是基于范围的索引器”。...而不是基于范围的索引器来获取数组的 ReadOnlySpan 或 ReadOnlyMemory 部分 CA1833:使用 AsSpan 或 AsMemory 而不是基于范围的索引器来获取数组的 Span

    1.1K00

    一文带你了解蓝牙

    BLE smart 设备,也有特有的方案 2)SOC 蓝牙 + MCU 方案 在 1)的基础上,通过特定的 interface(UART 居多),发送自定义的 command 来达到想要的功能,比如发送...3)蓝牙 host + controller 分开方案 这种应用算是蓝牙最复杂的应用,适用于蓝牙使用情景较复杂的情况下使用,比如车载蓝牙等。...的 IAP/IAP2,Android Auto 的 RFCOMM BT 呢,基本以上就需要这种方案了。...其中 Transport 是一个协议,H2 就是在 USB 的基础上的协议,H4,H5,BCSP 是 UART 基础上的协议,当然还有 SDIO。...6、学习建议 对于传统蓝牙,底层到应用层我会给出一个顺序:TRANSPORT->HCI->L2CAP->RFCOMM->SPP,中间再了解点SDP的协议 对于传统蓝牙,应用层到底层我会给出一个顺序:SPP

    1.6K20

    【Android 应用开发】BluetoothDevice详解

    该类简介 BluetoothDevice对象代表了一个远程的蓝牙设备, 通过这个类可以查询远程设备的物理地址, 名称, 连接状态等信息; 对这个类的操作, 会执行在远程蓝牙设备的硬件上.... : 允许程序发现和配对蓝牙设备, 该权限用来管理蓝牙设备, 有了这个权限, 应用才能使用本机的蓝牙设备, 主要用于对配对前的操作; 优先级 : BLUETOOTH权限是BLUETOOTH_ADMIN权限的前提...; 如果广播常量名称不是ED结尾的, 那么这个是可以自己发送的广播, 例如蓝牙开启广播 : ACTION_REQUEST_ENABLE(蓝牙可用), ACTION_REQUEST_DISCOVERABLE..., 值为12; 远程设备已经匹配; 本地存储了一个该远程设备的共享连接, 本地设备和远程设备之间的通信可以被认证和加密; 这个连接不是已经连接成功, 时刻保持连接状态, 这个连接的作用是, 下次连接的时候不用再次建立新的蓝牙连接...对象的connect()方法创建一个连接, 通过UUID执行对应信道的SDP查找动作;  如果两个安卓手机之间进行连接需要生成专用的UUID, 如果是对蓝牙串口进行连接, 就使用总所周知的SPP UUID

    1.9K30

    Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

    Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了...——蓝牙小知识—— 在蓝牙设备中,存在着物理地址,我们也叫作蓝牙的MAC地址,这个地址是唯一的,就像咱们网络上的IP地址。同时还存在着一个叫做UUID的东西,可以把它理解为是IP地址中的端口号。...经典蓝牙:经典蓝牙建立连接的方式实际上就是Socket的连接的建立。只不过这里不是直接用Socket,而是BluetoothSocket。...如果使用智能手机作为测试平台,其硬件条件是,蓝牙得至少是低功耗蓝牙版本,然后安卓系统的话,至少得是Android 4.3以上系统才行,因为Google在Android 4.3以上才做了BLE主设备的支持...很多智能电视配的遥控器带有语音识别,需要用经典蓝牙才能传输声音 传大数据量的,用经典蓝牙: 如某些工控场景,使用Android或Linux主控,外挂蓝牙遥控设备的,可以使用经典蓝牙里的SPP协议

    4.9K21

    KT6368A的蓝牙芯片修改了蓝牙名称手机没有更新_以及会出现两个蓝牙名连不上2

    一、问题KT6368A的蓝牙芯片,发指令修改蓝牙名称,但是手机的app好像没有更新1、因为你手机也会记忆名字,尤其是芯片只改了名字,而蓝牙芯片的MAC地址没变所以手机他没有刷新解决这个问题,要么换一个手机测试...或者你在原有的app上面删掉之前的配对记录,重新搜索连接,就是主动杀死当前的app,然后重新打开,如下图:改完名之后添加SPP出现两个mac地址,之前没设置过MAC地址,还配对不上这个问题,搜出来两个蓝牙...因为蓝牙串口测试app只支持SPP的测试3、如上图,RK6006,这个应该就是BLE的名称 。下面的那个就是SPP的名称,因为他们的地址不一样,注意仔细看。...因为明显的地址不同,可以详见手册的3.5章节“3.5 查询 BLE 蓝牙的名称和地址[TM][TN][TD]”4、实际使用的时候,建议BLE的名称设置,要和SPP的名称做一下区分。...5、不要用蓝牙串口这个app。去测试,建议使用“FeasyBlue”app或者其他的蓝牙调试宝等等app

    20630

    蓝牙中的sbc_蓝牙sbc格式和aac差别

    上了岁数的人可能知道,早期的蓝牙耳机都很酷,一般只有一个,而不是现在的一对,挂在一副耳朵上,戴上妥妥的高级特工既视感。...这么做的原因是随着其他无线传输技术的发展,蓝牙给自己的定位就是在“万物互联”的物联网时代,在尽可能保持低功耗的情况下,提供更高的带宽和连接稳定性。传输距离和速率并不是最重要的考量因素。...蓝牙技术的带宽就像一条公路,而合理的编码技术就像是调度有序的交通指挥系统,让数据传输更为有效率,从而提供更好的音质。 SBC SBC,Sub-Band Coding,子带编码。...这是一种压缩比较高的编码算法,苹果更喜欢用这种编码,而目前Android手机也基本上都支持了(从Android 8.0开始支持)。AAC编码技术不是开放的,所以厂商需要付费才能支持这种编码技术。...为了这个音质所带来的副作用就是传输功耗大、稳定性差,而且并不是每台手机都可以990kbps传输的,很多手机还是使用默认的660kbps的码率。

    2.8K20
    领券