Bmob移动后端云服务平台--Android从零開始--(二)android高速入门

上一篇博文我们简介何为Bmob移动后端服务平台,以及其相关功能和优势。

本文将利用Bmob高速实现简单样例,进一步了解它的强大之处。

一、准备工作

1.注冊Bmob账号

在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后。点击右上角的“注冊”,在跳转页面填入你的姓名、邮箱、设置password,确认后到你的邮箱激活Bmob账户。你就能够用Bmob轻松开发应用了。

2.站点后台创建应用

登录账号进入bmob后台后,点击后台界面左上角“创建应用”。在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。

3.获取应用密钥和下载SDK

选择你要开发的应用,点击该应用下方相应的“应用密钥”

在跳转页面。获取Application
ID,此ID将会在初始化SDK中使用到。

获取Application
ID后。下载SDK。开发人员能够依据自己的需求选择对应的iOS SDK 或Android SDK,点击下载就可以。

二、代码实现

需求:本实例简单的实现用户利用username和password进行注冊。

注冊成功后。利用注冊的数据,进行登陆,操作成功后给出对应的提示。

代码实现步骤:

1>
引入BmobSDK 架包

将下载的BmobSDK中包括例如以下的架包引入到Android应用

2> 在清单文件里加入例如以下的权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>

3> 初始化BmobSDK

在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。

代码例如以下所看到的:

   @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 初始化 Bmob SDK
// 使用时请将第二个參数Application ID替换成你在Bmobserver端创建的Application ID
Bmob.initialize(this, "Your Application ID");
}

4>创建继承于BmobObject的实体UserBean

package com.example.bmobdemo.bean;

import cn.bmob.v3.BmobObject;

/**
*
*
* 项目名称:BmobDemo
* 类名称:UserBean
* 类描写叙述: 继承BmobObject的用户实体类
* 创建时间:2014年12月18日 下午10:25:40
* 改动人:Administrator
* 改动时间:2014年12月18日 下午10:25:40
* 改动备注:
* @version
*
*/
public class UserBean extends BmobObject{
/**
*
*/
private static final long serialVersionUID = 1L;
private String loginId;
private String userName;
private String password;
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserBean [loginId=" + loginId + ", userName=" + userName
+ ", password=" + password + "]";
} }

4>案例效果

Bmob平台server数据

5>相关的布局文件和清单文件

1.清单文件,AndroidManifest.xml

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?

>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bmobdemo"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.bmobdemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest></span>

2.主布局文件,activity_main.xml

本实例须要一个username的EditText和password的EditText,以及注冊和登陆的Button。

<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="username:"
android:textColor="#FF0000" /> <EditText
android:id="@+id/id_login_name_et"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="密码:"
android:textColor="#FF0000" /> <EditText
android:id="@+id/id_password_et"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout> <Button
android:id="@+id/id_register_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="注冊"
android:textColor="#0000FF" /> <Button
android:id="@+id/id_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登陆"
android:textColor="#0000FF" /> </LinearLayout></span>

5>java实现代码

1.主界面代码MainActivity.java

package com.example.bmobdemo;

import java.util.List;

import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.SaveListener; import com.example.bmobdemo.bean.UserBean;
import com.example.bmobdemo.util.ToastUtils; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText; public class MainActivity extends Activity implements OnClickListener { // Bmob应用创建建时获取的Application id,依据自己创建的应用来写入
private static final String BMOB_APPLICATION_ID = "be783fdda4eac8a781a9f80596e98fe0";
private Button registerBtn, loginBtn;
private EditText loginEt, passwordEt; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); /**
* 初始化BmobSDK
*/
Bmob.initialize(this, BMOB_APPLICATION_ID);
initView();
} /**
*
* 初始化控件
*/
private void initView() {
registerBtn = (Button) this.findViewById(R.id.id_register_btn);
loginBtn = (Button) this.findViewById(R.id.id_login_btn);
loginEt = (EditText) this.findViewById(R.id.id_login_name_et);
passwordEt = (EditText) this.findViewById(R.id.id_password_et); registerBtn.setOnClickListener(this);
loginBtn.setOnClickListener(this); } /**
* 注冊
*/
private void register() {
String loginId = loginEt.getText().toString();
String password = passwordEt.getText().toString();
if (loginId.isEmpty() || password.isEmpty()) {
ToastUtils.toast(this, "密码或账号不为空!");
return;
} final UserBean userBean = new UserBean();
userBean.setLoginId(loginId);
userBean.setPassword(password);
userBean.setUserName("Bmob");
/**
* 保存数据到Bmobserver
*/
userBean.save(this, new SaveListener() { @Override
public void onSuccess() {
ToastUtils.toast(MainActivity.this, userBean.toString()
+ " 注冊成功");
} @Override
public void onFailure(int arg0, String arg1) {
ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 注冊失败");
}
}); } /**
* 登陆
*/
private void login() {
String loginId = loginEt.getText().toString();
String password = passwordEt.getText().toString();
if (loginId.isEmpty() || password.isEmpty()) {
ToastUtils.toast(this, "密码或账号不为空!");
return;
} BmobQuery<UserBean> userQuery = new BmobQuery<UserBean>(); // 查询条件
userQuery.addWhereEqualTo("loginId", loginId);
userQuery.addWhereEqualTo("password", password); userQuery.findObjects(this, new FindListener<UserBean>() { @Override
public void onError(int arg0, String arg1) {
ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 登陆失败");
} @Override
public void onSuccess(List<UserBean> userList) {
if (userList != null && userList.size() > 0)
ToastUtils.toast(MainActivity.this, " 登陆成功");
else {
ToastUtils.toast(MainActivity.this, " 登陆失败");
}
}
});
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_register_btn:
register();
break;
case R.id.id_login_btn:
login();
break;
}
} }

