Android 台灣中文網

標題: 小弟要研究產生QR code 的方法 [打印本頁]

作者: u2460001    時間: 2012-8-21 17:51
標題: 小弟要研究產生QR code 的方法
package android.demo.com;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class List extends Activity
{
  Bundle bundle;
  Intent intent;
  private Button Button1;
  private Button draw;
  private TextView SHOW;
  private SurfaceView mSurfaceView01;
  private SurfaceHolder mSurfaceHolder01;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
   
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.list);
   
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
   
    mSurfaceView01 = (SurfaceView) findViewById(R.id.mSurfaceView1);
   
    mSurfaceHolder01 = mSurfaceView01.getHolder();
   
   
    Button1 = (Button) findViewById(R.id.button1);
    Button1.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View a) {
                        // TODO Auto-generated method stub
                        ToNextActivity();
                        }
        });
   
    draw = (Button)findViewById(R.id.draw);
    draw.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View arg0)
      {
              AndroidQREncode(SHOW.getText().toString(),100);
      }
    });
   
    SHOW = (TextView)findViewById(R.id.show);
    SharedPreferences temp_data = getSharedPreferences("list" ,0);
      String second21a = temp_data.getString("second211", "");
          String second21b = temp_data.getString("second212", "");
          String second21c = temp_data.getString("second213", "");
          String second21d = temp_data.getString("second214", "");
          String second21e = temp_data.getString("second215", "");
          String second21f = temp_data.getString("second216", "");
          String second21g = temp_data.getString("second217", "");
          String second21h = temp_data.getString("second218", "");
          
      String second22a = temp_data.getString("second221", "");
          String second22b = temp_data.getString("second222", "");
          String second22c = temp_data.getString("second223", "");
          String second22d = temp_data.getString("second224", "");
          
          String fourtha = temp_data.getString("fourth1", "");
          String fourthb = temp_data.getString("fourth2", "");
          String fourthc = temp_data.getString("fourth3", "");
          String fourthd = temp_data.getString("fourth4", "");
          String fourthe = temp_data.getString("fourth5", "");
          
          String thirda = temp_data.getString("third1", "");
          String thirdb = temp_data.getString("third2", "");
          String thirdc = temp_data.getString("third3", "");
          
          SHOW.setText(second21a + second21b + second21c + second21d + second21e + second21f +second21g + second21h + second22a + second22b + second22c + second22d + fourtha + fourthb + fourthc + fourthd + fourthe + thirda + thirdb + thirdc);
  }
  
  public void ToNextActivity(){
          Intent intent = new Intent();
          intent.setClass(this,MainActivity.class);
          startActivity(intent);
  }
  public void AndroidQREncode(String strEncoding, int qrcodeVersion)
  {
    try
    {
      com.swetake.util.Qrcode testQrcode = new com.swetake.util.Qrcode();
      testQrcode.setQrcodeErrorCorrect('M');
      testQrcode.setQrcodeEncodeMode('B');
      testQrcode.setQrcodeVersion(qrcodeVersion);
      byte[] bytesEncoding = strEncoding.getBytes("utf-8");
      
      if (bytesEncoding.length>0)
      {
        boolean[][] bEncoding = testQrcode.calQrcode(bytesEncoding);
        drawQRCode(bEncoding, getResources().getColor(R.drawable.black));
      }
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  private void drawQRCode(boolean[][] bRect, int colorFill)
  {
    int intPadding = 20;
    Canvas mCanvas01 = mSurfaceHolder01.lockCanvas();
    mCanvas01.drawColor(getResources().getColor(R.drawable.white));
    Paint mPaint01 = new Paint();
    mPaint01.setStyle(Paint.Style.FILL);
    mPaint01.setColor(colorFill);
    mPaint01.setStrokeWidth(1.0F);
    for (int i=0;i<bRect.length;i++)
    {
      for (int j=0;j<bRect.length;j++)
      {
        if (bRect[j])
        {
          mCanvas01.drawRect
          (
            new Rect
            (
              intPadding+j*3+2,
              intPadding+i*3+2,
              intPadding+j*3+2+3,
              intPadding+i*3+2+3
             ), mPaint01
          );
        }
      }
    }
    mSurfaceHolder01.unlockCanvasAndPost(mCanvas01);
  }
}

小第debug之後 顯示那一行有問題 卻不知道應該怎麼改 有大大可以幫忙嗎
作者: hwj_c    時間: 2012-9-18 17:37
前輩您好厲害...

我只會用google chart API來產生QRCODE

作者: 不知火羽    時間: 2012-9-24 19:29
如果只是那行錯掉 有一可能是找不到該物件
看你是否有把QRcode.jar匯進lib裡面
我也沒看到什麼大問題
作者: u2460001    時間: 2012-9-24 20:20
不知火羽 發表於 2012-9-24 19:29
如果只是那行錯掉 有一可能是找不到該物件
看你是否有把QRcode.jar匯進lib裡面
我也沒看到什麼大問題 ...

這個小弟 我解決了
確實就是少了那個jar包
作者: a2261a22    時間: 2012-11-26 22:20
不知道大大 ~ 可不可以借我完整的程式參考??
最近正也在研究這方面的問題~~

作者: u2460001    時間: 2012-11-27 00:48
u2460001 發表於 2012-9-24 20:20
這個小弟 我解決了
確實就是少了那個jar包

沒錯 小弟我已經可以弄了

作者: beckham0717tw    時間: 2012-12-3 09:07
近正也在研究這方面的問題




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1