使用Bmob提供的API進(jìn)行實(shí)戰(zhàn)開(kāi)發(fā),Bmob的簡(jiǎn)介:Bmob平臺(tái)為移動(dòng)應(yīng)用提供了一個(gè)完整的后端解決方案,提供輕量級(jí)的SDK開(kāi)發(fā)包,讓開(kāi)發(fā)者以最小的配置和最簡(jiǎn)單的方式使用Bmob平臺(tái)提供的服務(wù),進(jìn)而完全消除開(kāi)發(fā)者編寫(xiě)服務(wù)器代碼以及維護(hù)服務(wù)器的操作。也就是說(shuō),移動(dòng)開(kāi)發(fā)者不用自己開(kāi)發(fā)服務(wù)器端,完全可以借助Bmob提供的API構(gòu)建一個(gè)服務(wù)器端,實(shí)現(xiàn)移動(dòng)端和服務(wù)器端的交互,屬于云服務(wù)的范疇。
Bmob提供開(kāi)發(fā)API文檔地址為:http://docs.bmob.cn/android/developdoc/index.html?menukey=develop_doc&key=develop_android,讀者也可以百度Bmob,進(jìn)行API的學(xué)習(xí)。本節(jié)將講解其最基本的API和方法。
注冊(cè)Bmob會(huì)員,然后在Bmob官網(wǎng)上下載SDK,然后將jar包拷入工程內(nèi)。
在Bmob網(wǎng)站上創(chuàng)建應(yīng)用,獲取應(yīng)用key,這個(gè)key必須引入到Android項(xiàng)目中。如下圖:
1.main.xml:
<RelativeLayout 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" >
<TableLayout
android:id="@+id/tl"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TableRow>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用戶名:" />
<EditText
android:id="@+id/et_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="50dp"
android:text="" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼:" />
<EditText
android:id="@+id/et_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="50dp"
android:text="" />
</TableRow>
</TableLayout>
<Button
android:id="@+id/register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tl"
android:onClick="submit"
android:text="注冊(cè)" />
</RelativeLayout>
采用了簡(jiǎn)單的表格布局,包括兩個(gè)EditText用于記錄輸入的用戶名和密碼,一個(gè)Button注冊(cè)按鈕。
2.MainActivity.java:
package com.example.logintest;
//省略導(dǎo)入包
public class MainActivity extends Activity {
private EditText mUserName,mPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bmob.initialize(this, "8f3ffb2658d8a3366a70a0b0ca0b71b2");//初始化,第二項(xiàng)為官網(wǎng)創(chuàng)建應(yīng)用的key.
mUserName=(EditText) findViewById(R.id.et_username);
mPassword=(EditText) findViewById(R.id.et_password);
}
public void submit(View view){//點(diǎn)擊事件
String username=mUserName.getText().toString();
String password=mPassword.getText().toString();
if(username.equals("")||password.equals("")){
Toast.makeText(this, "用戶名或密碼不能為空!", 3).show();
}else{
User user=new User();
user.setUserName(username);
user.setUserPassword(password);
user.save(MainActivity.this,new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "注冊(cè)成功!", 3).show();
}
@Override
public void onFailure(int arg0, String arg1) {
Toast.makeText(MainActivity.this, "注冊(cè)失??!", 3).show();
}
});
}
}
}
onCreate方法中的 Bmob.initialize(this, "8f3ffb2658d8a3366a70a0b0ca0b71b2");引入了在Bmob官網(wǎng)上創(chuàng)建應(yīng)用時(shí)獲得的key,調(diào)用了Bmob提供的save方法,實(shí)現(xiàn)數(shù)據(jù)的后臺(tái)存儲(chǔ)。不熟悉的同學(xué)可以參考Bmob提供的API文檔。
3.配置權(quán)限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.logintest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<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" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.logintest.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>
主要涉及了一些權(quán)限的配置,包括網(wǎng)絡(luò)權(quán)限、WIFI和網(wǎng)絡(luò)狀態(tài)權(quán)限、寫(xiě)和讀取日志的權(quán)限。
4.javabean.java:
package com.example.logintest;
import cn.bmob.v3.BmobObject;
public class User extends BmobObject {
private String userPassword;
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
private String userName;
}
Bmob數(shù)據(jù)交互都是以對(duì)象為基礎(chǔ)的,因此要對(duì)對(duì)象進(jìn)行封裝,以便更好的進(jìn)行操作。
運(yùn)行實(shí)例:
我們看一下Bmob官網(wǎng)的數(shù)據(jù)瀏覽,可以發(fā)現(xiàn)多了一個(gè)User表格,里面有兩條注冊(cè)數(shù)據(jù),注冊(cè)成功啦!
本節(jié)結(jié)合Bmob提供的后臺(tái)云,實(shí)現(xiàn)了網(wǎng)絡(luò)交互,使我們開(kāi)發(fā)的Android應(yīng)用跳脫了單機(jī)的限制,任何能聯(lián)網(wǎng)的人都可以使用我們的應(yīng)用。這里僅是拋磚引玉,Bmob提供了各種各樣豐富的API供我們調(diào)用,發(fā)揮你的想象,可以做出一款非常實(shí)用和漂亮的APP,不妨發(fā)布到應(yīng)用市場(chǎng)中去。