android扫码登录

         在家里没事干,想到网站扫码登录原理,做了一下,由于需要服务器端支持,所以顺便学了一下PHP怎么做接口。

         先说下服务器端,我使用了wampserver搭建了一个本地服务器环境。使用的是mysql数据库

        我已经建了一个数据库qrlogin,表名loginrecord


表结构如下:


首先做了一个类来连接数据库

这是index.php的代码,其中包括了轮询数据库


	
		QRLogin
		
	

	
		
		
		
	
	


  算了php的代码不说了下面来研究下原理,android客户端首先获取扫码权限,进行扫码,二维码为随机生成,然后我们在android引入框架zxing用于解析二维码的内容,然后将内容发给服务器,服务器收到后修改数据库,一旦数据库改变,就跳转到welcome.php界面。

下面是mainactivity类。注意WEB_URL要写自己服务器的地址。

package com.example.qrlogin;

import com.zxing.activity.CaptureActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener{
    private Button btn_Scan;
    private  EditText edt_username;
    public static final String WEB_URL = "http://192.168.0.102/";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ViewFind();
	}
	private void ViewFind() {
       btn_Scan = (Button)findViewById(R.id.btn_scan);	
       edt_username = (EditText)findViewById(R.id.username);
       btn_Scan.setOnClickListener(this);
	}
   @Override
public void onClick(View v) {
	   //扫码操作
	  Intent intent =new Intent(this,CaptureActivity.class);
	  startActivityForResult(intent, 0);
}
       @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    	if(resultCode==Activity.RESULT_OK){
    		String randnumber = data.getExtras().getString("result");
    		String username = edt_username.getText().toString();
    		String url = WEB_URL+"saveUserName.php?randnumber="+randnumber+"&username="+username; 
    		Log.e(url, "url"+url);
    		HttpUtils.login(url);
    	}
    }
}

HttpUtils封装了一个get方法,用于请求服务器。不再贴代码了。

地址点击打开链接

你可能感兴趣的:(项目)