2.实体类UserBean

package com.example.bmobdemo.bean;

import cn.bmob.v3.BmobObject;

/**
*
*
* 项目名称:BmobDemo
* 类名称:UserBean
* 类描写叙述: 继承BmobObject的用户实体类
* 创建时间:2014年12月18日 下午10:25:40
* 改动人:Administrator
* 改动时间:2014年12月18日 下午10:25:40
* 改动备注:
* @version
*
*/
public class UserBean extends BmobObject{
/**
*
*/
private static final long serialVersionUID = 1L;
private String loginId;
private String userName;
private String password;
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserBean [loginId=" + loginId + ", userName=" + userName
+ ", password=" + password + "]";
} }

3.工具类ToastUtils.java

package com.example.bmobdemo.util;

import android.content.Context;
import android.widget.Toast; /**
* Toast提示工具类
* createdTime: 2014年12月18日 下午10:55:21
*
*/
public class ToastUtils { public static void toast(Context context,String msg){
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
} public static void toast(Context context,int msgId){
Toast.makeText(context, msgId, Toast.LENGTH_SHORT).show();
} }

源代码路径:http://download.csdn.net/detail/a123demi/8283761

Bmob移动后端云服务平台--Android从零開始--(二)android高速入门的更多相关文章

  1. Bmob移动后端云服务平台--Android从零開始--(一)何为Bmob

    Bmob移动后端云服务平台--Android从零開始--(一)何为Bmob 在正式的项目开发中,单client不能满足我们的需求,须要实现client与服务端的连接. 而在编写Android服务端代码 ...

  2. Bmob—移动后端云服务平台

    对于个人或者小团队来说,开发一个有网络功能的游戏是一件不容易的事情,必须掌握一门诸如Java/.net/php这类的服务器开发语言. Bmob云服务方便了开发者.Bmob可以给应用软件快速添加一个安全 ...

  3. Bmob 移动后端云服务器平台实现登录注册

    源码下载:http://download.csdn.net/download/jjhahage/10034519 PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己 ...

  4. 从零開始开发Android版2048 (四) 分数、重置、结束

    这一篇的内容主要是在上一篇的基础上,增加分数计算(包含当前分数和最高分数).游戏结束的推断以及游戏界面的重置这三个部分的功能. 一.分数的计算和保存          首先,2048这个游戏的分数包含 ...

  5. 从零開始开发Android版2048 (一)初始化界面

    自学Android一个月多了,一直在工作之余零零散散地看一些东西.感觉经常使用的东西都有些了解了,可是一開始写代码总会出各种奇葩的问题.感觉还是代码写得太少.这样继续杂乱地学习下去进度也太慢了,并且学 ...

  6. 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

    RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...

  7. 从零開始学android&lt;SeekBar滑动组件.二十二.&gt;

    拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object    ↳ an ...

  8. 从零開始学android&lt;ImageSwitcher图片切换组件.二十六.&gt;

    ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够 ...

  9. 从零開始学android&lt;数据存储(1)SharedPreferences属性文件.三十五.&gt;

    在android中有五种保存数据的方法.各自是: Shared Preferences Store private primitive data in key-value pairs. 相应属性的键值 ...

随机推荐

  1. SharePoint 2013 开启訪问请求

    1.通常,我们进入SharePoint 2013网站,假设没权限会提示该网站未被共享,而没有切换账号或者申请訪问,实在是非常流氓:事实上,SharePoint为我们提供了訪问请求页面.可是可能须要手动 ...

  2. kentico中提示Message: An invalid SQL query was used.

    在调用CMSAbstractWebPart类的GetValue方法的时候出错. namespace CMS.PortalEngine.Web.UI{ /// <summary> /// B ...

  3. Statspack的使用

    Statspack是Oracle 8i以上提供的一个非常好的性能监控与诊断工具,基本上全部包含了BSTAT/ESTAT的功能,更多的信息可以参考附带文档$ORACLE_HOME/rdbms/admin ...

  4. Oracle 优化和性能调整

    分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:  数据库用户响应时间=系统服务时间+用户等待时间  因此 ...

  5. [jzoj 6080] [GDOI2019模拟2019.3.23] IOer 解题报告 (数学构造)

    题目链接: https://jzoj.net/senior/#main/show/6080 题目: 题意: 给定$n,m,u,v$ 设$t_i=ui+v$ 求$\sum_{k_1+k_2+...+k_ ...

  6. 什么是BOM头(字节顺序标记(ByteOrderMark))

    在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑ut ...

  7. SQL语句之transaction

    http://blog.csdn.net/xbc1213/article/details/50169935 案例: begin tran --定义一个存储错误新的变量 执行一条语句 set @sumE ...

  8. 实现两个jQuery的API(addClass、text)

    目的 给所有的div添加一个叫“red”的class,为方便看到代码的效果,设置如下css,在设置“red”成功时,文本会变红 .red{ color:red; } 将所有的div中的textCont ...

  9. 理解z-index和css中的层叠顺序问题(大神技术博的读后感?)

    一直对 z-index不太理解,今天看到了大神的博客...http://www.zhangxinxu.com/wordpress/tag/z-index/ 1.层叠上下文:是一个名词!是一个性质!此时 ...

  10. 关于数据未渲染完,要获取document高度问题——ajax全局事件

    昨天在做开发时,遇到这样一个问题,当页面刚加载的时候,就要获取document的高度,可是此时页面上所有的ajax请求的数据都还没有渲染到页面上,所以导致得到的document的高度仅仅是页面结构的高 ...