Bomb云demo

  • 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就可以简单的实现了。

  1. 我们先在布局中放置一张图片:这里写图片描述

  2. 布局代码为:

<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" />

  1. 获取手机的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 设置动画旋转图片。

6 [指南针完整的代码下载地址点我](()

[](()高德地图的使用

=======================================================================

[](()高德控制台创建项目


  1. [http://lbs.amap.com/](() 高德LBS官网。

  2. 然后去创建一个号,然后登录。

  3. 点击头像旁边的控制台进入后台管理

  4. 进入后台管理之后,然后点击右上角创建新应用

  5. 弹出

这里写图片描述

  1. 上面的随便填。然后点击创建。

  2. 创建成功后就有了我们刚才创建的一条信息,最后面有个“添加新key”,点之。

  3. 弹出

这里写图片描述填写弹出框中的内容,然后勾选同意条款,然后点“提交”,就可以了。

  1. 这就是我们创建成功之后的key

这里写图片描述

  1. 至此,我们创建这一步就完成了。至于[如何获取sha1,点吧](()

[](()集成高德到项目中


  1. [从这里去下载sdk](()

  2. 在AS里面调整项目到project文件形式

这里写图片描述

  1. 将我们下载的sdk复制到 app下的lib文件夹中

这里写图片描述

  1. 然后右键上图的sdk,选择Add as library 选项。然后会出来如上图示的可以展开的小三角箭头。

  2. 添加我们下载的so文件到我们的项目中,复制粘贴呗,如果项目中没有jniLibs文件夹,我们需要先自己创建。然后将我们下载的so全部复制进去

这里写图片描述

  1. 配置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

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

[](()简单使用


  1. 再我们的布局中添加地图控件:

<com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" />

  • 1

  • 2

  • 3

  • 4

  1. 在Activity中:

//声明 MapView mMapView = null; AMap aMap; //在onCreate方法中 mMapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mMapView.getMap(); } initView(); //initView方法 MyLocationStyle myLocationStyle; myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类 myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);//定位一次、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。 myLocationStyle.interval(20 **《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】** 00); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。 myLocationStyle.radiusFillColor(R.color.colorAccent); aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。 aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 // 其他的生命周期方法 @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制 mMapView.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态 mMapView.onSaveInstanceState(outState); }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值