您当前的位置:首页 > 安卓知识 

Android手机令牌教程_关于Android编程

时间:2023-10-05 06:30 阅读数:49人阅读
Written In The Font         花了一个天一夜,搞了这个小东西-安卓手机令牌.其实,我这边分享,看网上东西也没多少.这就分享了.因为这个会给公司用.有些东西就不方便透露了.希望大家体谅.还有如果需要找我沟通,加群吧!在页面中会有三处出现.   Android手机令牌    界面  java 与  C#服务端交互 倒计时和顺计时技术 口令生成 Content   android 也不难学,承认花了时间1/2 花在界面上.界面需要经验的积累.和大哥有说有笑搞着界面,我们浩二有木有.要吐槽的可以吐槽,要啥的说啥.     復制代码 <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"     android:background="@drawable/my_bg"     android:gravity="center_horizontal"     android:paddingBottom="@dimen/activity_vertical_margin"     android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     tools:context=".MainActivity" >       <LinearLayout         android:id="@+id/activity_contact_li_title"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:focusable="true"          android:layout_marginTop="10dp"         android:gravity="center">           <ImageView             android:id="@+id/imageView1"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:src="@drawable/ic_launcher" />           <TextView             android:id="@+id/textView3"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="***"             android:textAppearance="?android:attr/textAppearanceMedium"             android:textSize="40sp" />     </LinearLayout>       <TextView         android:id="@+id/textView5"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:layout_marginBottom="14dp"         android:text="联系电话:" />       <TextView         android:id="@+id/textView1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_above="@+id/textView5"         android:layout_alignLeft="@+id/textView5"         android:text="***有限公司 " />       <RelativeLayout         android:id="@+id/activity_contact_li_editphone"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_above="@+id/btnOperatorRemark"         android:layout_alignLeft="@+id/btnTime"         android:layout_marginBottom="19dp"         android:background="@drawable/table_below_bg"         android:focusable="true"         android:gravity="center_vertical" >           <LinearLayout             android:id="@+id/LinearLayout01"             android:layout_width="fill_parent"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_alignParentTop="true"             android:background="@drawable/table_below_bg"             android:focusable="true"             android:gravity="center_vertical" >               <TextView                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:layout_centerVertical="true"                 android:layout_marginLeft="10.0dip"                 android:duplicateParentState="true"                 android:text="  序列号:"                 android:textColor="@color/listitem_gray"                 android:textSize="15sp"                 android:textStyle="bold" />               <TextView                 android:id="@+id/textView4"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:layout_marginLeft="14dip"                 android:layout_marginRight="10.0dip"                 android:layout_weight="1"                 android:duplicateParentState="true"                 android:textColor="@color/author_text"                 android:textSize="14sp" />         </LinearLayout>     </RelativeLayout>       <LinearLayout         android:id="@+id/activity_contact_li_mobilephone"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_above="@+id/activity_contact_li_editphone"         android:layout_alignLeft="@+id/activity_contact_li_editphone"         android:background="@drawable/table_above_bg"         android:focusable="true"         android:gravity="center_vertical" >           <TextView             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_centerVertical="true"             android:layout_marginLeft="10.0dip"             android:duplicateParentState="true"             android:text="服务器时间:"             android:textColor="@color/listitem_gray"             android:textSize="15sp"             android:textStyle="bold" />           <TextView             android:id="@+id/textView2"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginLeft="14dip"             android:layout_marginRight="10.0dip"             android:layout_weight="1"             android:duplicateParentState="true"             android:text=""             android:textColor="@color/author_text"             android:textSize="14sp" />     </LinearLayout>       <Button         android:id="@+id/btnOperatorRemark"         android:layout_width="100dp"         android:layout_height="40dp"         android:layout_alignRight="@+id/activity_contact_li_editphone"         android:layout_alignTop="@+id/btnTime"         android:background="@drawable/login_btn_selector"         android:text="操作说明" />       <Button         android:id="@+id/btnTime"         android:layout_width="100dp"         android:layout_height="40dp"         android:layout_above="@+id/textView1"         android:layout_alignLeft="@+id/textView1"         android:layout_marginBottom="24dp"         android:background="@drawable/login_btn_selector"         android:text="时间校准"         android:textSize="18sp" />       <LinearLayout         android:id="@+id/activity_contact_li_mobilephone"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_marginTop="30dp"         android:layout_below="@+id/activity_contact_li_title"         android:background="@drawable/table_mid_bg"         android:focusable="true"         android:gravity="center_vertical" >         <TextView             android:id="@+id/number"             android:layout_width="match_parent"             android:layout_height="60dp"             android:duplicateParentState="true"             android:gravity="center"             android:text="123456"             android:textColor="@color/author_text"             android:textScaleX="1.2"             android:textSize="40sp" />     </LinearLayout>       <LinearLayout         android:id="@+id/activity_contact_li_times"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_alignLeft="@+id/activity_contact_li_mobilephone"         android:layout_below="@+id/activity_contact_li_mobilephone"         android:layout_marginTop="17dp"         android:focusable="true"         android:gravity="center" >           <TextView             android:id="@+id/textView6"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginRight="5dp"             android:text=">> 口令 "             android:textColor="@color/listitem_blue" />           <TextView             android:id="@+id/textView7"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_toLeftOf="@+id/textView8"             android:text="22"             android:textColor="@color/red" />           <TextView             android:id="@+id/textView8"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_marginLeft="5dp"             android:text=" 秒后更新"             android:textColor="@color/listitem_blue" />     </LinearLayout>   </RelativeLayout> 復制代码          java 与  C#服务端交互     这种东西 一抓一大把,我这边简单就用了下ksoap2-android-assembly-2.4-jar-with-dependencies.jar,发现交互很简单,url call下然后 调用方法返回值.所以这边代码:   復制代码     private String getDateTime() throws Exception {         // UIHelper.ToastMessage(MainActivity.this, "进去");           SoapObject rpc = new SoapObject(NAMESPACE, GET_TIME_METHOD_NAME);           AndroidHttpTransport ht = new AndroidHttpTransport(URL);         ht.debug = true;           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(                 SoapEnvelope.VER11);         envelope.bodyOut = rpc;         envelope.dotNet = true;         envelope.setOutputSoapObject(rpc);           try {             ht.call(GET_TIME_SOAP_ACTION, envelope);         } catch (Exception e) {             // 校准时间网络错误             UIHelper.ToastMessage(MainActivity.this, "未连接网络或网络异常");         }           SoapObject result = (SoapObject) envelope.bodyIn;         SoapPrimitive detail = (SoapPrimitive) result                 .getProperty("GetDateTimeResult");           System.out.println("result" + result);         System.out.println("detail" + detail);           // UIHelper.ToastMessage(MainActivity.this, detail.toString());           return detail.toString();     } 復制代码         倒计时和顺计时技术   android端倒计时:   復制代码 // 倒计时     Handler handler = new Handler() {           public void handleMessage(Message msg) { // handle message             switch (msg.what) {             case 1:                 recLen--;                                  if (recLen < 10) {                     txtTextTimeBack.setText("0" + recLen);                                      }else{                     txtTextTimeBack.setText("" + recLen);                                      }if (recLen > 0) {                     Message message = handler.obtainMessage(1);                     handler.sendMessageDelayed(message, 1000); // send message                 } else {                     // 重新获取序列号                     Message message = handler.obtainMessage(1);                     handler.sendMessageDelayed(message, 1000); // send message                     String dateTime;                       try {                         dateTime = DateFormate.getDateTime();                         txtDateTime.setText(dateTime);                     } catch (Exception e) {                         UIHelper.ToastMessage(MainActivity.this, "未知错误");                         e.printStackTrace();                     }                       turnTimeBack();                       try {                         showTheNumber();                     } catch (Exception e) {                         // TODO Auto-generated catch block                         e.printStackTrace();                     }                 }             }               super.handleMessage(msg);         }     }; 復制代码     顺时采用上面倒计时的方法里面,加起来合为60   復制代码 String ss = DateFormate.getStringFromDate(DateFormate.getDateFormString(txtDateTime.getText().toString()));                                  if (recLen > 50)                 {                     ss += "0" + (60-recLen);                 }                 else {                     ss += "" + (60-recLen);                 }                                  txtDateTime.setText(ss); 復制代码             口令生成   这是核心关键.所以我这边生成的算法就不方便透露了.像沟通的话,加我的群讨论.口令可以根据 序列号 时间 特定字符串生成.这边我提供下 有关算法,像MD5...等都是常用的   復制代码 String key = String.valueOf((dateTimeLong ^ serialNumberLong));                  String result = null;                  MessageDigest mad5 =null;         try         {             mad5 = MessageDigest.getInstance("MD5");         }         catch (Exception e)         {             e.printStackTrace();         } 

上一篇:android横竖屏切换时Activity的生命周期_关于Android编程

下一篇: Android中将xml布局文件转换为View树的过程分析(上)_关于Android编程