乐动力 步数上传 核心分析

package com.xdd.tenp;

import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.xdd.tenp.enity.EBSaveData;
import com.xdd.tenp.enity.Md5;

public class MainActivity extends ActionBarActivity {
    private ProgressDialog pd; 
    private TextView t_pc;
    private EditText e_steps;
    private EditText e_uid;
    private Button bt_ok;
    private Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        e_steps = (EditText)findViewById(R.id.editText1);
        t_pc  = (TextView)findViewById(R.id.textView1);
        bt_ok = (Button)findViewById(R.id.button1);
        e_uid = (EditText)findViewById(R.id.editText2);

        t_pc.setText(getPCData(this));

        for(int i=0;i<10;i++){
            Log.e("i", i+"");
        }

        bt_ok.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                onSetPost();
            }
        });

        e_steps.setText(EBSaveData.getString(context, "steps"));
        e_uid.setText(EBSaveData.getString(context, "uid"));

    }

    public void onSetPost() {
        String uid;
        String steps;

        try {
            steps = e_steps.getText().toString(); // 80000
            uid = e_uid.getText().toString(); // 381****
        } catch (Exception e) {
            Toast.makeText(this, "请输入id 或 加速步数", Toast.LENGTH_LONG).show();
            return;
        }
        EBSaveData.putString(context, "uid", uid);
        EBSaveData.putString(context, "steps", steps);

        pdshow();

        // 关注二维码
        // core.api.ledongli.cn:8090/han.api?action=getweixinparam&pc=an1c07ad32cad4383456507b94632acd92&uid=38126066
        String url ="http://pl.api.ledongli.cn/xq/io.ashx";
        AsyncHttpClient client = new AsyncHttpClient(); // 创建异步请求的客户端对象
        RequestParams params = new RequestParams();     // 创建请求参数的封装的对象 
        long date = System.currentTimeMillis()/1000;
        params.put("uid", uid ); // 设置请求的参数名和参
        params.put("pc", getPCData(this));
        params.put("action", "profile");
        params.put("cmd", "updatedaily" );
        params.put("list", "[{\"distance\":0,\"duration\":0,\"report\":\"[]\",\"calories\":0,\"steps\":"+steps+",\"pm2d5\":0,\"date\":"+date+",\"activeValue\":305}]");
        client.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        client.addHeader("Content-Type", "application/x-www-form-urlencoded");
        client.post(url, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                try {
                    String GetData = null;
                    GetData = new String(arg2);
                    Log.e("ok_GetData", GetData);
                    String api_result_msg = new JSONObject(GetData).getString("status").toString();
                    // 10-30 17:38:51.560: E/ok_GetData(4811): {"status": "OK", "uid": null, "ret": null, "errorCode": 0, "error": null, "path": null}
                    if(api_result_msg.equals("OK")){
                        Toast.makeText(MainActivity.this, "加速成功,请前往“微信运动” 刷新排行榜", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, "错误!请检查乐动力是否可以正常提交信息,如果不行,请重新登录乐动力并提交成绩", Toast.LENGTH_SHORT).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, "请重新登录乐动力并“提交成绩”,待乐动力正常以后。再来尝试", Toast.LENGTH_SHORT).show();
                }
                pdmiss();
            }
            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                String GetData = null;
                GetData = new String(arg2);
                Log.e("on_GetData", GetData);
                pdmiss();
                Toast.makeText(MainActivity.this, "连接网络错误", Toast.LENGTH_SHORT).show();
            }
        });
    }

    public static String getPCData(Context paramContext)
    {
        String str =   ((TelephonyManager)paramContext.getSystemService("phone")).getDeviceId();
        Log.e("str", str+"");
        // 10-30 14:51:09.752: E/str(1087): 866980025257219
        return "an"+ Md5.MD5(str);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }



    // 定义一个long型变量,用于判断两次点击的间隔
    private long exitTime;
    // 实现返回键的点击事件
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exit(); // 在这里进行点击判断
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }

    public void exit() {
        if ((System.currentTimeMillis() - exitTime) > 2000) {
            // 点击间隔大于两秒,做出提示
            Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            // 连续点击量两次,进行应用退出的处理
            System.exit(0);
        }
    }

    public void pdmiss(){
        if(pd != null){
            pd.dismiss();
            pd = null;
        }
    }

    public void pdshow(){
        pd = ProgressDialog.show(this, "微动力加速器", "正在处理中,请稍后...");
    }
}
package com.xdd.tenp.enity;

import java.security.MessageDigest;

public class Md5 {

    /**
     * MD5加码。32位
     * @param inStr
     * @return
     */
    public static String MD5(String inStr) {
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];

        byte[] md5Bytes = md5.digest(byteArray);

        StringBuffer hexValue = new StringBuffer();

        for (int i = 0; i < md5Bytes.length; i++) {
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }

        return hexValue.toString();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ios and Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值