綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 關於zxing讓application加入QRcode scanner

[複製連結] 查看: 2917|回覆: 2|好評: 0
跳轉到指定樓層
樓主
mechwarr | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-10-9 14:18

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
請問有人使用過zxing的library來替自己的apk增加scanner功能的經驗嗎??

小弟在此搜尋了可以掃QRcode的Source是這裡
而他現在主軸是zxing2.2版,但我找到的都是zxing2.1的教學較多。(因此選擇2.1的lib)
我主要是以這個為學習範例。

但在CaptureActivity這個project library我匯入之後一定有error,再將core.jar匯入library內就能消除這些error。

重點是!!

當我要匯出APK時,卻出現了"case expressions must be constant expressions" 這個error message,而我也找了方法在這裡,它解釋了要將swtich case改為else if。
但處理後還是一些奇怪的error message,我不曉得我哪裡有問題,請問各位大大給點意見,謝謝。
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
ploglin | 收聽TA | 只看該作者
發表於 2013-10-11 09:49
還是要把 error message 放上來,大家才知道你遇到了什麼樣的問題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| mechwarr | 收聽TA | 只看該作者
發表於 2013-10-16 00:39
本帖最後由 mechwarr 於 2013-10-16 15:51 編輯


謝謝你的回覆,我知道原因了。
在於我不曉得一個porject只能匯入一個jar。
因此我在lib的專案匯入core.jar,在test專案只能匯入android-integration-honeycomb.jar
然後再clear就可以匯出了!

但現在遭遇到一個問題,就是不知道該如何讓scan QRcode之後去開啟一個webview,目前會寫出一個指定URL的webview,但scan後卻會自動跳回main.xml頁面。(還在找尋答案中)


mainActivity.java
package com.example.playar_webview;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.widget.Button;


public class MainActivity extends Activity {
        private Button button,button1,button2;
        public void onCreate(Bundle savedInstanceState) {
                final Context context = this;
               
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                button = (Button) findViewById(R.id.buttonUrl);
                button1 = (Button) findViewById(R.id.buttonQRcode);
                button2 = (Button) findViewById(R.id.buttonOUT);
               
//-------------------------------------------------------------------------
                button.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View arg0) {
                    Intent intent = new Intent(context, WebViewActivity.class);
                    startActivity(intent);
                  }

                });
//-------------------------------------------------------------------------
                button1.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View arg0) {
                          //QRcode Scan
                          try {

                                  Intent intent = new Intent(
                                  "com.google.zxing.client.android.SCAN");
                                  intent.putExtra("SCAN_MODE", "QR_CODE_MODE,PRODUCT_MODE");
                                  startActivityForResult(intent, 0);

                                  } catch (Exception e) {
                                  // TODO Auto-generated catch block
                                  e.printStackTrace();
                                  Toast.makeText(getApplicationContext(), "ERROR:" + e, 1).show();

                                  }
                  }

                });
//-------------------------------------------------------------------------
                button2.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View arg0) {
                          //Quite the application
                          int pid = android.os.Process.myPid();
                          android.os.Process.killProcess(pid);  
                  }

                });
        }
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                final Context QR_URL = this;
                if (requestCode == 0) {
                if (resultCode == RESULT_OK) {
                String contents = intent.getStringExtra("SCAN_RESULT");
                //SCAN_RESULT是我網路上查詢大多數人取得zxing lib回傳的值
                //tvResult.setText(intent.getSt        ringExtra("SCAN_RESULT"));
                Intent intentQR = new Intent(QR_URL, QRViewActivity.class);
                Bundle bData = new Bundle();
        bData.putString("contents",contents);
                intentQR.putExtras(bData);
                startActivity(intentQR);
                //tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
                } else if (resultCode == RESULT_CANCELED) {
                //tvStatus.setText("Press a button to start a scan.");
                //tvResult.setText("Scan cancelled.");
                }
                }
                }
}

QRviewActivity.java

package com.example.playar_webview;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class QRViewActivity extends Activity{
       

        private WebView webView;
         
        @Override
        protected void onPause() {
                // TODO Auto-generated method stub
                super.onPause();
        }

        @Override
        protected void onRestart() {
                // TODO Auto-generated method stub
                super.onRestart();
        }

        @Override
        protected void onResume() {
                // TODO Auto-generated method stub
                super.onResume();
        }

        @Override
        protected void onStart() {
                // TODO Auto-generated method stub
                super.onStart();
        }

        @Override
        protected void onStop() {
                // TODO Auto-generated method stub
                super.onStop();
        }

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.webview);
                Bundle bData = this.getIntent().getExtras();
                String num1 = bData.getString( "contents" );
                webView = (WebView) findViewById(R.id.webview2);
                webView.getSettings().setJavaScriptEnabled(true);
                webView.getSettings().setDomStorageEnabled(true);
                webView.getSettings().setDatabaseEnabled(true);
                webView.loadUrl(num1);
        }
}
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則