-
9
-
10
-
11
-
12
4 初始化BombSDK:可以在启动的Activity或者我们的Application 中的onCreate方法中去初始化。
//第一:默认初始化 Bmob.initialize(this, "Your Application ID"); //第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒), //BmobConfig config =new BmobConfig.Builder(this) 设置appkey //.setApplicationId("Your Application ID") 请求超时时间(单位为秒):默认15s //.setConnectTimeout(30) 文件分片上传时每片的大小(单位字节),默认512*1024 //.setUploadBlockSize(1024*1024) 文件的过期时间(单位为秒):默认1800s //.setFileExpiration(2500) //.build(); //Bmob.initialize(config);
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
5 上面4中初始化需要的applicationid所在的位置:
===============================================================================
用户管理
用户是一个应用程序的核心。对于个人开发者来说,自己的应用程序积累到越多的用户,就会给自己带来越强的创作动力。因此Bmob提供了一个专门的用户类——BmobUser来自动处理用户账户管理所需的功能。
有了这个类,你就可以在你的应用程序中添加用户账户功能。
BmobUser是BmobObject的一个子类,它继承了BmobObject所有的方法,具有BmobObject相同的功能。不同的是,BmobUser增加了一些特定的关于用户账户管理相关的功能。
属性
BmobUser除了从BmobObject继承的属性外,还有几个特定的属性:
username: 用户的用户名(必需)。
password: 用户的密码(必需)。
email: 用户的电子邮件地址(可选)。
emailVerified:邮箱认证状态(可选)。
mobilePhoneNumber:手机号码(可选)。
mobilePhoneNumberVerified:手机号码的认证状态(可选)。
扩展用户类
很多时候,你的用户表还会有很多其他字段,如性别、年龄、头像等。那么,你需要对BmobUser类进行扩展,添加一些新的属性。我们新建一个继承于BombUser类的bean,然后添加新的属性就行。
- 我们现在系统生成的user表中创建一个用户:
或者我们通过代码来实现注册功能:
BmobUser bu = new BmobUser(); bu.setUsername("sendi"); bu.setPassword("123456"); bu.setEmail("sendi@163.com"); //注意:不能用save方法进行注册 bu.signUp(new SaveListener<UserBean>() { @Override public void done(UserBean s, BmobException e) { if(e==null){ toast("注册成功:" +s.toString()); }else{ loge(e); } } });
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
2 然后我们通过下列方法来登录试试:
BmobUser bu = new BmobUser(); bu.setUsername(username); bu.setPassword(password); bu.login(new SaveListener<BmobUser>() { @Override public void done(BmobUser bmobUser, BmobException e) { if(e==null){ // toast("登录成功:"); showToast("登录成功"); //通过BmobUser user = BmobUser.getCurrentUser()获取登录成功后的本地用户信息 //如果是自定义用户对象MyUser,可通过MyUser user = BmobUser.getCurrentUser(MyUser.class)获取自定义用户信息 }else{ showToast(e.toString()); } } });
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
或者用:
//UserBean是需要继承bombsdk中的BmobUser类的。 BmobUser.loginByAccount(username, password, new LogInListener<UserBean>() { @Override public void done(UserBean userBean, BmobException e) { if (userBean!=null){ //登录成功 doSomething }else { //登录失败 } } });
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
如果用户在每次打开你的应用程序时都要登录,这将会直接影响到你应用的用户体验。为了避免这种情况,你可以使用缓存的CurrentUser对象。缓存的用户有效期为1年。
每当你应用的用户注册成功或是第一次登录成功,都会在本地磁盘中有一个缓存的用户对象,这样,你可以通过获取这个缓存的用户对象来进行登录:
BmobUser bmobUser = BmobUser.getCurrentUser(); if(bmobUser != null){ // 允许用户使用应用 }else{ //缓存用户对象为空时, 可打开用户注册界面… }
-
1
-
2
-
3
-
4
-
5
-
6
在扩展了用户类的情况下获取当前登录用户,可以使用如下的示例代码(MyUser类可参看上面):
UserBean userInfo = BmobUser.getCurrentUser(UserBean .class);
- 1
获取userbean中的某个字段的内容:
//BmobUser中的特定属性 String username = (String) userInfo .getObjectByKey("username"); //MyUser中的扩展属性 Integer age = (Integer) userInfo .getObjectByKey("age"); Boolean sex = (Boolean) userInfo .getObjectByKey("sex");
-
1
-
2
-
3
-
4
-
5
3 我们根据条件查询一个人的信息:
这是我们用用户名,手机号码,邮箱 共同来验证,匹配此内容的用户会返回,不匹配返回的List的size 为0 , 出错了会有e的返回。
BmobQuery<UserBean> query = new BmobQuery<>(); query.addWhereEqualTo("username", username).addWhereEqualTo("mobilePhoneNumber", tel).addWhereEqualTo("email", email); query.findObjects(new FindListener<UserBean>() { @Override public void done(List<UserBean> object, BmobException e) { if (e == null) { // toast("查询用户成功:"+object.size()); listener.onSuccess(); } else { // toast("更新用户信息失败:" + e.getMessage()); listener.onFailed(e.getErrorCode()); } } });
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
我们试着查询了一条信息,发现返回的信息就是我们注册的信息,只是不会给我们返回密码(password)的那个字段的值。
我们本来是想着根据几个信息查询出用户的所有信息,然后我们从里面取出来旧密码,然后就可以调用SDK的方法去修改密码来实现用户忘记密码的事件。但是发现行不通了。
通过旧密码来修改密码的方法为:
BmobUser.updateCurrentUserPassword("旧密码", "新密码", new UpdateListener() { @Override public void done(BmobException e) { if(e==null){ toast("密码修改成功,可以用新密码进行登录啦"); }else{ toast("失败:" + e.getMessage()); } } });
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
所以只能暂时改为 短信通知管理员 去在后台更改密码了。流程还是先根据条件去查询,查询成功后,让其输入一个新密码,然后弹出对话框询问是否将此内容发送给管理员,让其去帮助修改密码,修改成功后会有短信回复来通知用户。
4 退出登录
BmobUser.logOut(); //清除缓存用户对象 BmobUser currentUser = BmobUser.getCurrentUser(); // 现在的currentUser是null了
-
1
-
2
====================================================================
我们要实现一个指南针的功能。而这种。利用手机的Sensor就可以简单的实现了。
-
我们先在布局中放置一张图片:
-
布局代码为:
<TextView android:id="@+id/tvCompass" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_margin="10dp" android:background="@mipmap/comp" />
- 获取手机的Sensor 并且实现对应的监听
//方向传感器的使用。指北针 SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); Sensor mMagneticField = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mMagneticField, SensorManager.SENSOR_DELAY_NORMAL);
-
1
-
2
-
3
-
4
-
5
-
6
并且我们的Activity要 implements SensorEventListener
4 在 onSensorChanged 方法处理改变了的Sensor内容。
5 设置动画旋转图片。
=======================================================================
-
http://lbs.amap.com/ 高德LBS官网。
-
然后去创建一个号,然后登录。
-
点击头像旁边的控制台进入后台管理
-
进入后台管理之后,然后点击右上角创建新应用
-
弹出
-
上面的随便填。然后点击创建。
-
创建成功后就有了我们刚才创建的一条信息,最后面有个“添加新key”,点之。
-
弹出
填写弹出框中的内容,然后勾选同意条款,然后点“提交”,就可以了。
- 这就是我们创建成功之后的key
- 至此,我们创建这一步就完成了。至于如何获取sha1,点吧
-
在AS里面调整项目到project文件形式
- 将我们下载的sdk复制到 app下的lib文件夹中
-
然后右键上图的sdk,选择Add as library 选项。然后会出来如上图示的可以展开的小三角箭头。
-
添加我们下载的so文件到我们的项目中,复制粘贴呗,如果项目中没有jniLibs文件夹,我们需要先自己创建。然后将我们下载的so全部复制进去
- 配置key:
<application android:icon="@drawable/icon" android:label="@string/app_name" > <meta-data android:name="com.amap.api.v2.apikey" android:value="请输入您的用户Key"/> …… </application>
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
7 需要的权限:
//地图包、搜索包需要的基础权限 <!--允许程序打开网络套接字--> <uses-permission android:name="android.permission.INTERNET" /> <!--允许程序设置内置sd卡的写权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--允许程序获取网络状态--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--允许程序访问WiFi网络信息--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--允许程序读写手机状态和身份--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--允许程序访问CellID或WiFi热点来获取粗略的位置--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-
1
-
2
-
3
-
4
-
5
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/31321121ddaafb7bf24fa4c8d4fc79ab.jpeg)
题外话
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊
这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
欢迎评论区讨论。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
存中…(img-oomwOWDk-1712254136212)]
[外链图片转存中…(img-iiFIKmXp-1712254136213)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/31321121ddaafb7bf24fa4c8d4fc79ab.jpeg)
题外话
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊
这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~
[外链图片转存中…(img-au90LCMf-1712254136213)]
欢迎评论区讨论。