GooleMap之自动缩放以显示所有标记
官方描述
设置边界
有时,通过移动摄像头来以尽可能最高的缩放级别显示整个受关注区域很有用处。 例如, 如果您要显示用户当前位置方圆五英里内的所有加油站, 可能就需要通过移动摄像头让它们全都显示在屏幕上。 如需实现此目的,请先计算您想在屏幕上显示的 LatLngBounds。 然后使用 CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) 获取 CameraUpdate,后者会相应更改摄像头位置,使得给定 LatLngBounds 在计入所指定内边距(单位:像素)后能够完全容纳在地图内。 返回的 CameraUpdate 可确保给定边界与地图边缘之间的间隙(单位:像素)至少与指定的内边距一样大。 请注意,地图的倾斜角度和方位均为 0。
1 | private GoogleMap mMap; |
LatLngBounds
- public LatLngBounds including (LatLng point) 包含显示的点
- public LatLng getCenter () 获得中心点
代码的具体实现
1 | LatLngBounds.Builder latLngBounds=new LatLngBounds.Builder(); |
问题
如果直接在获取到地图后调用会报错
解决:在回调里调用
1 | googleMap.setOnMapLoadedCallback(this); |
greenDAO3.1框架(四)添加全局初始化及基本使用
全局初始化greenDAO设置
1 | public class UserGlobalApp extends Application{ |
使用
添加数据,查询数据
1 | UserGlobalApp.getApplication().getDaoSession().getTrackPointDao().insert(new TrackPoint((long) 10,System.currentTimeMillis(),10.01,10.02,1)); |
生成的dao目录配置(非必须)
1 | //------------greenDAO数据库配置----------- |
问题
数据库加密问题
在全局配置中如果要加密,要设置为true,但是设置为ture会报错
1 | public static final boolean ENCRYPTED = false; //改为true需要加入包compile |
解决:因为没有加密包,需要添加依赖
1 | compile 'net.zetetic:android-database-sqlcipher:3.5.1' |
数据库路径设置
1 | File path=new File(Environment.getExternalStorageDirectory(),"BleDemo/db/"+dbName); //设置存储路径 |
android自定义标题栏Toolbar
新建一个xml,放标题内容
1 | <?xml version="1.0" encoding="utf-8"?> |
在需要的页面调用
1 | <include |
去掉自带标题
在配置文件找到
1 | android:theme="@style/AppTheme" |
点击进去把parent修改为NoActionBar
1 | <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> |
在activity里获取标题控件,设置基本属性
1 | toolbar = (Toolbar) findViewById(R.id.toolbar); |
在activity添加标题栏返回箭头
使能返回button
1 | toolbar = (Toolbar) findViewById(R.id.toolbar); |
添加返回button事件
1 | @Override |
Ble蓝牙开发之五扫描与连接速度优化
扫描模式
ScanSettings的属性与方法
1 | ScanSettings settings = new ScanSettings.Builder() |
greenDAO3.1框架(一)认识
主流的ORM框架
- LitePal
- AFinal
- greenDAO
区别与性能分析
greenDAO
介绍
greenDAO是一种Android数据库ORM(object/relational mapping)框架,与OrmLite、ActiveOrm、LitePal等数据库相比,单位时间内可以插入、更新和查询更多的数据,而且提供了大量的灵活通用接口。
源码github
官网
GreenDao 3.0改动:
使用过GreenDao的同学都知道,3.0之前需要通过新建GreenDaoGenerator工程生成Java数据对象(实体)和DAO对象,非常的繁琐而且也加大了使用成本。
GreenDao 3.0最大的变化就是采用注解的方式通过编译方式生成Java数据对象和DAO对象。
greenDAO3.1框架(三)常用注解
类注解
- @Entity 标记了一个Java类作为一个greenDAO实体
1 | @Entity |
基本属性注解
- @Id 必须是long类型,在数据库作为主键,参数autoincrement是否自增
1 | @Id(autoincrement = true) |
- @Property 指定改字段的列名,如果不指定将使用默认值(eg:customName对应数据库列名为CUSTOM_NAME)
1 | @Property(nameInDb = "USER_NAME") |
- @Transient 这个属性将不会作为数据表中的一个字段
1 | @Transient |
- @NotNull 该字段不能为null(作用于long, int, short, byte类型)
1 | @NotNull |
- @Index 索引(unique唯一)
1 | @Index(unique = true) |
- @Unique 添加唯一键(隐含为其创建了一个索引)
1 | @Unique private String name; |
问题
知识点:int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象
问题描述:在实体类用int等基本类型,默认不标记注解,在建数据库也会全部设置NOT NULL
解决:因此需要在实体类里写对象类型。
2016-11-29 16:18:24 发现使用中文字段名默认生成为ANSI,出现乱码,尽量使用因为的字段别名
greenDAO3.1框架(二)入门
主流的ORM框架
- LitePal
- AFinal
- greenDAO
区别与性能分析
greenDAO3.1 安装
配置build.gradle
在model的build.gradle文件添加如下配置
1 | buildscript { |
数据库的设置(可选项)
在model的build.gradle文件添加如下配置
1 | android { |
参数解释
- schemaVersion: 数据库schema版本,也可以理解为数据库版本号(默认1)
- daoPackage:设置DaoMaster 、DaoSession、Dao包名(默认为你实体的名字)
- targetGenDir:设置DaoMaster 、DaoSession、Dao目录(默认build/generated/source/greendao)
- testsGenSrcDir:设置生成单元测试目录(默认src/androidTest/java)
- generateTests:设置自动生成单元测试用例
新建实体
添加注解@
1 | @Entity |
编译运行
- targetGenDir目录(默认build/generated/source/greendao)下自动生成自动生成DaoMaster.java 、DaoSession.java、Dao.java
- 实体test.java自动新增如下代码
1 | @Generated(hash = 838475940) |
简单的使用
新建DBManager.java管理类
1 | public class DBManager { |
测试代码
1 | private void daotest(){ |
参考
Retrofit学习之三离线缓存
创建拦截器(Interceptor)
可以分开写两个拦截器一个有网的一个离线的,这里只写了一个
1 | //创建拦截器(Interceptor) |
设置缓存文件
问题?关于缓存文件在手机上的地方,目前未找到
1 | //设置缓存文件 |
创建httpclient
1 | //创建httpclient |
将httpclient添加到retrofit
1 | //将http client添加到retrofit |
请求数据
第一次必须有网络,后面无网络就是请求缓存
- enqueue 异步
1 | Itest itest=retrofit.create(Itest.class); //接口 |
问题,未验证
- 相当与数据库的 POST(创建)、PUT(更新)、GET(查看)、DELETE(删除)
- 缓存根据查找的资料,好像只有GET可以缓存
总结
- 上述缓存,是同一缓存的配置,如果要单个请求配置,可以设置接口的head,在里面传参数,然后在统一的缓存配置中用参数动态变化没次的不同缓存策略及时间。
Retrofit学习之一介绍
认识
当前的网络开源库有许多,如volley,okhttp,retrofit等,这三个库当前是比较火的,其中,okhttp和retrofit由square团队开发。
- okhttp是高性能的http库,等同于httpclient,6.0将替换httpclient
- 简化了网络请求流程,同时自己内部对OkHtttp客户端做了封装
- gson库是为了将返回数据转化为实体类
搭建环境
Retrofit
1 | compile 'com.squareup.retrofit2:retrofit:2.1.0' |
gson
1 | //将请求结果转换成json的json转换包,如果导入了这个依赖,就不用再导入Gson包,因为这个已经包含了Gson包 |
网络权限
1 | <!-- 用于访问网络,网络定位需要上网 --> |