精华内容
下载资源
问答
  • Bmob移动后端云服务平台--Android从零开始--(二)android快速入门 上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势。本文将利用Bmob快速实现简单例子,进一步了解它的强大之处。 一、...

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

    上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势。本文将利用Bmob快速实现简单例子,进一步了解它的强大之处。

    一、准备工作

    1.注册Bmob账号

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


    2.网站后台创建应用

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


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

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


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


    获取Application ID后,下载SDK,开发者可以根据自己的需求选择相应的iOS SDK 或Android SDK,点击下载即可。



    二、代码实现

    需求:本实例简单的实现用户利用用户名和密码进行注册。注册成功后,利用注册的数据,进行登陆,操作成功后给出相应的提示。

    代码实现步骤:

    1> 引入BmobSDK 架包

    将下载的BmobSDK中包含如下的架包引入到Android应用


    2> 在清单文件中添加如下的权限

    [html] view plain copy
    1. <uses-permission android:name="android.permission.INTERNET"/>  
    2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
    3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
    4. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
    5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
    6. <uses-permission android:name="android.permission.READ_LOGS"/>  
    3> 初始化BmobSDK

    在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。代码如下所示:

    [html] view plain copy
    1. @Override  
    2.  protected void onCreate(Bundle savedInstanceState) {  
    3.       // TODO Auto-generated method stub  
    4.      super.onCreate(savedInstanceState);  
    5.       // 初始化 Bmob SDK  
    6.      // 使用时请将第二个参数Application ID替换成你在Bmob服务器端创建的Application ID  
    7.      Bmob.initialize(this, "Your Application ID");  
    8.  }  
    4>创建继承于BmobObject的实体UserBean

    [html] view plain copy
    1. package com.example.bmobdemo.bean;  
    2.   
    3. import cn.bmob.v3.BmobObject;  
    4.   
    5. /**  
    6.  *    
    7.  *       
    8.  * 项目名称:BmobDemo      
    9.  * 类名称:UserBean      
    10.  * 类描述:    继承BmobObject的用户实体类  
    11.  * 创建时间:2014年12月18日 下午10:25:40      
    12.  * 修改人:Administrator      
    13.  * 修改时间:2014年12月18日 下午10:25:40      
    14.  * 修改备注:      
    15.  * @version       
    16.  *  
    17.  */  
    18. public class UserBean extends BmobObject{  
    19.     /**  
    20.      *   
    21.      */  
    22.     private static final long serialVersionUID = 1L;  
    23.     private String loginId;  
    24.     private String userName;  
    25.     private String password;  
    26.     public String getLoginId() {  
    27.         return loginId;  
    28.     }  
    29.     public void setLoginId(String loginId) {  
    30.         this.loginId = loginId;  
    31.     }  
    32.     public String getUserName() {  
    33.         return userName;  
    34.     }  
    35.     public void setUserName(String userName) {  
    36.         this.userName = userName;  
    37.     }  
    38.     public String getPassword() {  
    39.         return password;  
    40.     }  
    41.     public void setPassword(String password) {  
    42.         this.password = password;  
    43.     }  
    44.     @Override  
    45.     public String toString() {  
    46.         return "UserBean [loginId=" + loginId + "userName=" + userName  
    47.                 + ", password=" + password + "]";  
    48.     }  
    49.       
    50.       
    51.       
    52. }  

    4>案例效果


    Bmob平台服务器数据


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

    1.清单文件,AndroidManifest.xml

    [html] view plain copy
    1. <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     package="com.example.bmobdemo"  
    4.     android:versionCode="1"  
    5.     android:versionName="1.0" >  
    6.   
    7.     <uses-sdk  
    8.         android:minSdkVersion="17"  
    9.         android:targetSdkVersion="19" />  
    10.   
    11.     <uses-permission android:name="android.permission.INTERNET" />  
    12.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    13.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
    14.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
    15.     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
    16.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
    17.     <uses-permission android:name="android.permission.READ_LOGS" />  
    18.   
    19.     <application  
    20.         android:allowBackup="true"  
    21.         android:icon="@drawable/ic_launcher"  
    22.         android:label="@string/app_name"  
    23.         android:theme="@style/AppTheme" >  
    24.         <activity  
    25.             android:name="com.example.bmobdemo.MainActivity"  
    26.             android:label="@string/app_name" >  
    27.             <intent-filter>  
    28.                 <action android:name="android.intent.action.MAIN" />  
    29.   
    30.                 <category android:name="android.intent.category.LAUNCHER" />  
    31.             </intent-filter>  
    32.         </activity>  
    33.     </application>  
    34.   
    35. </manifest></span>  

    2.主布局文件,activity_main.xml

    本实例需要一个用户名的EditText和密码的EditText,以及注册和登陆的Button。

    [html] view plain copy
    1. <span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     xmlns:tools="http://schemas.android.com/tools"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:orientation="vertical" >  
    6.   
    7.     <LinearLayout  
    8.         android:layout_width="match_parent"  
    9.         android:layout_height="wrap_content"  
    10.         android:layout_marginBottom="20dp"  
    11.         android:orientation="horizontal" >  
    12.   
    13.         <TextView  
    14.             android:layout_width="wrap_content"  
    15.             android:layout_height="wrap_content"  
    16.             android:layout_marginRight="10dp"  
    17.             android:text="用户名:"  
    18.             android:textColor="#FF0000" />  
    19.   
    20.         <EditText  
    21.             android:id="@+id/id_login_name_et"  
    22.             android:layout_width="match_parent"  
    23.             android:layout_height="wrap_content" />  
    24.     </LinearLayout>  
    25.   
    26.     <LinearLayout  
    27.         android:layout_width="match_parent"  
    28.         android:layout_height="wrap_content"  
    29.         android:layout_marginBottom="20dp"  
    30.         android:orientation="horizontal" >  
    31.   
    32.         <TextView  
    33.             android:layout_width="wrap_content"  
    34.             android:layout_height="wrap_content"  
    35.             android:layout_marginRight="10dp"  
    36.             android:text="密码:"  
    37.             android:textColor="#FF0000" />  
    38.   
    39.         <EditText  
    40.             android:id="@+id/id_password_et"  
    41.             android:layout_width="match_parent"  
    42.             android:layout_height="wrap_content" />  
    43.     </LinearLayout>  
    44.   
    45.     <Button  
    46.         android:id="@+id/id_register_btn"  
    47.         android:layout_width="match_parent"  
    48.         android:layout_height="wrap_content"  
    49.         android:layout_marginBottom="10dp"  
    50.         android:text="注册"  
    51.         android:textColor="#0000FF" />  
    52.   
    53.     <Button  
    54.         android:id="@+id/id_login_btn"  
    55.         android:layout_width="match_parent"  
    56.         android:layout_height="wrap_content"  
    57.         android:text="登陆"  
    58.         android:textColor="#0000FF" />  
    59.   
    60. </LinearLayout></span>  


    5>java实现代码

    1.主界面代码MainActivity.java

    [html] view plain copy
    1. package com.example.bmobdemo;  
    2.   
    3. import java.util.List;  
    4.   
    5. import cn.bmob.v3.Bmob;  
    6. import cn.bmob.v3.BmobQuery;  
    7. import cn.bmob.v3.listener.FindListener;  
    8. import cn.bmob.v3.listener.SaveListener;  
    9.   
    10. import com.example.bmobdemo.bean.UserBean;  
    11. import com.example.bmobdemo.util.ToastUtils;  
    12.   
    13. import android.app.Activity;  
    14. import android.os.Bundle;  
    15. import android.view.View;  
    16. import android.view.View.OnClickListener;  
    17. import android.widget.Button;  
    18. import android.widget.EditText;  
    19.   
    20. public class MainActivity extends Activity implements OnClickListener {  
    21.   
    22.     // Bmob应用创建建时获取的Application id,根据自己创建的应用来写入  
    23.     private static final String BMOB_APPLICATION_ID = "be783fdda4eac8a781a9f80596e98fe0";  
    24.     private Button registerBtn, loginBtn;  
    25.     private EditText loginEt, passwordEt;  
    26.   
    27.     @Override  
    28.     protected void onCreate(Bundle savedInstanceState) {  
    29.         super.onCreate(savedInstanceState);  
    30.         setContentView(R.layout.activity_main);  
    31.   
    32.         /**  
    33.          * 初始化BmobSDK  
    34.          */  
    35.         Bmob.initialize(this, BMOB_APPLICATION_ID);  
    36.         initView();  
    37.     }  
    38.   
    39.     /**  
    40.      *   
    41.      * 初始化控件  
    42.      */  
    43.     private void initView() {  
    44.         registerBtn = (Button) this.findViewById(R.id.id_register_btn);  
    45.         loginBtn = (Button) this.findViewById(R.id.id_login_btn);  
    46.         loginEt = (EditText) this.findViewById(R.id.id_login_name_et);  
    47.         passwordEt = (EditText) this.findViewById(R.id.id_password_et);  
    48.   
    49.         registerBtn.setOnClickListener(this);  
    50.         loginBtn.setOnClickListener(this);  
    51.   
    52.     }  
    53.   
    54.     /**  
    55.      * 注册  
    56.      */  
    57.     private void register() {  
    58.         String loginId = loginEt.getText().toString();  
    59.         String password = passwordEt.getText().toString();  
    60.         if (loginId.isEmpty() || password.isEmpty()) {  
    61.             ToastUtils.toast(this, "密码或账号不为空!");  
    62.             return;  
    63.         }  
    64.   
    65.         final UserBean userBean = new UserBean();  
    66.         userBean.setLoginId(loginId);  
    67.         userBean.setPassword(password);  
    68.         userBean.setUserName("Bmob");  
    69.         /**  
    70.          * 保存数据到Bmob服务器  
    71.          */  
    72.         userBean.save(this, new SaveListener() {  
    73.   
    74.             @Override  
    75.             public void onSuccess() {  
    76.                 ToastUtils.toast(MainActivity.this, userBean.toString()  
    77.                         + " 注册成功");  
    78.             }  
    79.   
    80.             @Override  
    81.             public void onFailure(int arg0, String arg1) {  
    82.                 ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 注册失败");  
    83.             }  
    84.         });  
    85.   
    86.     }  
    87.   
    88.     /**  
    89.      * 登陆  
    90.      */  
    91.     private void login() {  
    92.         String loginId = loginEt.getText().toString();  
    93.         String password = passwordEt.getText().toString();  
    94.         if (loginId.isEmpty() || password.isEmpty()) {  
    95.             ToastUtils.toast(this, "密码或账号不为空!");  
    96.             return;  
    97.         }  
    98.   
    99.         BmobQuery<UserBean> userQuery = new BmobQuery<UserBean>();  
    100.   
    101.         // 查询条件  
    102.         userQuery.addWhereEqualTo("loginId", loginId);  
    103.         userQuery.addWhereEqualTo("password", password);  
    104.   
    105.         userQuery.findObjects(this, new FindListener<UserBean>() {  
    106.   
    107.             @Override  
    108.             public void onError(int arg0, String arg1) {  
    109.                 ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 登陆失败");  
    110.             }  
    111.   
    112.             @Override  
    113.             public void onSuccess(List<UserBean> userList) {  
    114.                 if (userList != null && userList.size() > 0)  
    115.                     ToastUtils.toast(MainActivity.this, " 登陆成功");  
    116.                 else {  
    117.                     ToastUtils.toast(MainActivity.this, " 登陆失败");  
    118.                 }  
    119.             }  
    120.         });  
    121.     }  
    122.   
    123.     @Override  
    124.     public void onClick(View v) {  
    125.         switch (v.getId()) {  
    126.         case R.id.id_register_btn:  
    127.             register();  
    128.             break;  
    129.         case R.id.id_login_btn:  
    130.             login();  
    131.             break;  
    132.         }  
    133.     }  
    134.   
    135. }  

    2.实体类UserBean

    [html] view plain copy
    1. package com.example.bmobdemo.bean;  
    2.   
    3. import cn.bmob.v3.BmobObject;  
    4.   
    5. /**  
    6.  *    
    7.  *       
    8.  * 项目名称:BmobDemo      
    9.  * 类名称:UserBean      
    10.  * 类描述:    继承BmobObject的用户实体类  
    11.  * 创建时间:2014年12月18日 下午10:25:40      
    12.  * 修改人:Administrator      
    13.  * 修改时间:2014年12月18日 下午10:25:40      
    14.  * 修改备注:      
    15.  * @version       
    16.  *  
    17.  */  
    18. public class UserBean extends BmobObject{  
    19.     /**  
    20.      *   
    21.      */  
    22.     private static final long serialVersionUID = 1L;  
    23.     private String loginId;  
    24.     private String userName;  
    25.     private String password;  
    26.     public String getLoginId() {  
    27.         return loginId;  
    28.     }  
    29.     public void setLoginId(String loginId) {  
    30.         this.loginId = loginId;  
    31.     }  
    32.     public String getUserName() {  
    33.         return userName;  
    34.     }  
    35.     public void setUserName(String userName) {  
    36.         this.userName = userName;  
    37.     }  
    38.     public String getPassword() {  
    39.         return password;  
    40.     }  
    41.     public void setPassword(String password) {  
    42.         this.password = password;  
    43.     }  
    44.     @Override  
    45.     public String toString() {  
    46.         return "UserBean [loginId=" + loginId + "userName=" + userName  
    47.                 + ", password=" + password + "]";  
    48.     }  
    49.       
    50.       
    51.       
    52. }  

    3.工具类ToastUtils.java

    [html] view plain copy
    1. package com.example.bmobdemo.util;  
    2.   
    3. import android.content.Context;  
    4. import android.widget.Toast;  
    5.   
    6. /**  
    7.  * Toast提示工具类  
    8.  * createdTime: 2014年12月18日 下午10:55:21  
    9.  *  
    10.  */  
    11. public class ToastUtils {  
    12.       
    13.     public static void toast(Context context,String msg){  
    14.         Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
    15.     }  
    16.       
    17.     public static void toast(Context context,int msgId){  
    18.         Toast.makeText(context, msgId, Toast.LENGTH_SHORT).show();  
    19.     }  
    20.       
    21. }  


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


    转载:http://blog.csdn.net/a123demi/article/details/42059621

    展开全文
  • 上一篇我们讲了EasyCVR视频智能分析平台在多网卡环境下使用EHome协议的...分析该抓包结果得知,设备端发送注册消息是成功的,因此排除设备端问题,继续检查平台端问题,因为以前遇到过防火墙开启导致无法注册的情况,

    上一篇我们讲了EasyCVR视频智能分析平台在多网卡环境下使用EHome协议的正确配置,如果有不会接入的伙伴可以对照该文进行配置。

    微信截图_20201027095349.png

    Ehome协议的接入仍有困难的地方,若非仔细排查,很难发现其中的问题。有客户在linux v1.0.37环境下使用ehome协议接入到EasyCVR平台,设备端配置如下,发现无法成功注册。

    37.png

    随后我们在平台端抓取了网络包,如下图:

    38.png

    分析该抓包结果得知,设备端发送注册消息是成功的,因此排除设备端问题,继续检查平台端问题,因为以前遇到过防火墙开启导致无法注册的情况,检查平台端防火墙配置,发现也是未开启状态,没有问题。

    接着检查平台端log,在log中发现异常。

    39.png

    从上可知系统运行时缺少依赖库,导致平台接收到设备发送的注册信息,无法调用依赖库去解析消息,因此平台没有恢复设备端的注册消息,注册失败。

    我们尝试将libiconv2.so拷贝到系统目录下/lib64下,重新运行程序,设备成功上线。

    40.png

    原始的libiconv2.so 在软件可执行程序目录HCAapSDKCom 目录下,修改start.sh启动脚本运行服务时拷贝到对应的目录下。

    41.png

    EasyCVR视频智能分析系统目前可用于人脸识别、车牌识别等分析,已经渗透进交通、金融、园区、能源、商业连锁、司法、军队、海关等领域,在未来的发展中,TSINGSEE青犀视频需要不断解决这些问题并加以完善,如果大家想深入了解EasyCVR,欢迎联系我们获取测试账号进行测试。

    展开全文
  • 文章分析了电力云平台现有架构的特点及不足,提出建立统一的服务间通信机制以及服务注册与发现机制、服务网关等组件,并以此为设计依据提出了基于微服务架构的电力云平台总体设计方案,最后对微服务架构下的电力云平台...
  • 短信验证码发送功能的实现可以通过一些平台来进行实现,这里我也使用过一些发送平台进行了测试:...注册时对中国的一些邮箱很不友好(例如:QQ), 可以使用Google邮箱注册注册。 短信发送时只能发送给已经经过验证...

    短信验证码发送功能的实现可以通过一些平台来进行实现,这里我也使用过一些发送平台进行了测试:
    当然这些平台都只是进行测试,允许免费发送短信的条数都有所限制
    一、Twillo:
    优点:操作简单(傻瓜操作)
    缺点:

    1. twilio是一个国外的平台进入网站费时费力,(毕竟是国外的网站)。
    2. 注册时对中国的一些邮箱很不友好(例如:QQ), 可以使用Google邮箱注册来注册。
    3. 短信发送时只能发送给已经经过验证的手机号。

    二、云通讯:
    优点:稳定,简单;
    缺点:短信发送时只能发送给已经经过验证的手机号。

    三、Kewail:
    优点:可以发送给任何你想发送到的手机号
    下面给出使用python语言编写的基于Kewail的短信验证码发送功能的代码:

    # -*- coding: utf-8 -*-
    
    """
    平台官网:https://www.kewail.com/
    """
    import hashlib
    import requests
    import time
    import random
    import datetime
    import re
    
    
    def sms_send_from_Kewail(name, mobile,):
    
        """
    
        :param name: 标记发送来源的签名
        :param mobile: 接受验证码的手机号
        短信内容格式:【{name}】您的验证码xxxxxx工作人员不会索取,请勿泄漏。
        例如:【中国移动】您的验证码111111工作人员不会索取,请勿泄漏。
        :return:
        """
        # access_key_ID and Secret_access_key get from www.Kewail.com
        access_key_ID = "xxxxx access_key xxxxxx"
        secret_access_key = "xxxxxx secret_access_key xxxxxx"
    
        # 验证码
        sms_code = "{:0>6}".format(random.randint(0, 999999))
    
        # url
        url = "https://live.kewail.com/sms/v1/sendsinglesms?accesskey={0}&random={1}".format(access_key_ID, sms_code)
    
        # 时间戳计算
        dt = str(datetime.datetime.now())
        dt = re.findall(r"(.*?)\.", dt)
        dt = dt[0]
        time_unix = int(time.mktime(time.strptime(dt, "%Y-%m-%d %H:%M:%S")))
    
        # sig拼接
        sig_not_sha = "secretkey={0}&random={1}&time={2}&mobile={3}".format(
            secret_access_key, sms_code, str(time_unix), mobile)
        hash = hashlib.sha256()
        hash.update(sig_not_sha.encode("utf-8"))
        sig = hash.hexdigest()
    
        # json数据
        data = {
            "tel": {
                "nationcode": "86",
                "mobile": mobile
            },
            "type": 0,
            "msg": "【{}】您的验证码{}工作人员不会索取,请勿泄漏。".format(name, sms_code),
            "sig": sig,
            "time": time_unix,
            "extend": "",
            "ext": "",
        }
        f = requests.post(url, json=data)
        print(f.text)
    
    
    name = "测试"
    mobile = "13535353535" 
    sms_send_from_Kewail(name, mobile)
    
    
    
    

    如果还有配置上的问题:可参考官方文档:
    https://www.kewail.com/doc/index.html

    展开全文
  • 1.注册Bmob账号 在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的“注册”,在跳转页面填入你的姓名、邮箱、设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用...

    一、准备工作

    1.注册Bmob账号
    在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的“注册”,在跳转页面填入你的姓名、邮箱、设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用了。
    1
    2.网站后台创建应用
    登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。
    2
    3.获取应用密钥和下载SDK
    选择你要开发的应用,点击该应用下方对应的“应用密钥”
    3
    获取Application ID后,下载SDK,开发者可以根据自己的需求选择相应的iOS SDK 或Android SDK,点击下载即可。4
    不过我一般喜欢在线配置,所以我就没下载这个。

    二、代码实现

    1、在project的grade添加一下语句
    5
    在app的grade条件以下语句
    6
    7
    2、在清单文件中添加如下的权限
    8
    9
    3、初始化BmobSDK
    在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。代码如下所示:
    10
    4、创建继承于BmobObject的实体UserBean

    package com.example.wzh.bmobtest2.bean;
    
    import cn.bmob.v3.BmobObject;
    
    /**
     * Author by wzh,Date on 2019/3/17.
     * PS: Not easy to write code, please indicate.
     * 类描述:    继承BmobObject的用户实体类
     */
    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 + "]";
        }
    }
    

    5、案例效果
    11
    Bmob平台服务器数据
    12
    6、相关的布局文件和清单文件
    1.清单文件,AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.example.wzh.bmobtest2">
    
    
        <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"
            tools:ignore="ProtectedPermissions" />
    
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <provider
                android:name="cn.bmob.v3.util.BmobContentProvider"
                android:authorities="com.example.wzh.bmobtest2.BmobContentProvider">
            </provider>
    
        </application>
    
    </manifest>
    

    2.主布局文件,activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
        <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"
        tools:context=".MainActivity">
    
            <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/et_login_name"
                    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/et_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
            </LinearLayout>
    
            <Button
                android:id="@+id/btn_register"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:text="注册"
                android:textColor="#0000FF" />
    
            <Button
                android:id="@+id/btn_login"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="登陆"
                android:textColor="#0000FF" />
    
    </LinearLayout>
    

    主界面代码MainActivity.java

    package com.example.wzh.bmobtest2;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    import com.example.wzh.bmobtest2.bean.UserBean;
    import com.example.wzh.bmobtest2.util.ToastUtils;
    
    import java.util.List;
    
    import cn.bmob.v3.Bmob;
    import cn.bmob.v3.BmobQuery;
    import cn.bmob.v3.BmobUser;
    import cn.bmob.v3.exception.BmobException;
    import cn.bmob.v3.listener.FindListener;
    import cn.bmob.v3.listener.SaveListener;
    
    import static com.example.wzh.bmobtest2.R.id.btn_register;
    
    public class MainActivity extends Activity implements OnClickListener {
    
        // Bmob应用创建建时获取的Application id,根据自己创建的应用来写入
        private static final String BMOB_APPLICATION_ID = "812b06a63357a00af19cfb0d5afbe1e0";
        Button btn_register, btn_login;
        EditText et_login_name, et_password;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            // 初始化 Bmob SDK
            // 使用时请将第二个参数Application ID替换成你在Bmob服务器端创建的Application ID
            Bmob.initialize(this, BMOB_APPLICATION_ID);
            initView();
        }
    
        /**
         *
         * 初始化控件
         */
        private void initView() {
            btn_register = (Button) this.findViewById(R.id.btn_register);
            btn_login = (Button) this.findViewById(R.id.btn_login);
            et_login_name = (EditText) this.findViewById(R.id.et_login_name);
            et_password = (EditText) this.findViewById(R.id.et_password);
    
            btn_register.setOnClickListener(this);
            btn_login.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_register:
                    register();
                    break;
                case R.id.btn_login:
                    login();
                    break;
            }
        }
    
        private void register() {
    
            String loginId = et_login_name.getText().toString();
            String password = et_password.getText().toString();
            if (loginId.isEmpty() || password.isEmpty()) {
                ToastUtils.toast(this, "密码或账号不为空!");
                return;
            }
    
            final UserBean us = new UserBean();
            us.setLoginId(loginId);
            us.setPassword(password);
            us.setUserName("Bmob");
            /**
             * 保存数据到Bmob服务器
             */
            us.save(new SaveListener<String>() {
                @Override
                public void done(String objectId, BmobException e) {
                    if(e==null){
                        ToastUtils.toast(MainActivity.this, us.toString()
                                + " 注册成功");
                    }else{
                        int arg0 = 0;
                        String arg1 = null;
                        ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 注册失败");
                    }
                }
            });
    
        }
    
    
        private void login() {
    
            String loginId = et_login_name.getText().toString();
            String password = et_password.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(new FindListener<UserBean>() {
    
                @Override
                public void done(List<UserBean> list, BmobException e) {
                    if (list != null && list.size() > 0)
                        ToastUtils.toast(MainActivity.this, " 登陆成功");
                    else {
                        int arg0 = 0;
                        String arg1 = null;
                        ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 登陆失败");
                    }
                }
            });
    
        }
    
    }
    
    

    实体类UserBean

    package com.example.wzh.bmobtest2.bean;
    
    import cn.bmob.v3.BmobObject;
    
    /**
     * Author by wzh,Date on 2019/3/17.
     * PS: Not easy to write code, please indicate.
     * 类描述:    继承BmobObject的用户实体类
     */
    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 + "]";
        }
    }
    
    

    工具类ToastUtils.java

    package com.example.wzh.bmobtest2.util;
    
    import android.content.Context;
    import android.widget.Toast;
    
    /**
     * Author by wzh,Date on 2019/3/17.
     * PS: Not easy to write code, please indicate.
     * Toast提示工具类
     */
    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();
        }
    
    }
    
    
    展开全文
  • 上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势。本文将利用Bmob快速实现简单例子,进一步了解它的强大之处。 一、准备工作 1.注册Bmob账号 在网址栏输入www.bmob.cn或者在百度输入Bmob进行...
  • 在很多情况下,可能受制于场地,或者受制于项目要求,很多项目使用...由于Ehome协议是海康平台的私有协议,因此在多网卡环境下,平台端使用Ehome协议接入EasyCVR中,经常遇到设备无法注册或者无法播放的问题,一般情况
  • 上篇文章简单的利用Bmob实现了用户注册与登录效果(http://blog.csdn.net/a123demi/article/details/42059621)。 在项目中,对数据的操作脱离不了增删改查。Bmob其实也一样,他对数据操作的增删改查做了很好的封装,...
  • 1. 系统架构 ...主要负责应用链注册、审核和冻结。 验证引擎 验证跨链交易的存在性和有效性。 事务管理 负责跨链交易在整个系统处理的一致性。 执行模块 包括跨链交易的合法性检查、验证和路由的工作。 ...
  • 这是国内市场上第一个完全免费的域名注册平台,标志着域名行业或将步入免费时代。 据悉,从5月20日起,企业只要新注册阿里云会员并完成实名认证,均可免费注册一个.com或.xin域名,同时可以免费领取的还有虚拟主机和...
  • 您的程序需要在微赞云服务平台注册你的站点资料, 来接入云平台服务后才能使用相应功能. 此模块已设置版权保护,您只能通过云平台来安装。 此模板已设置版权保护,您只能通过云平台来安装。 1· 打开\framework\...
  • 初探amazon云服务

    2013-02-20 22:46:00
    amazon云平台:http://aws.amazon.com 注册网页:https://portal.aws.amazon.com/gp/aws/developer/registration/index.html 需要信用卡(visa),会有系统回话:当系统说完:报出页面上的PIN码。 会扣除1美金,...
  • 柚果云入门指南快速入门指南注册会员会员登录第三方授权登录子账号登录开始使用柚果云 快速入门指南 ...github登录将不再支持用户授权登录,只在开发者平台开放。 ::: 子账号登录 您可以使用员工账
  • 管家为模型(服务)注册,删除,更新和选择提供了完善的管理。 Converter旨在将模型转换为序列化和优化的格式,以便可以将模型部署到云中。 支持Tensorflow SavedModel , ONNX , TorchScript , TensorRT ...
  • 摘要:医疗信息技术的重要性最近几年得到了戏剧性的...再者,这项研究提出一个统一的安全平台提供给开发者、安全医疗提供者和组织者一个连接框架的渠道去检索和管理医疗记录,以及提供给大量注册者个人一个连接通道到自
  • 两者相互之间的主要业务包括注册认证、可信度量、可信信息验证、白名单发布、审计日志传输等流程: step1. 跨链治理区块链可信节点终端自动跟踪记录主机启动过的进程、正在使用的活动进程,并且能够通过可信验证功能
  •  第一个是关于bmob传输数据的,首先我们在官网http://www.bmob.cn/上面注册我们自己的账号,在这里笔者已经注册好了,并且申请了属于自己的一个应用。    然而重点其实是这个:    我们的目的是拿到这个...
  • 云豹直播是一家提供直播系统开发的团队,现在已经有稳定的直播程序源码,也...座机:0538-8270220说明:任何行业领域都可以注册账号付费开启直播平台页面:首页 发起直播 直播列表 用户中心 功能注册登陆网站首页&...
  • TSINGSEE青犀视频研发的部分视频平台已经支持了语音喊话对讲的功能,在室内的安防视频监控中,语音对讲的实用性不可小觑,因此我们在使用EasyCVR视频监控系统上云平台集成海康EHome协议时,也实现了语音对讲功能。...
  • 云服务器就方便很多,只用在云平台厂商注册账号、实名认证(个人账号实名认证分分钟搞定)之后,选配、付款后几分钟,云服务器即可使用;前期可以根据需求来选购配置,什么1核2G、2核4G可以随意选择,不用一次性投入...
  • 云服务器就方便很多,只用在云平台厂商注册账号、实名认证(个人账号实名认证分分钟搞定)之后,选配、付款后几分钟,云服务器即可使用;前期可以根据需求来选购配置,什么1核2G、2核4G可以随意选择,不用一次性投入...
  • 一、自动发现 1、创建自动发现 2、创建发现动作 虽然我们创建了自动发现,但是并没有添加到主机监控中去。我们需要通过配置动作,将其添加到主机监控中去。 这样就完成了添加。...由于我是云服务...
  • 新浪云平台部署Java代码

    千次阅读 2014-03-20 23:47:41
    新浪云服务平台提供了web服务的开发、运行平台,可以使用该平台部署自己的web应用或者服务器。 新浪云平台网址:http://sae.sina.com.cn/ 1、首先注册账号登录管理界面(使用微博账号可直接登录),注册账号就会赠送...
  • 现在云计算越来越火,各大互联网公司都开始推出了云服务平台,阿里的阿里云,微软的Windows Azure , 腾讯的腾讯云平台,如果细算起来还真不少,IBM 这家百年老店也不甘示弱,也搞起了云服务,看来是想在云计算上分...
  • 新浪开发者平台(Sina App Engine)初探

    万次阅读 2012-06-18 09:22:28
    不知几时新浪推出了它的云服务平台Sina App Engine,现在还在内测阶段,需要邀请码才能注册,已经发过两次邀请码,不过都错过了,费劲申请了个邀请码,谈谈对SAE平台的感觉。 SAE是基于成熟的LAMP架构,采用PHP...
  • 飞速空号筛选平台是一个多功能一站式的网页版平台,帐号密码由客户自主注册,客户可根据自身要求,自主提交,自主操作,无人工干预和审核的自助式网页版空号检测云服务平台,可检测移动、联通、电信等号码名录上的...
  • 然而,调研一番,少说得20000起步来配置,那不如使用现有的深度学习云服务平台好了。 1.featurize 调研下来,featurize是性价比比较友好的平台,2080ti是2元/时,权当是在网吧上网缴费了。 注册、登录、充值,可以...
  • 短信服务平台

    千次阅读 2015-05-06 19:31:36
    短信服务平台:...产品特点:商通云服务短信应用界面友好,注册便捷、单点登录,集成了通讯录、客户管理和邮件群发功能,具有配置短信,手机号码自动识别,短信发送结果透明,
  • Azure工业物联网平台使您可以在现场发现工业资产,并在云中自动注册以方便访问。 它利用托管的Azure PaaS服务。 在Azure PaaS服务之上,我们利用OPC UA作为数据模型,构建了必须一起使用的大量边缘和云微服务。 这也...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 173
精华内容 69
关键字:

云服务平台注册